![Linux 客户机(在 VirtualBox 中)不会使用动态 VDI 磁盘的所有空间](https://linux22.com/image/1541658/Linux%20%E5%AE%A2%E6%88%B7%E6%9C%BA%EF%BC%88%E5%9C%A8%20VirtualBox%20%E4%B8%AD%EF%BC%89%E4%B8%8D%E4%BC%9A%E4%BD%BF%E7%94%A8%E5%8A%A8%E6%80%81%20VDI%20%E7%A3%81%E7%9B%98%E7%9A%84%E6%89%80%E6%9C%89%E7%A9%BA%E9%97%B4.png)
我在 Linux CentOS Guest 上的 VirtualBox 中的虚拟磁盘遇到了问题。我没有在其上使用快照。
它最初是一个 8GB 的磁盘,我使用VBoxManage modifyhd
主机内的命令将其扩展到 16GB。然后我使用GParted live
映像调整了客户机中的分区大小。磁盘和虚拟机更改了主机(但 VirtualBox 版本相同)。
现在我的磁盘已经满了,没有剩余空间了。
查看GParted
:/boot (/dev/sda1)
大小为 1GB,并且/ (/dev/sda2)
大小为 15GB:GParted 直播
但看看df
:
[ted@localhost ~]$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/cl-root xfs 6,0G 5,9G 106M 99% /
devtmpfs devtmpfs 986M 0 986M 0% /dev
tmpfs tmpfs 1001M 100K 1001M 1% /dev/shm
tmpfs tmpfs 1001M 8,8M 992M 1% /run
tmpfs tmpfs 1001M 0 1001M 0% /sys/fs/cgroup
tmpfs tmpfs 1001M 32K 1001M 1% /tmp
/dev/sda1 xfs 1014M 235M 780M 24% /boot
tmpfs tmpfs 201M 8,0K 201M 1% /run/user/1000
根目录的大小为 6GB,经 确认fdisk -l
。但磁盘大小确实是 16+GB:
[ted@localhost ~]$ sudo fdisk -l
Disk /dev/sda: 17.2 GB, 17179869184 bytes, 33554432 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000140ff
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 33554431 15727616 8e Linux LVM
Disk /dev/mapper/cl-root: 6442 MB, 6442450944 bytes, 12582912 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/cl-swap: 1069 MB, 1069547520 bytes, 2088960 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
澄清一下,tmpfs 分区安装在 RAM 中,对吗?这些文件不可能占用磁盘空间,对吗?
此外,我在主机磁盘上有足够的空间。
我看到了这篇文章让 Linux VirtualBox Guest 使用所有可用的虚拟磁盘(无快照)但我的情况似乎有点不同,因为我调整了分区大小,并且可以看到空间pvdisplay
:
[tnodet@localhost ~]$ sudo pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name cl
PV Size 15,00 GiB / not usable 2,00 MiB
Allocatable yes
PE Size 4,00 MiB
Total PE 3839
Free PE 2048
Allocated PE 1791
PV UUID rrG0JE-i1MB-IeA0-Ce5c-dpj7-Fwm2-RMjyYb
在 Windows 10 主机上:
D:\Profiles\ted\VirtualBox VMs\CentOS-CKAN>VBoxManage showhdinfo CentOS-CKAN.vdi
UUID: 76d3524e-803c-4d1e-816d-5bc705e26aac
Parent UUID: base
State: locked write
Type: writethrough
Location: d:\Profiles\ted\VirtualBox VMs\CentOS-CKAN\CentOS-CKAN.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 16384 MBytes
Size on disk: 6413 MBytes
Encryption: disabled
In use by VMs: CentOS-CKAN (UUID: 1e96120c-17a3-4892-8d98-dd88eed429db)
我现在很迷茫,很困惑,我甚至不知道问题是来自 Windows 主机/VirtualBox,还是来自 Linux 客户机……
有什么想法吗?提前致谢!
其他命令:
[ted@localhost ~]$ ll /dev/disk/by-id
total 0
lrwxrwxrwx. 1 root root 9 20 sept. 12:16 ata-VBOX_CD-ROM_VB2-01700376 -> ../../sr0
lrwxrwxrwx. 1 root root 9 20 sept. 12:16 ata-VBOX_HARDDISK_VB76d3524e-ac6ae205 -> ../../sda
lrwxrwxrwx. 1 root root 10 20 sept. 12:16 ata-VBOX_HARDDISK_VB76d3524e-ac6ae205-part1 -> ../../sda1
lrwxrwxrwx. 1 root root 10 20 sept. 12:16 ata-VBOX_HARDDISK_VB76d3524e-ac6ae205-part2 -> ../../sda2
lrwxrwxrwx. 1 root root 10 20 sept. 12:16 dm-name-cl-root -> ../../dm-0
lrwxrwxrwx. 1 root root 10 20 sept. 12:16 dm-name-cl-swap -> ../../dm-1
lrwxrwxrwx. 1 root root 10 20 sept. 12:16 dm-uuid-LVM-AFXgxjJZSLDRCWckAVMMKzthSc5hNl6cbrtdWs4fPXZIoe1O6Wy0qh2xoreIY8tw -> ../../dm-1
lrwxrwxrwx. 1 root root 10 20 sept. 12:16 dm-uuid-LVM-AFXgxjJZSLDRCWckAVMMKzthSc5hNl6cmYPaZX60S5aAvfejEltFs2vMPmIlRkuV -> ../../dm-0
lrwxrwxrwx. 1 root root 10 20 sept. 12:16 lvm-pv-uuid-rrG0JE-i1MB-IeA0-Ce5c-dpj7-Fwm2-RMjyYb -> ../../sda2
答案1
我明白了,这与逻辑卷,对此我感到不太安心。
正如你可以猜测的那样fdisk -l
,物理分区sda2
被分成两个逻辑卷,/dev/cl/root
并且/dev/cl/swap
,分组到一个卷组中cl
:
[root@localhost ted]# vgscan
Reading volume groups from cache.
Found volume group "cl" using metadata type lvm2
[root@localhost ted]# lvscan
ACTIVE '/dev/cl/root' [6,00 GiB] inherit
ACTIVE '/dev/cl/swap' [1020,00 MiB] inherit
所以我做的是首先删除交换逻辑卷(5.3.2. 删除 LVM2 逻辑卷用于交换)
[root@localhost ted]# swapoff -v /dev/cl/swap swapoff /dev/cl/swap [root@localhost ted]# lvremove /dev/cl/swap Do you really want to remove active logical volume cl/swap? [y/n]: y Logical volume "swap" successfully removed
注释行
/etc/fstab
:#/dev/cl/swap swap swap defaults 0 0
然后我不得不调整根逻辑卷的大小:
[root@localhost ted]# lvextend -L+8G /dev/cl/root
最后我不得不调整根文件系统的大小。我在尝试使用命令时遇到问题
resize2fs
(因为不支持 XFS,请参阅resize2fs:尝试打开时超级块中的魔法数字错误),但却xfs_growfs
达到了这样的效果:[root@localhost ted]# xfs_growfs /dev/cl/root meta-data=/dev/mapper/cl-root isize=512 agcount=4, agsize=393216 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=1572864, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 1572864 to 3670016
我现在在 /dev/mapper/cl-root 上有 14GB 的空间:)