自动摘要
正在生成中……
以前用virtual box 安装 Ubuntu ,只给了10G,采用默认的分区方案,完成后用lsblk
查看磁盘空间分配。根分区只有区区9G,一下就捉襟见肘,现在需要更多的空间,试了用 VboxManage 来调整,在格式化未分配的空间时会报错,直接停机,原因不明,估计跟vbox有关系,好在 Ubuntu 22.04 采用了LVM 分区,这玩意主打一个灵活。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 63.9M 1 loop /snap/core20/2264
loop1 7:1 0 63.9M 1 loop /snap/core20/2182
loop2 7:2 0 74.2M 1 loop /snap/core22/1122
loop3 7:3 0 74.2M 1 loop /snap/core22/1380
loop4 7:4 0 91.8M 1 loop /snap/lxd/24061
loop5 7:5 0 39.1M 1 loop /snap/snapd/21184
loop6 7:6 0 38.7M 1 loop /snap/snapd/21465
loop7 7:7 0 14.1M 1 loop /snap/tcping/4
sda 8:0 0 10G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 9G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 9G 0 lvm /
sdb 8:16 0 15G 0 disk
└─sdb1 8:17 0 15G 0 part /mnt/docker
sdc 8:32 0 30G 0 disk
sr0 11:0 1 73.6M 0 rom
可以看到我给虚拟机分配的10G硬盘空间 /boot 用了1G,剩下9G的划到 lvm 分区给根目录,我加了一块30G的虚拟磁盘,也就是上面的 /dev/sdc 设备,准备将这30G扩展到根分区。是的,因为lvm是逻辑分区,可以跨不同设备,所以可以将多个设备的空间分给同一个文件系统或路径。在我这里是 "/" 。
什么是LVM?
以下来自维基百科的解释:
In Linux, Logical Volume Manager (LVM) is a device mapper framework that provides logical volume management for the Linux kernel. Most modern Linux distributions are LVM-aware to the point of being able to have their root file systems on a logical volume
它是一个Linux上的设备映射框架,为Linux内核提供逻辑卷管理。大部分现代Linux发行版都采用了LVM这套东西,如此一来可以让它们的根文件系统位在一个逻辑卷上。字面意思大抵如此,我觉得只要知道两点:
一、它是逻辑意义上的分区而不是物理上的,它提供了一个抽象层使用分区管理更灵活,可能这就是它要解决的痛点,没有什么计算机问题是不能靠多加一层来解决的,如果有,那再加一层(层层加码警告😂);
二、这是一套可以管理分区的工具,可以新增或删除分区、调整分区大小等等。
操作步骤
创建主分区:
fdisk /dev/sdc #进入分区界面
输入n #新建一个分区
输入P #创建一个主分区
回车默认 #分区号
回车默认 #设置起始分区地址
回车默认 #设置大小
输入W #保存
刷新分区:
pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created.
查看卷组
--- 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 <9.00 GiB
PE Size 4.00 MiB
Total PE 2303
Alloc PE / Size 2303 / <9.00 GiB
Free PE / Size 0 / 0
VG UUID T7I9rn-Wtgs-ne0K-TDE3-PcjA-mwxm-VzQ2gj
这里是 VG Name : ubuntu-vb
将物理卷加入 卷组
vgextend ubuntu-vg /dev/sdc1
Volume group "ubuntu-vg" successfully extended
查看要扩容的文件系统,即根分区所在的文件系统 /dev/mapper/ubuntu--vg-ubuntu--lv
df -Th
Filesystem Type Size Used Avail Use% Mounted on
tmpfs tmpfs 197M 2.3M 195M 2% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4 8.8G 7.6G 743M 92% /
tmpfs tmpfs 982M 0 982M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 ext4 974M 251M 656M 28% /boot
...
把卷组剩余内存容量加到扩容的文件系统上
lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
Size of logical volume ubuntu-vg/ubuntu-lv changed from <9.00 GiB (2303 extents) to 38.99 GiB (9982 extents).
Logical volume ubuntu-vg/ubuntu-lv successfully resized.
这样并未生效,逻辑卷扩展后,你需要调整文件系统的大小。如果使用的是ext4文件系统,还需要执行:resize2fs
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 5
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 10221568 (4k) blocks long.
再查看已经成功扩容:
df -Th
Filesystem Type Size Used Avail Use% Mounted on
tmpfs tmpfs 197M 2.3M 195M 2% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4 39G 7.6G 30G 21% /
tmpfs tmpfs 982M 0 982M 0% /dev/shm