Linux逻辑卷扩容 CentOS7
安装lvm2工具
查看卷组 1 2 3 [root@localhost /] VG centos 1 2 0 wz--n- <19.00g 0
可以看到本说明中的卷组为centos
为卷组扩容(在此场景下我们新增了一个磁盘sdb 先使用fdisk -l
列出系统上所有的硬盘分区信息的命令,它会显示系统中所有块设备的分区表,包括硬盘和其他块设备(如 USB 驱动器)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 [root@localhost /] 磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000c4351 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 41943039 19921920 8e Linux LVM 磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x2f896e2b 设备 Boot Start End Blocks Id System 磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节
使用fdisk对sdb进行分区 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 [root@localhost /] 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):n Partition type : p primary (0 primary, 0 extended, 4 free) e extended Select (default p): Using default response p 分区号 (1-4,默认 1): 起始 扇区 (2048-10485759,默认为 2048): 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+5000M 分区 1 已设置为 Linux 类型,大小设为 4.9 GiB 命令(输入 m 获取帮助):p 磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x2f896e2b 设备 Boot Start End Blocks Id System /dev/sdb1 2048 10242047 5120000 83 Linux 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 [root@localhost /]
执行 fdisk /dev/sdb
命令将启动 fdisk 工具,并允许你对 /dev/sdb
这个磁盘进行分区和管理。这是一个交互式命令行工具,你可以使用一系列的命令来执行不同的操作,如创建分区、删除分区、查看分区表等。
注意:在执行此命令之前,请确保你了解对磁盘进行分区和管理可能会导致数据丢失的风险,并且你已经备份了重要的数据。
以下是一些常见的 fdisk
命令:
p
: 显示分区表
n
: 创建一个新分区
d
: 删除一个分区
w
: 将更改写入磁盘
q
: 退出 fdisk 工具
在执行 fdisk /dev/sdb
后,你将进入 fdisk 的交互式界面,可以使用上述命令进行分区管理。例如,你可以按 n
创建新分区,然后按 w
将更改写入磁盘。
将创建的分区加入逻辑卷组 1 2 [root@localhost /] Volume group "centos" successfully extended
查看逻辑卷组大小 1 2 3 [root@localhost /] VG centos 2 2 0 wz--n- <23.88g <4.88g
可以看到逻辑卷组的大小从原来的19.00g变成了现在的23.88g
将逻辑卷组的空间分配给指定逻辑卷 首先我们要知道卷组中有哪些逻辑卷,使用lvdisplay
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [root@localhost /] --- Logical volume --- LV Path /dev/centos/swap LV Name swap VG Name centos LV UUID 0jd8Pi-CIL6-uxlF-xl2W-Z6d7-fSrr-jxBQsK LV Write Access read /write LV Creation host, time localhost.localdomain, 2023-12-11 14:05:51 +0800 LV Status available LV Size 2.00 GiB Current LE 512 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:1 --- Logical volume --- LV Path /dev/centos/root LV Name root VG Name centos LV UUID s25gBD-v06v-shHf-0s5M-yTBd-oaQ4-FnbwRE LV Write Access read /write LV Creation host, time localhost.localdomain, 2023-12-11 14:05:51 +0800 LV Status available LV Size <17.00 GiB Current LE 4351 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
然后使用df -h
来查看磁盘空间使用情况
1 2 3 4 5 6 7 8 9 10 11 [root@localhost /] 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 470M 0 470M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 8.7M 478M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 6.3G 11G 38% / /dev/sda1 1014M 172M 843M 17% /boot tmpfs 98M 24K 98M 1% /run/user/1000 /dev/sr0 9.5G 9.5G 0 100% /run/media/faixin/CentOS 7 x86_64 tmpfs 98M 0 98M 0% /run/user/0
可以看到目前centos
卷组中共有两个逻辑卷swap和root,其中/dev/mapper/centos-root
是一个逻辑卷的路径,其中包含了操作系统的根文件系统。这个逻辑卷位于 centos
卷组中,通常是通过 LVM(逻辑卷管理器)进行管理的。
解释该路径的一些关键部分:
/dev/mapper
: 这是Linux系统中存储设备映射的路径。
centos
: 这是卷组的名称,可能是通过LVM创建的。
root
: 这是逻辑卷的名称,代表包含操作系统根文件系统的逻辑卷。
这个路径指向一个逻辑卷,而逻辑卷则是一个由LVM管理的虚拟卷。逻辑卷允许对物理存储进行更灵活的管理,包括动态调整大小、快照、移动数据等。
如果你想查看有关这个逻辑卷的详细信息,可以使用 lvdisplay
命令,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [root@localhost /] --- Logical volume --- LV Path /dev/centos/root LV Name root VG Name centos LV UUID s25gBD-v06v-shHf-0s5M-yTBd-oaQ4-FnbwRE LV Write Access read /write LV Creation host, time localhost.localdomain, 2023-12-11 14:05:51 +0800 LV Status available LV Size <17.00 GiB Current LE 4351 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
此命令将显示关于逻辑卷的详细信息,包括大小、使用情况、分配等。
综上可知这个操作系统的跟目录挂载到了逻辑卷/dev/mapper/centos-root
上并且这个逻辑卷共有17G目前剩余10G可用
接下来我们将加入逻辑卷组的磁盘分区sdb1的空间分配给逻辑卷/dev/mapper/centos-root
1 2 3 [root@localhost /] Size of logical volume centos/root changed from <17.00 GiB (4351 extents) to <21.88 GiB (5600 extents). Logical volume centos/root successfully resized.
之后使用blkid命令查看文件系统的类型
1 2 3 4 5 6 7 [root@localhost /]# blkid /dev/sr0: UUID="2020-11-02-15-15-23-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/sda1: UUID="6f9d2cc3-50dc-4570-8d44-b939abd48acc" TYPE="xfs" /dev/sda2: UUID="0KR3Ey-pgBu-VxW2-G4JA-c9dW-htm4-2YFtst" TYPE="LVM2_member" /dev/sdb1: UUID="ndi9nM-IcBR-I1RI-mp8I-uJHo-Z8gO-iwtdPI" TYPE="LVM2_member" /dev/mapper/centos-root: UUID="a4931a43-95d1-4680-8084-7e43c87bf60c" TYPE="xfs" /dev/mapper/centos-swap: UUID="d467b836-1add-4ab5-a2f1-974828c2712e" TYPE="swap"
可以看到root逻辑卷的文件系统类型是xfs,那么相应的我们使用xfs_growfs命令进行扩容
1 2 3 4 5 6 7 8 9 10 11 12 [root@localhost /]# xfs_growfs /dev/mapper/centos-root meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=1113856 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=4455424, 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 4455424 to 5734400
这个命令会将文件系统扩展到逻辑卷所占用的全部空间,执行完 xfs_growfs
后,XFS 文件系统将使用新的逻辑卷大小,而不会丢失数据。
再次使用df -h
命令查看
1 2 3 4 5 6 7 8 9 10 11 [root@localhost /]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 470M 0 470M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 8.7M 478M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 22G 6.3G 16G 29% / /dev/sda1 1014M 172M 843M 17% /boot tmpfs 98M 24K 98M 1% /run/user/1000 /dev/sr0 9.5G 9.5G 0 100% /run/media/faixin/CentOS 7 x86_64 tmpfs 98M 0 98M 0% /run/user/0
可以看到root卷的容量从原来的17G扩大到了22G
补充: vgs常用操作 vgs
(Volume Group Status)是 LVM(Logical Volume Manager)工具的一部分,用于显示有关卷组(Volume Group)的信息。以下是一些常用的 vgs
命令操作:
显示所有卷组的信息:
这将显示系统上所有卷组的摘要信息,包括名称、卷组大小、已使用空间等。
显示指定卷组的详细信息:
替换 <卷组名称>
为你要查看的具体卷组的名称。这将显示有关该卷组的详细信息。
以详细格式显示所有卷组的信息:
这将以更详细的格式显示所有卷组的信息,包括卷组中的逻辑卷(Logical Volumes)的详细信息。
显示卷组空间使用情况:
这将以字节为单位显示卷组的空间使用情况。你可以根据需要使用不同的单位,例如 K
(千字节)、M
(兆字节)、G
(千兆字节)等。
只显示指定字段的信息:
1 vgs -o vg_name,vg_size,vg_free
这将仅显示指定字段的信息,例如卷组名称、卷组大小和可用空间。
显示未使用的物理卷:
1 vgs --ignorelockingfailure -o pv_name,vg_name
这将显示卷组中未使用的物理卷的信息。
vgextend常用操作 vgextend
是 LVM(Logical Volume Manager)工具的一部分,用于向卷组(Volume Group)中添加物理卷(Physical Volume)。以下是一些常用的 vgextend
命令操作:
向卷组添加一个物理卷:
1 vgextend <卷组名称> /dev/<物理卷设备>
替换 <卷组名称>
为你要扩展的卷组的名称,/dev/<物理卷设备>
为你要添加的物理卷的设备路径。这将把指定的物理卷添加到卷组中。
向卷组添加多个物理卷:
1 vgextend <卷组名称> /dev/<物理卷设备1> /dev/<物理卷设备2> ...
你可以在一次命令中指定多个物理卷设备路径,以将它们添加到卷组中。
示例:
1 vgextend centos /dev/sdb1
这个命令将名为 centos
的卷组扩展,添加了 /dev/sdb1
这个物理卷。
显示扩展后的卷组信息:
替换 <卷组名称>
为你扩展的卷组的名称,以显示卷组的详细信息,包括扩展后的大小。
在扩展后重新分配逻辑卷的空间:
1 lvextend -l +100%FREE /dev/<卷组名称>/<逻辑卷名称>
替换 <卷组名称>
和 <逻辑卷名称>
为你的卷组和逻辑卷的名称。这将重新分配逻辑卷的空间,使其占用卷组中的所有可用空间。
或使用-L指定逻辑卷需要的空间
1 lvextend -L +10G /dev/<卷组名称>/<逻辑卷名称>
/dev/centos/root实际上是一个指向/dev/mapper/centos-root的链接