我在一台小主机上装了ubuntu20.04 server,这台主机的硬盘是128g,但是使用df -h 查看磁盘占用发现磁盘竟然只有分到58g,如下:
Filesystem Size Used Avail Use% Mounted on
udev 1.6G 0 1.6G 0% /dev
tmpfs 336M 1.7M 335M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 58G 8.9G 46G 17% /
tmpfs 1.7G 0 1.7G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 1.7G 0 1.7G 0% /sys/fs/cgroup
/dev/loop1 62M 62M 0 100% /snap/core20/1270
/dev/sda2 976M 115M 795M 13% /boot
/dev/loop0 56M 56M 0 100% /snap/core18/2128
/dev/loop2 71M 71M 0 100% /snap/lxd/21029
/dev/sda1 511M 5.3M 506M 2% /boot/efi
/dev/loop4 3.7M 3.7M 0 100% /snap/stress-ng/6356
/dev/loop3 33M 33M 0 100% /snap/snapd/12704
/dev/loop5 117M 117M 0 100% /snap/docker/1125
tmpfs 336M 8.0K 336M 1% /run/user/115
/dev/loop6 44M 44M 0 100% /snap/snapd/14295
/dev/loop7 56M 56M 0 100% /snap/core18/2253
/dev/loop8 68M 68M 0 100% /snap/lxd/21835
tmpfs 336M 12K 336M 1% /run/user/1000
tmpfs 336M 0 336M 0% /run/user/0
后来才知道ubuntu server默认采用了lvm磁盘模式,在这种模式下的物理磁盘上层被引入了逻辑磁盘的概念,ubuntu预留了一半空间未分配到逻辑卷组当中,可以通过一些命令来对逻辑卷扩容。
执行lsblk可以列出块设备,包含了硬盘和硬盘的所有分区以及逻辑分区:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 55.4M 1 loop /snap/core18/2128
loop1 7:1 0 61.9M 1 loop /snap/core20/1270
loop2 7:2 0 70.3M 1 loop /snap/lxd/21029
loop3 7:3 0 32.3M 1 loop /snap/snapd/12704
loop4 7:4 0 3.6M 1 loop /snap/stress-ng/6356
loop5 7:5 0 116.6M 1 loop /snap/docker/1125
loop6 7:6 0 43.3M 1 loop /snap/snapd/14295
loop7 7:7 0 55.5M 1 loop /snap/core18/2253
loop8 7:8 0 67.2M 1 loop /snap/lxd/21835
sda 8:0 0 119.2G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 117.8G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 58.9G 0 lvm /
执行vgdisplay,显示逻辑卷组分配情况,有一半空间没有分配。
--- Volume group ---
VG Name ubuntu-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <117.74 GiB
PE Size 4.00 MiB
Total PE 30141
Alloc PE / Size 15071 / 58.87 GiB
Free PE / Size 15070 / <58.87 GiB
VG UUID prbHqx-ySU0-4XLL-pest-xH4t-W1Uk-kjIH9d
通过以下命令榨干剩余磁盘空间
sudo lvresize -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv (扩容至百分之百)
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv 执行重新计算
补充:
lvextend -L 80G /dev/mapper/ubuntu--vg-ubuntu--lv //扩展到80G,如果原来大于80就减少,如果原来小于80就增大 lvextend -L +20G /dev/mapper/ubuntu--vg-ubuntu--lv //扩容20G lvreduce -L -20G /dev/mapper/ubuntu--vg-ubuntu--lv //减小20G