我在我的计算机上运行 docker 容器,将所有内容都放在 /var/ 中。DF 显示 /var/ 为 6.9G,没有可用空间。Linux 系统在 VMWare 下运行,我在 VMWare 控制台中为服务器提供了额外的 100 GB。如何在不重新启动服务器的情况下增加 Linux VM 中的“/var”?
root@TB-IOT02:/var# df -a | grep sda
/dev/sda1 19276020 4530700 13743080 25% /
/dev/sda5 6722700 6706316 0 100% /var
/dev/sda7 1182728 3748 1100852 1% /tmp
/dev/sda8 74238884 65640 70359052 1% /home
root@TB-IOT02:~# fdisk --list
Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0b21c5c6
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 39436287 39434240 18.8G 83 Linux
/dev/sda2 39438334 209713151 170274818 81.2G 5 Extended
/dev/sda5 39438336 53231615 13793280 6.6G 83 Linux
/dev/sda6 53233664 55326719 2093056 1022M 82 Linux swap / Solaris
/dev/sda7 55328768 57798655 2469888 1.2G 83 Linux
/dev/sda8 57800704 209713151 151912448 72.4G 83 Linux
谢谢
答案1
/var
由于服务器使用传统的分区方案,因此如果不重新启动服务器则无法扩展分区。
如果我是你,我会创建一个新的文件系统,并将其挂载到 Docker 包含其文件的目录中。
根据您添加空间的方式,有两个选项:
如果你增加了现有虚拟磁盘 1.1 的大小。用于
fdisk
创建/dev/sda9
分区 1.2。用于mke2fs /dev/sda9
创建文件系统如果您向虚拟机添加了新的虚拟磁盘 2.1. 用于
fdisk
在新设备上创建分区 2.2. 用于mke2fs
创建文件系统
然后,执行以下步骤:
运行
mount /dev/sda9 /mnt
挂载新的文件系统停止 Docker
跑步
mv /var/lib/docker/* /mnt
跑步
umount /mnt
将以下行添加到
/etc/fstab
/dev/sda9 /var/lib/docker ext4 relatime 0 1
通过执行挂载新文件系统
mount /var/lib/docker
启动 Docker
替换/dev/sda9
为上述说明中添加的虚拟磁盘的分区名称。
此后,Docker 文件将位于添加的空间上的新文件系统中。
答案2
Tero 的回答是正确的。但是,如果您要关闭虚拟机,则可以添加实时可扩展磁盘,这样以后就无需因同样的原因再次关闭它。
您可以实时扩展 ESXi(或其他虚拟机管理程序)上的 Linux VM 磁盘。但前提是:
- 使用 LVM(逻辑卷管理器)。
或者(更奇特,但最终更简单,而且有效)
- 没有分区,也就是没有
fdisk
,直接格式化磁盘。例如mkfs.ext4 /dev/sdb
,不是mkfs.ext4 /dev/sdb1
通常的做法。这是完全可能的。
因此,使用上述任一方法添加新磁盘,将其分配给类似 的磁盘/vartemp
,将所有文件从/var
复制到/vartemp
,然后删除对 的/var
更改,然后就可以了。现在可以实时扩展磁盘。/vartemp
/var
/var