Linux系统LVM逻辑卷管理
放个链接,万一有人关注呢
优质文章推荐
↓ ↓ ↓ ↓ ↓
逻辑卷管理(Logical Volume Management,简称LVM)是一种在Linux系统上管理磁盘存储的技术,它允许用户将多个物理硬盘上的存储空间组合成逻辑卷,并在需要时对其进行动态管理。LVM提供了灵活性、可扩展性和数据保护性,使得存储管理更加方便和高效。
1、创建物理卷
-f:强制执行操作,即使设备已经被标记为LVM物理卷。
-y:自动回答“是”对所有提示,默认为“否”。
-v:显示详细的操作过程和信息。
-d:禁用LVM写入设备的元数据。
-ff:强制执行操作,并删除任何可能存在的旧的LVM元数据。
-M 2:指定元数据备份级别,其中1表示单个备份,2表示多个备份(默认为2)。
-n:不要创建物理卷。
下面通过pvcreate将一个磁盘初始化为物理卷
#查看当前可用磁盘
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.3G 0 rom /run/media/root/CentOS 7 x86_64
#将可用磁盘初始化为物理卷
[root@localhost ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
物理卷创建成功之后,可以通过pvscan命令查看创建结果
[root@localhost ~]# pvscan
PV /dev/sda2 VG centos lvm2 [<19.00 GiB / 0 free]
PV /dev/sdb lvm2 [20.00 GiB]
Total: 2 [<39.00 GiB] / in use: 1 [<19.00 GiB] / in no VG: 1 [20.00 GiB]
vgcreate命令用于创建LVM卷组(Volume Group),将多个物理卷(Physical Volumes)组合在一起形成逻辑卷管理器(LVM)的逻辑卷组。以下是vgcreate命令常用的参数:
-v:显示详细的操作过程和信息。
-s PE_SIZE:指定物理区块(Physical Extent)的大小。默认情况下,PE大小为4MB。
-c:启用磁盘扫描和磁盘上的校验和功能。
-f:强制执行操作,即使卷组名称已经存在。
-A y/n:设置是否自动激活卷组(自动激活将在系统启动时自动激活卷组)。
-M 2:指定元数据备份级别,其中1表示单个备份,2表示多个备份(默认为2)。
-p PE_START:PE是卷组中的储存单位,默认大小为4MB。
下面通过vgcreate将物理卷整合为卷组
[root@localhost ~]# vgcreate datavg /dev/sdb
Volume group "datavg" successfully created
3、查看卷组
卷组创建完成之后,可以通过pvscan命令查看创建结果
[root@localhost ~]# pvscan
PV /dev/sda2 VG centos lvm2 [<19.00 GiB / 0 free]
PV /dev/sdb VG datavg lvm2 [<20.00 GiB / <20.00 GiB free]
Total: 2 [38.99 GiB] / in use: 2 [38.99 GiB] / in no VG: 0 [0 ]
通过pvscan命令只能查看到卷组的大致信息,如需查看卷组的详细信息可以通过vgdisplay命令查看
[root@localhost ~]# vgdisplay datavg
--- Volume group ---
VG Name datavg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <20.00 GiB
PE Size 4.00 MiB
Total PE 5119
Alloc PE / Size 50 / 200.00 MiB
Free PE / Size 5069 / 19.80 GiB
VG UUID gQrVqu-zh0o-P0u7-x0Nu-TMgE-bbcV-puCAgD
4、创建逻辑卷
lvcreate命令用于创建逻辑卷(Logical Volume)。以下是lvcreate命令常用的参数:
-L size:指定逻辑卷的大小。可以使用单位来表示大小,例如M(兆字节)、G(千兆字节)等。
-n name:指定逻辑卷的名称。
-v:显示详细的操作过程和信息。
-y:在创建逻辑卷时不进行确认提示,直接执行。
-i number:指定逻辑卷的副本数。创建有多个副本的逻辑卷时使用。
-I size:指定逻辑卷的镜像区域大小。
-m Mirrors:指定逻辑卷的镜像数。
-c chunk size:指定逻辑卷的块大小。
下面通过lvcreate在卷组中创建出一个逻辑卷。
[root@localhost ~]# lvcreate -L 100M -n lv1 datavg
Logical volume "lv1" created.
上述示例中,在卷组datavg中创建了一个大小为100M,命名为lv1的逻辑卷。其中,-L参数用于指定逻辑卷的大小,若是使用-l参数则需要指定以PE为单位的逻辑卷容量,示例代码如下。
[root@localhost ~]# lvcreate -l 25 -n lv2 datavg
Logical volume "lv2" created.
由于一个PE单位的容量默认为4M,所以此处配置逻辑卷lv2的大小为25个PE单位,也就是100M。
逻辑卷创建完成之后,查看当前逻辑卷
[root@localhost ~]# lvscan
ACTIVE '/dev/centos/swap' [2.00 GiB] inherit
ACTIVE '/dev/centos/root' [<17.00 GiB] inherit
ACTIVE '/dev/datavg/lv1' [100.00 MiB] inherit
ACTIVE '/dev/datavg/lv2' [100.00 MiB] inherit
在挂载逻辑卷之前,将需要挂载的逻辑卷进行格式化
#将lv1进行ext4格式化
[root@localhost ~]# mkfs.ext4 /dev/datavg/lv1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33685504
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
#将lv2进行xfs格式化
[root@localhost ~]# mkfs.xfs /dev/datavg/lv2
meta-data=/dev/datavg/lv2 isize=512 agcount=4, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
在挂载逻辑卷时并不需要UUID,使用设备名称即可,因为逻辑卷的名称不会发生改变。
创建两个挂载点。
[root@localhost ~]# mkdir -p /mnt/lv01 /mnt/lv02
有了挂载点之后,将挂载信息写入到/etc/fstab文件中
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Apr 8 14:30:29 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=214c5b00-13fb-46da-b59f-7fef6b85ada3 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/datavg/lv1 /mnt/lv01 ext4 defaults 0 0
/dev/datavg/lv2 /mnt/lv02 nfs defaults 0 0
逻辑卷挂载完成之后,读取配置并查看挂载结果。
[root@localhost ~]# mount -a
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 17G 5.9G 12G 35% /
devtmpfs devtmpfs 470M 0 470M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 8.6M 478M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 166M 849M 17% /boot
tmpfs tmpfs 98M 4.0K 98M 1% /run/user/42
tmpfs tmpfs 98M 24K 98M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/datavg-lv1 ext4 93M 1.6M 85M 2% /mnt/lv01
/dev/mapper/datavg-lv2 nfs 93M 1.6M 85M 2% /mnt/lv02
此时逻辑卷lv1与lv2已经成功挂载到目录/mnt/lv01与/mnt/lv02中。
6、卷组扩容
将新磁盘初始化为物理卷,并添加到卷组中。
[root@localhost ~]# vgextend datavg /dev/sdc
Physical volume "/dev/sdc" successfully created.
Volume group "datavg" successfully extended
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb datavg lvm2 a-- <20.00g 19.80g
/dev/sdc datavg lvm2 a-- <20.00g <20.00g
7、逻辑卷扩容
lvextend命令用于扩展逻辑卷(Logical Volume)的大小。以下是lvextend命令常用的参数:
-L size:指定逻辑卷的新大小。可以使用单位来表示大小,例如M(兆字节)、G(千兆字节)等。
-l extents:指定逻辑卷的新大小,以卷组中的扩展数为单位。
-n name:指定逻辑卷的名称。
-v:显示详细的操作过程和信息。
-r:在扩展逻辑卷后自动调整文件系统大小。
将逻辑卷lv1的容量扩容到500M。
[root@localhost ~]# lvextend -L 500M /dev/datavg/lv1
Size of logical volume datavg/lv1 changed from 100.00 MiB (25 extents) to 500.00 MiB (125 extents).
Logical volume datavg/lv1 successfully resized.
为逻辑卷lv2增加400M的容量。
[root@localhost ~]# lvextend -L +400M /dev/datavg/lv2
Size of logical volume datavg/lv2 changed from 100.00 MiB (25 extents) to 500.00 MiB (125 extents).
Logical volume datavg/lv2 successfully resized.
逻辑卷扩容完成之后,查看扩容结果。
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 17G 5.9G 12G 35% /
devtmpfs devtmpfs 470M 0 470M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 8.6M 478M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 166M 849M 17% /boot
/dev/mapper/datavg-lv1 ext4 93M 1.6M 85M 2% /mnt/lv01
/dev/mapper/datavg-lv2 xfs 97M 5.3M 92M 6% /mnt/lv02
tmpfs tmpfs 98M 4.0K 98M 1% /run/user/42
tmpfs tmpfs 98M 24K 98M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
此时逻辑卷的容量并没有得到提升,这是由于没有对文件系统进行扩容。
在Linux下,不同的文件系统有不同的扩容方式。下面列出了几种常见的文件系统以及对应的扩容方式:
1、Ext2/Ext3/Ext4文件系统:
使用resize2fs命令来扩展文件系统大小。例如,resize2fs /dev/sdb1将扩展/dev/sdb1上的Ext2/Ext3/Ext4文件系统。
2、XFS文件系统:
使用xfs_growfs命令来扩展文件系统大小。例如,xfs_growfs /mnt将扩展/mnt上的XFS文件系统。
3、Btrfs文件系统:
使用btrfs filesystem resize命令来扩展文件系统大小。例如,btrfs filesystem resize +2G /mnt将/mnt上的Btrfs文件系统扩展2GB。
4、ZFS文件系统:
使用zpool和zfs命令来扩展文件系统大小。首先使用zpool命令扩展存储池的容量,然后使用zfs命令扩展具体的ZFS文件系统。
[root@localhost ~]# resize2fs /dev/datavg/lv1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/datavg/lv1 is mounted on /mnt/lv01; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 4
The filesystem on /dev/datavg/lv1 is now 512000 blocks long.
逻辑卷lv2的文件系统为xfs,则需要xfs_growfs命令进行扩容。
[root@localhost ~]# xfs_growfs /dev/datavg/lv2
meta-data=/dev/mapper/datavg-lv2 isize=512 agcount=4, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 25600 to 128000
将逻辑卷的文件系统扩容之后,再次查看逻辑卷容量。
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 17G 5.9G 12G 35% /
devtmpfs devtmpfs 470M 0 470M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 8.6M 478M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 166M 849M 17% /boot
/dev/mapper/datavg-lv1 ext4 481M 2.3M 456M 1% /mnt/lv01
/dev/mapper/datavg-lv2 xfs 497M 6.0M 491M 2% /mnt/lv02
tmpfs tmpfs 98M 4.0K 98M 1% /run/user/42
tmpfs tmpfs 98M 24K 98M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
当磁盘空间不足时,可以减少卷组所占空间,即删除卷组中的物理卷。如果需要删除的物理卷中存有数据,需要将数据迁移到其他物理卷中,但也要保证目标物理卷有足够的空间储存迁移的数据。
将物理卷sdb中的数据迁移到物理卷sdc中。
[root@localhost ~]# pvmove /dev/sdb /dev/sdc
/dev/sdb: Moved: 4.80%
/dev/sdb: Moved: 10.00%
/dev/sdb: Moved: 50.00%
/dev/sdb: Moved: 60.00%
/dev/sdb: Moved: 100.00%
通过vgreduce命令将sdb物理卷从卷组中删除。
[root@localhost ~]# vgreduce datavg /dev/sdb
Removed "/dev/sdb" from volume group "datavg"
10、删除逻辑卷
将多余的逻辑卷删除。
#解除挂载
[root@localhost ~]# umount /dev/datavg/lv2
#删除逻辑卷
[root@localhost ~]# lvremove /dev/datavg/lv2
Do you really want to remove active logical volume datavg/lv2? [y/n]: y
Logical volume "lv2" successfully removed
在lvremove命令中添加-f参数,强制删除多余的逻辑卷。
[root@localhost ~]# umount /dev/datavg/lv1
[root@localhost ~]# lvremove -f /dev/datavg/lv1
Logical volume "lv1" successfully removed
由于在创建逻辑卷时的创建顺序是物理卷、卷组与逻辑卷,所以在删除物理卷时的删除顺序应为逻辑卷、卷组与物理卷。
结束!如有不足之处,欢迎指正!
来不及解释了,快上车!(加我微信拉你进群,需要学习资料的V我)
欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。