麒麟服务器系统磁盘管理之lvm管理
发布时间:2023-08-31 浏览次数:2491次 作者:湖南省计算产业生态创新中心 (长沙)
1. 管理LVM的命令
管理LVM的命令
主要命令:
· pvcreate命令:创建新的物理卷(格式:pvcreate 设备名1 [设备名2] )
· vgcreate命令:创建新的卷组(格式:vgcreate 卷组名 物理卷名1 [物理卷名2] )
· vgextend命令:扩容卷组(格式:vgextend 卷组名 物理卷名1 [物理卷名2] )
· lvcreate命令:创建新的逻辑卷(格式:lvcreate -L 容量大小 -n 逻辑卷名 卷组名 )
· lvextend命令:扩容逻辑卷(格式:lvextend -L +容量大小 /dev/卷组名/逻辑卷名 )
2. 创建物理卷
理解了LVM的原理之后,我们知道,如果要创建逻辑卷,需要先有物理磁盘或者磁盘分区,然后使用物理磁盘或磁盘分区创建物理卷,再使用物理卷创建卷组,最后使用卷组创建逻辑卷。接下来我们一步一步地创建逻辑卷。
创建物理卷是创建逻辑卷的第一步,创建物理卷相关命令有:
#创建物理卷
pvcreate device1 ... deviceN
#查看物理卷
pvscan
pvdisplay
pvs
2.1. 使用磁盘直接创建物理卷
直接使用物理磁盘创建物理卷没有什么需要特别注意的,直接创建即可。
[root@localhost 桌面]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
├─klas-root 253:0 0 65.1G 0 lvm /
├─klas-swap 253:1 0 2G 0 lvm [SWAP]
└─klas-backup 253:2 0 31.8G 0 lvm
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 10G 0 part
└─sdb2 8:18 0 10G 0 part
sdc 8:32 0 10G 0 disk
sr0 11:0 1 1024M 0 rom
这里我机器上有三块盘,sda 是系统盘,sdb 和 sdc 是两块空闲的磁盘,我们这次就拿它们来创建 lvm 。可以看到,sdb 上我已经创建了两个分区,sdc 是未做分区处理的。
#使用pvcreate将sdc磁盘创建为物理卷
[root@localhost 桌面]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
[root@localhost 桌面]#
#使用pvdisplay确认物理卷信息
[root@localhost 桌面]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name klas
PV Size <99.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 25343
Free PE 0
Allocated PE 25343
PV UUID gTaXnQ-coMf-JnnY-CIwd-PIha-ncLj-9nUU5a
"/dev/sdc" is a new physical volume of "10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 10.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID mM7XUC-6eqF-PPzJ-5ctT-ifu3-MEua-7XHXlt
[root@localhost 桌面]#
#也可以使用pvs确认物理卷信息,不过能够看到的信息比pvdisplay少
[root@localhost 桌面]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 klas lvm2 a-- <99.00g 0
/dev/sdc lvm2 --- 10.00g 10.00g
[root@localhost 桌面]#
2.2. 使用磁盘分区创建物理卷
磁盘分区之后,磁盘id为83,如果要使用逻辑卷管理,需要将id改为8e。
[root@localhost 桌面]# fdisk -l /dev/sdb
Disk /dev/sdb:20 GiB,21474836480 字节,41943040 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x61b19074
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sdb1 2048 20973567 20971520 10G 83 Linux
/dev/sdb2 20973568 41943039 20969472 10G 83 Linux
[root@localhost 桌面]#
sdb1 分区修改 Id 过程如下:
[root@localhost 桌面]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.35.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):t #t可以更改分区类型
分区号 (1,2, 默认 2): 1 #选择1分区进行修改
Hex 代码(输入 L 列出所有代码):L #如果不知道类型,可以用“L”列出可以选择的修改代码
0 空 24 NEC DOS 81 Minix / 旧 Linu bf Solaris
1 FAT12 27 隐藏的 NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 隐藏 或 In c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux 扩展 c7 Syrinx
5 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据
6 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux 纯文本 de Dell 工具
8 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt
9 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问
a OS/2 启动管理器 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad 休 ea Linux 扩展启动
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD eb BeOS fs
f W95 扩展 (LBA) 54 OnTrackDM6 a6 OpenBSD ee GPT
10 OPUS 55 EZ-Drive a7 NeXTSTEP ef EFI (FAT-12/16/
11 隐藏的 FAT12 56 Golden Bow a8 Darwin UFS f0 Linux/PA-RISC
12 Compaq 诊断 5c Priam Edisk a9 NetBSD f1 SpeedStor
14 隐藏的 FAT16 <3 61 SpeedStor ab Darwin 启动 f4 SpeedStor
16 隐藏的 FAT16 63 GNU HURD 或 Sys af HFS / HFS+ f2 DOS 次要
17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fb VMware VMFS
18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fc VMware VMKCORE
1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fd Linux raid 自动
1c 隐藏的 W95 FAT3 75 PC/IX bc Acronis FAT32 L fe LANstep
1e 隐藏的 W95 FAT1 80 旧 Minix be Solaris 启动 ff BBT
Hex 代码(输入 L 列出所有代码):
Hex 代码(输入 L 列出所有代码):8e #选择8e Linux LVM
已将分区“Linux”的类型更改为“Linux LVM”。
命令(输入 m 获取帮助):w #保存
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
[root@localhost 桌面]#
sdb2 分区修改 Id 步骤和上面一样,最终修改结果如下:
[root@localhost 桌面]# fdisk -l /dev/sdb
Disk /dev/sdb:20 GiB,21474836480 字节,41943040 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x61b19074
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sdb1 2048 20973567 20971520 10G 8e Linux LVM
/dev/sdb2 20973568 41943039 20969472 10G 8e Linux LVM
注:从实际操作来看,这里修改分区 Id 似乎没什么实际意义。不修改的话,也不影响创建物理卷。修改的作用只是在使用 fdisk 查看磁盘情况时标识了这个分区是 lvm ,但实际上我们也不会通过 fdisk 命令来查看 lvm 。此外,通过 parted 命令创建的分区甚至没有 Id 这项内容。
接着继续创建物理卷即可。
[root@localhost 桌面]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@localhost 桌面]# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created.
[root@localhost 桌面]#
[root@localhost 桌面]#
[root@localhost 桌面]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name klas
PV Size <99.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 25343
Free PE 0
Allocated PE 25343
PV UUID gTaXnQ-coMf-JnnY-CIwd-PIha-ncLj-9nUU5a
"/dev/sdb1" is a new physical volume of "10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 10.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID Qpsgrl-cOyn-9IBO-S8rR-scAh-ygSo-w2P1T3
"/dev/sdb2" is a new physical volume of "<10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb2
VG Name
PV Size <10.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID HVlh2d-MMF2-83fz-2gER-rLMg-PfQe-qSoSrX
"/dev/sdc" is a new physical volume of "10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 10.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID mM7XUC-6eqF-PPzJ-5ctT-ifu3-MEua-7XHXlt
[root@localhost 桌面]#
3. 创建、扩容卷组
3.1. 创建卷组
有了物理卷,我们就可以创建卷组了。创建卷组相关命令有:
#创建卷组
vgcreate VG_NAME device1 ... deviceN
#查看卷组
vgdisplay
vgscan
vgs
接下来我们演示使用 sdb1 和 sdc 创建一个卷组 vg_test 。
#使用vgcreate创建卷组vg_test,包含物理卷:/dev/sdb1和/dev/sdc
[root@localhost 桌面]# vgcreate vg_test /dev/sdb1 /dev/sdc
Volume group "vg_test" successfully created
[root@localhost 桌面]#
#查看方法一:使用vgdisplay查看卷组信息
[root@localhost 桌面]# vgdisplay
--- Volume group ---
VG Name vg_test
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 19.99 GiB
PE Size 4.00 MiB
Total PE 5118
Alloc PE / Size 0 / 0
Free PE / Size 5118 / 19.99 GiB
VG UUID UPA23h-x1i3-YTun-JYRF-uksw-OuQJ-ZVqHzR
--- Volume group ---
VG Name klas
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <99.00 GiB
PE Size 4.00 MiB
Total PE 25343
Alloc PE / Size 25343 / <99.00 GiB
Free PE / Size 0 / 0
VG UUID U41eAx-FSeP-qnTb-BKhp-B5FO-oyhS-ub2eb3
[root@localhost 桌面]#
#查看方法二:使用vgscan查看卷组信息
[root@localhost 桌面]# vgscan
Found volume group "vg_test" using metadata type lvm2
Found volume group "klas" using metadata type lvm2
[root@localhost 桌面]#
# 查看方法三:使用vgs查看卷组信息
[root@localhost 桌面]# vgs
VG #PV #LV #SN Attr VSize VFree
klas 1 3 0 wz--n- <99.00g 0
vg_test 2 0 0 wz--n- 19.99g 19.99g
[root@localhost 桌面]#
3.2. 扩容卷组
如果在使用过程中,发现要使用的空间大于卷组的空间,可以对卷组进行扩容,把新的物理卷加入到卷组中。扩容卷组相关命令有:
#扩容卷组
vgextend VG_NAME device1 ... deviceN
#查看卷组
vgdisplay
vgscan
vgs
接下来我们演示将 sdb2 加入到卷组 vg_test 中。
#使用vgextend扩容卷组vg_test
[root@localhost 桌面]# vgextend vg_test /dev/sdb2
Volume group "vg_test" successfully extended
[root@localhost 桌面]#
#可以看到现PV数量和VG容量都发生了变化
[root@localhost 桌面]# vgdisplay
--- Volume group ---
VG Name vg_test
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size <29.99 GiB
PE Size 4.00 MiB
Total PE 7677
Alloc PE / Size 0 / 0
Free PE / Size 7677 / <29.99 GiB
VG UUID UPA23h-x1i3-YTun-JYRF-uksw-OuQJ-ZVqHzR
--- Volume group ---
VG Name klas
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <99.00 GiB
PE Size 4.00 MiB
Total PE 25343
Alloc PE / Size 25343 / <99.00 GiB
Free PE / Size 0 / 0
VG UUID U41eAx-FSeP-qnTb-BKhp-B5FO-oyhS-ub2eb3
[root@localhost 桌面]#
4. 创建、扩容逻辑卷
4.1. 创建逻辑卷
有了卷组,就可以创建逻辑卷了。创建逻辑卷相关命令有:
#创建逻辑卷
lvcreate –L SIZE –n LV_NAME VG_NAME
#查看逻辑卷
lvdisplay
lvscan
lvs
接下来我们演示使用 vg_test 卷组来创建逻辑卷 lv_test 。
# 使用lvcreate创建逻辑卷lv_test
[root@localhost 桌面]# lvcreate -L 10G -n lv_test vg_test
Logical volume "lv_test" created.
[root@localhost 桌面]#
#查看方法一:使用lvdisplay查看逻辑卷
[root@localhost 桌面]# lvdisplay
--- Logical volume ---
LV Path /dev/vg_test/lv_test
LV Name lv_test
VG Name vg_test
LV UUID QxI2hu-yKUu-C2jU-IWVA-egjr-ANk7-tAu33L
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2022-12-22 17:37:58 +0800
LV Status available
# open 0
LV Size 10.00 GiB
Current LE 2560
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
--- Logical volume ---
LV Path /dev/klas/swap
LV Name swap
VG Name klas
LV UUID n8Qp8o-ZRKN-fdL6-uRex-6MQS-AemX-I4Rfox
LV Write Access read/write
LV Creation host, time localhost, 2021-09-19 17:58:51 +0800
LV Status available
# open 2
LV Size 2.04 GiB
Current LE 523
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/klas/backup
LV Name backup
VG Name klas
LV UUID i5tbpy-Ifi9-mnOa-E2fa-m5AJ-qo17-xW718N
LV Write Access read/write
LV Creation host, time localhost, 2021-09-19 17:58:51 +0800
LV Status available
# open 0
LV Size <31.81 GiB
Current LE 8143
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/klas/root
LV Name root
VG Name klas
LV UUID BMDaM0-EnFH-Lpyy-Ko1M-e06H-82f2-To1VIh
LV Write Access read/write
LV Creation host, time localhost, 2021-09-19 17:58:51 +0800
LV Status available
# open 1
LV Size 65.14 GiB
Current LE 16677
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
[root@localhost 桌面]#
#查看方法二:使用lvscan查看逻辑卷
[root@localhost 桌面]# lvscan
ACTIVE '/dev/vg_test/lv_test' [10.00 GiB] inherit
ACTIVE '/dev/klas/swap' [2.04 GiB] inherit
ACTIVE '/dev/klas/backup' [<31.81 GiB] inherit
ACTIVE '/dev/klas/root' [65.14 GiB] inherit
[root@localhost 桌面]#
#查看方法三:使用lvs查看逻辑卷
[root@localhost 桌面]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
backup klas -wi-a----- <31.81g
root klas -wi-ao---- 65.14g
swap klas -wi-ao---- 2.04g
lv_test vg_test -wi-a----- 10.00g
[root@localhost 桌面]#
创建完逻辑卷之后,格式化挂载即可使用。
#格式化逻辑卷
[root@localhost 桌面]# mkfs.xfs /dev/vg_test/lv_test
meta-data=/dev/vg_test/lv_test isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost 桌面]#
#创建挂载目录
[root@localhost 桌面]# mkdir /test
[root@localhost 桌面]#
#挂载逻辑卷
[root@localhost 桌面]# mount /dev/vg_test/lv_test /test
[root@localhost 桌面]#
#查看挂载情况
[root@localhost 桌面]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 442M 0 442M 0% /dev
tmpfs tmpfs 469M 16K 469M 1% /dev/shm
tmpfs tmpfs 469M 19M 450M 5% /run
tmpfs tmpfs 469M 0 469M 0% /sys/fs/cgroup
/dev/mapper/klas-root xfs 66G 9.7G 56G 15% /
tmpfs tmpfs 469M 108K 469M 1% /tmp
/dev/sda1 xfs 1014M 214M 801M 22% /boot
tmpfs tmpfs 94M 48K 94M 1% /run/user/0
tmpfs tmpfs 94M 0 94M 0% /run/user/992
/dev/mapper/vg_test-lv_test xfs 10G 104M 9.9G 2% /test
[root@localhost 桌面]#
4.2. 扩容逻辑卷
如果在使用过程中,发现逻辑卷的空间不够用,只要卷组还有空闲容量,那我们就可以扩容逻辑卷。扩容逻辑卷相关命令有:
#使用lvextend扩容逻辑卷,+SIZE代表增加的空间
lvextend -L +SIZE lv_device
#调整文件系统的大小
resize2fs lv_device #用于ext2/ext3/ext4文件系统,支持增大和减小。
xfs_growfs lv_device #用于xfs文件系统,只支持增大。
接下来我们演示对逻辑卷 lv_test 扩容 5G 。
扩容前磁盘大小如下:
[root@localhost 桌面]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 442M 0 442M 0% /dev
tmpfs tmpfs 469M 16K 469M 1% /dev/shm
tmpfs tmpfs 469M 19M 450M 5% /run
tmpfs tmpfs 469M 0 469M 0% /sys/fs/cgroup
/dev/mapper/klas-root xfs 66G 9.7G 56G 15% /
tmpfs tmpfs 469M 108K 469M 1% /tmp
/dev/sda1 xfs 1014M 214M 801M 22% /boot
tmpfs tmpfs 94M 48K 94M 1% /run/user/0
tmpfs tmpfs 94M 0 94M 0% /run/user/992
/dev/mapper/vg_test-lv_test xfs 10G 104M 9.9G 2% /test
进行扩容操作:
#对逻辑卷进行扩容,增加 5G 空间
[root@localhost 桌面]# lvextend -L +5G /dev/vg_test/lv_test
Size of logical volume vg_test/lv_test changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840 extents).
Logical volume vg_test/lv_test successfully resized.
[root@localhost 桌面]#
#查看磁盘大小,未发生改变
[root@localhost 桌面]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 442M 0 442M 0% /dev
tmpfs tmpfs 469M 16K 469M 1% /dev/shm
tmpfs tmpfs 469M 19M 450M 5% /run
tmpfs tmpfs 469M 0 469M 0% /sys/fs/cgroup
/dev/mapper/klas-root xfs 66G 9.8G 56G 15% /
tmpfs tmpfs 469M 108K 469M 1% /tmp
/dev/sda1 xfs 1014M 214M 801M 22% /boot
tmpfs tmpfs 94M 48K 94M 1% /run/user/0
tmpfs tmpfs 94M 0 94M 0% /run/user/992
/dev/mapper/vg_test-lv_test xfs 10G 104M 9.9G 2% /test
[root@localhost 桌面]#
调整文件系统的大小:
# 使用xfs_growfs调整文件系统的大小
[root@localhost 桌面]# xfs_growfs /dev/vg_test/lv_test
meta-data=/dev/mapper/vg_test-lv_test isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log 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 2621440 to 3932160
[root@localhost 桌面]#
#查看磁盘大小,已经发生改变
[root@localhost 桌面]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 442M 0 442M 0% /dev
tmpfs tmpfs 469M 16K 469M 1% /dev/shm
tmpfs tmpfs 469M 19M 450M 5% /run
tmpfs tmpfs 469M 0 469M 0% /sys/fs/cgroup
/dev/mapper/klas-root xfs 66G 9.7G 56G 15% /
tmpfs tmpfs 469M 124K 469M 1% /tmp
/dev/sda1 xfs 1014M 214M 801M 22% /boot
tmpfs tmpfs 94M 48K 94M 1% /run/user/0
tmpfs tmpfs 94M 0 94M 0% /run/user/992
/dev/mapper/vg_test-lv_test xfs 15G 140M 15G 1% /test