文章目录
- 前言
- 一、Centos7虚拟机硬盘扩容
- 1.1 具体步骤
- 二、修改Docker默认存储位置
- 2.1 挂载目录
- 2.2 修改路径
前言
Vmware 虚拟机开机时提示:虚拟机根目录系统内存不足,可能原因是 /var/lib/docker 目录占用的磁盘空间不够了。本文记录虚拟机磁盘扩容过程和修改 docker 默认的存储位置。
一、Centos7虚拟机硬盘扩容
1.1 具体步骤
- 打开虚拟机设置 ->点击硬盘 -> 添加 ->硬盘 -> 选择SCSI(推荐) -> 创建新虚拟磁盘(V)
输入最大磁盘大小 40G -> 点击下一步
默认指定磁盘文件后点击完成即可
重启虚拟机 -> 输入命令查看添加的磁盘信息,扩展完成
fdisk -l
二、修改Docker默认存储位置
2.1 挂载目录
2.1.1 接下来是给磁盘进行分区输入如下命令:
fdisk /dev/sdb
我们可以使用m:显示所有命令,或者p:显示分区情况。接着,依次输入,n,p,1和两个回车,最后w保存退出即可。其中各个参数的含义如下:
- n:设定一个新的分区
- e:就是(extend)扩展分区
- p:就是(primary)主要分区,我们这里选择P
- 1-4:是分区编号,1到4都可以
- w:保存
[root@localhost huang.bx]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x463180ea 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-83886079,默认为 2048): ##回车即可
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-83886079,默认为 83886079): ##回车即可
将使用默认值 83886079
分区 1 已设置为 Linux 类型,大小设为 40 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
2.1.2 完成后,再次使用 fdisk -l 查看是否分区成功
[root@localhost huang.bx]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2621440 inodes, 10485504 blocks
524275 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2157969408
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
2.1.3 完成后,将分区挂载到新创建的目录
mkdir -p /data/expand
mount /dev/sdb1 /data/expand
2.1.4 接下来使用命令,查看挂载的情况
[root@localhost data]# df -h | grep dev/sdb1
/dev/sdb1 40G 49M 38G 1% /data/expand
2.2.5 可以看到,该分区已经被挂载到了对应的目录。到目前为止,已经算是硬盘挂载完成,但是如果想要重启设备后挂载依旧生效,需要将挂载的信息写入文件 /etc/fstab 文件中。主要不要更改其他的内容。
2.2.6 reboot 重启虚拟机再次查看挂载情况,可以看到已经成功的永久挂载了
[root@localhost huang.bx]# df -h | grep dev/sdb1
/dev/sdb1 40G 49M 38G 1% /data/expand
2.2 修改路径
2.2.1 首先查看docker的存储的根路径
[root@localhost huang.bx]# docker info | grep "Docker Root Dir"
Docker Root Dir: /var/lib/docker
.2.2.2 可以看到目前Docker的路径为/var/lib/docker。接下来,需要将其更换到扩展了磁盘的/data/expand中。首先,关停docker。
systemctl stop docker
.2.2.3 接着移动docker的文件到新目录下:mv /var/lib/docker/ /data/expand/,这一步需要等待一定的时间。完成后修改docker配置文件,设置默认存储的目录。然后使用命令,vim /usr/lib/systemd/system/docker.service,在尾部增加如下命令。
--graph /data/expand/docker/
2.2.4 重启 docker 查看容器
[root@localhost overlay2]# systemctl start docker
[root@localhost overlay2]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3e97f4e59d4e nginx:1.10 "nginx -g 'daemon of…" 4 months ago Up 5 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp nginx
7d802c4f0eb0 kibana:7.4.2 "/usr/local/bin/dumb…" 9 months ago Up 5 minutes 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp kibana
21fddd211b43 elasticsearch:7.4.2 "/usr/local/bin/dock…" 9 months ago Up 5 minutes 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp elasticsearch
44edbbd9c776 redis "docker-entrypoint.s…" 18 months ago Up 5 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
d8b5351369dd mysql:5.7 "docker-entrypoint.s…" 18 months ago Up 5 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp
2.2.5 查看 docker 挂载
[root@localhost overlay2]# docker info | grep "Docker Root Dir"
Docker Root Dir: /data/expand/docker
[root@localhost overlay2]#