Ubuntu系统是如何管理硬盘的?
一般硬盘操作有两种:
重要提醒:在进行分区/磁盘调整和扩展之前,请务必备份重要数据,以防出现意外情况。
当一个新安装的Ubuntu系统中,如果磁盘空间充足,一般会默认分配一部分硬盘空间给根目录 /
,但并不会将全部空间分配出来,此时如果想要将全部空间都分配出来,则需要进行分区扩展相关操作。一般分区扩展有三步:
这是一个磁盘维护常用操作,可以使用 df -h
命令查看当前硬盘分区及其占用情况:
bash# 执行 df -h 输出如下
Filesystem Size Used Avail Use% Mounted on
tmpfs 787M 2.5M 785M 1% /run
efivarfs 100K 94K 1.5K 99% /sys/firmware/efi/efivars
/dev/mapper/ubuntu--vg-ubuntu--lv 98G 13G 81G 14% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 2.0G 96M 1.7G 6% /boot
/dev/sda1 1.1G 6.2M 1.1G 1% /boot/efi
tmpfs 787M 12K 787M 1% /run/user/1000
其中 /dev/mapper/ubuntu--vg-ubuntu--lv
即为一个安装系统时自动分配的一个分区,挂载在根目录 /
。
但是我的硬盘空间时 500G
左右,此时应该如何扩充这个分区呢?
如我的 /dev/mapper/ubuntu--vg-ubuntu--lv
分区,这一般是使用的 LVM(逻辑卷管理器)管理的分区。LVM 提供了一种灵活的硬盘分区管理方式,可以轻松调整分区大小、添加新分区等。在这个例子中:
ubuntu--vg
是卷组(Volume Group)的名称。ubuntu--lv
是逻辑卷(Logical Volume)的名称。/dev/mapper/ubuntu--vg-ubuntu--lv
是逻辑卷的设备文件。一般Ubuntu管理磁盘使用的都是 LVM ,执行 sudo vgdisplay
即可查看逻辑卷分组情况:
bash# 运行 sudo 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 <444.08 GiB
PE Size 4.00 MiB
Total PE 113684
Alloc PE / Size 25600 / 100.00 GiB
Free PE / Size 88084 / <344.08 GiB
VG UUID vqm4ii-2T7p-OaZx-Soq3-nfjq-OW22-iE2u7r
可以看到我的硬盘还有 <344.08 GiB
的剩余空间,我想把全部剩余空间都给到 /dev/mapper/ubuntu--vg-buntu--lv
分区,应该如何操作?
根据上面的输出信息可知,我的逻辑卷组名是 ubuntu-vg
,则逻辑卷名是 ubuntu--lv
,则运行如下命令分配全部剩余空间给 /dev/mapper/ubuntu--vg-ubuntu--lv
设备对应的逻辑卷
bashsudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
命令解析:这个命令用于扩展 LVM(逻辑卷管理器)中的逻辑卷。
sudo
:以超级用户权限运行该命令。
lvextend
:这是一个 LVM 命令,用于扩展逻辑卷。
-l +100%FREE
:这是一个参数,指定将所有剩余的空闲空间分配给逻辑卷。
-l
表示扩展到指定的逻辑块数(extents),而不是直接指定大小。
+100%FREE
表示使用卷组(volume group)中所有可用的剩余空间,可以替换为确定的空间,如+100G
。
/dev/ubuntu-vg/ubuntu-lv
:这是要扩展的逻辑卷的路径。
ubuntu-vg
是卷组的名称。
ubuntu-lv
是逻辑卷的名称。
运行成功后输出:
Size of logical volume ubuntu-vg/ubuntu-lv changed from 100.00 GiB (25600 extents) to <444.08 GiB (113684 extents). Logical volume ubuntu-vg/ubuntu-lv successfully resized.
此时再次查磁盘容器卷情况,可以看到剩余空间归零了:
bash# 运行 sudo vgdisplay
--- Volume group ---
VG Name ubuntu-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
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 <444.08 GiB
PE Size 4.00 MiB
Total PE 113684
Alloc PE / Size 113684 / <444.08 GiB
Free PE / Size 0 / 0
VG UUID vqm4ii-2T7p-OaZx-Soq3-nfjq-OW22-iE2u7r
但此时并没有结束,如果此时使用 df -h
命令,你可以看到 /dev/mapper/ubuntu--vg-ubuntu--lv
空间并没有改变:
bash# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 787M 2.5M 785M 1% /run
efivarfs 100K 94K 1.5K 99% /sys/firmware/efi/efivars
/dev/mapper/ubuntu--vg-ubuntu--lv 98G 13G 81G 14% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 2.0G 96M 1.7G 6% /boot
/dev/sda1 1.1G 6.2M 1.1G 1% /boot/efi
tmpfs 787M 12K 787M 1% /run/user/1000
这是因为还没有将空间拓展到改逻辑卷
无论使用哪种方法调整分区大小,都需要扩展文件系统以使用新分配的空间。
使用下面的命令扩展文件系统:
bashsudo resize2fs /dev/ubuntu-vg/ubuntu-lv
命令解析:这个命令用于调整 ext4 文件系统的大小,以匹配逻辑卷的新大小。
sudo
:以超级用户权限运行该命令。
resize2fs
:这是一个命令,用于调整 ext2/ext3/ext4 文件系统的大小。
/dev/ubuntu-vg/ubuntu-lv
:这是要调整大小的文件系统所在的设备路径。
执行该命令后,如果执行成功,将会输出如下信息:
resize2fs 1.47.0 (5-Feb-2023) Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required old_desc_blocks = 13, new_desc_blocks = 56 The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 116412416 (4k) blocks long.
此时再查看 df -h
,可以发现空间已生效:
Filesystem Size Used Avail Use% Mounted on tmpfs 787M 2.5M 785M 1% /run efivarfs 100K 94K 1.5K 99% /sys/firmware/efi/efivars /dev/mapper/ubuntu--vg-ubuntu--lv 437G 13G 406G 3% / tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda2 2.0G 96M 1.7G 6% /boot /dev/sda1 1.1G 6.2M 1.1G 1% /boot/efi tmpfs 787M 12K 787M 1% /run/user/1000
至此,分区扩展完成。
待续……
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!