LVM逻辑卷
1. 简介
LVM是Logical Volume Manager的简称,中文就是逻辑卷管理。
物理卷(PV,Physical Volume):真正的物理硬盘和分区
卷组(VG,Volume Group):将多个物理卷合起来就组成了卷组,组成同一个卷组的物理卷可以是同一个硬盘的不同分区,也可以是不同硬盘的不同分区。可以把卷组想象成一个逻辑硬盘
逻辑卷(LV,Logical Volume):卷组是一个逻辑硬盘,硬盘必须分区之后才能使用,这个分区我们称作逻辑卷。逻辑卷可以格式化和写入数据。可以把逻辑卷想象成分区
物理扩展(PE,Physical Extend):PE是用来保存数据的最小单元,我们的数据实际上都是写入PE当中,PE的大小是可以配置的,默认4MB。
2. 建立LVM的步骤
首先需要把物理硬盘分成分区,当然也可以是整块物理硬盘。
然后把物理分区建立成为物理卷(PV),也可以直接把整块硬盘都建立为物理卷。
接下来把物理卷整合成为卷组(VG)。卷组就已经可以动态的调整大小了,可以把物理分区加入卷组,也可以把物理分区从卷组中删除。
最后就是把卷组再划分成为逻辑卷(LV),当然逻辑卷也可以直接调整大小。逻辑卷可以想象成为分区,所以也需要格式化和挂载。
3. 物理卷管理
3.1 硬盘分区
使用fdisk命令,分区的系统ID需要改成LVM的ID号8e。
3.2 建立物理卷
pvcreate [设备文件名]
建立物理卷时,我们说即可以把整块硬盘都建立成物理卷,也可以把某个分区建立成物理卷。如果要把整块硬盘都建立成物理卷,命令如下
[root@centos2 ~]# pvcreate /dev/sdb
把分区建立成物理卷,
[root@centos2 ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created. [root@centos2 ~]# pvcreate /dev/sdb2 Physical volume "/dev/sdb2" successfully created. [root@centos2 ~]# pvcreate /dev/sdb3 Physical volume "/dev/sdb3" successfully created.
3.3 查看物理卷
[root@centos2 ~]# pvscan PV /dev/sda2 VG centos lvm2 [<29.00 GiB / 0 free] PV /dev/sdb2 lvm2 [2.00 GiB] PV /dev/sdb3 lvm2 [<7.00 GiB] PV /dev/sdb1 lvm2 [1.00 GiB] Total: 4 [<39.00 GiB] / in use: 1 [<29.00 GiB] / in no VG: 3 [<10.00 GiB]
最后一行的意思是:总共4个物理卷[大小] / 使用了1个卷[大小] / 空闲3个卷[大小]
第二个查询命令是pvdisplay,可以查看更详细的物理卷状态
[root@centos2 ~]# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name centos PV Size <29.00 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 7423 Free PE 0 Allocated PE 7423 PV UUID reJvlf-QkVq-JydZ-FXZZ-XAjC-F4BP-7hbzbF "/dev/sdb2" is a new physical volume of "2.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb2 VG Name PV Size 2.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 5QdzlY-Uz1y-8FyZ-uHKF-0Knj-ek2h-xVzmhG "/dev/sdb3" is a new physical volume of "<7.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb3 VG Name PV Size <7.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 9F8UHD-mzJ1-Y13n-vSPd-LpEu-ZcBb-0eQ30X "/dev/sdb1" is a new physical volume of "1.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 PV名 VG Name 所属VG名,尚未分配,故空白 PV Size 1.00 GiB PV大小 Allocatable NO 是否已经分配 PE Size 0 PE大小,尚未分配,故PE大小也未指定 Total PE 0 PE总数 Free PE 0 空闲PE数 Allocated PE 0 可分配PE数 PV UUID BHPoOR-lplw-lGLx-8Zu1-nJMj-pzD5-UiH3PH [root@centos2 ~]# pvdisplay /dev/sdb1 "/dev/sdb1" is a new physical volume of "1.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 1.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID BHPoOR-lplw-lGLx-8Zu1-nJMj-pzD5-UiH3PH
3.4 删除物理卷
[root@centos2 ~]# pvremove /dev/sdb3
4. 卷组管理
4.1 建立卷组
vgcreate [选项] 卷组名 物理卷名
-s PE大小:指定PE的大小,单位可以是MB,GB,TB等。不写默认PE大小为4MB
[root@centos2 ~]# vgcreate -s 8MB scvg /dev/sdb1 /dev/sdb2 Volume group "scvg" successfully created
4.2 查看卷组
查看卷组的命令也是两个,vgscan主要查看系统中是否有卷组,而vgdisplay则是查看卷组的详细状态。
[root@centos2 ~]# vgscan Reading volume groups from cache. Found volume group "scvg" using metadata type lvm2 Found volume group "centos" using metadata type lvm2 [root@centos2 ~]# vgdisplay --- Volume group --- VG Name scvg 卷组名 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 2.98 GiB 卷组大小 PE Size 8.00 MiB PE大小 Total PE 382 PE总数 Alloc PE / Size 0 / 0 已用PE数量/大小 Free PE / Size 382 / 2.98 GiB 空闲PE数量/大小 VG UUID uoIBy1-0XDn-Is94-6nDS-aX8o-oO7f-2zzEDR
4.3 增加卷组容量
[root@centos2 ~]# vgextend scvg /dev/sdb3 Volume group "scvg" successfully extended [root@centos2 ~]# vgdisplay --- Volume group --- VG Name scvg 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 <9.98 GiB PE Size 8.00 MiB Total PE 1277 Alloc PE / Size 0 / 0 Free PE / Size 1277 / <9.98 GiB VG UUID uoIBy1-0XDn-Is94-6nDS-aX8o-oO7f-2zzEDR
4.4 减小卷组容量
[root@centos2 ~]# vgreduce scvg /dev/sdb3 Removed "/dev/sdb3" from volume group "scvg" [root@centos2 ~]# vgdisplay --- Volume group --- VG Name scvg System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 3 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 2.98 GiB PE Size 8.00 MiB Total PE 382 Alloc PE / Size 0 / 0 Free PE / Size 382 / 2.98 GiB VG UUID uoIBy1-0XDn-Is94-6nDS-aX8o-oO7f-2zzEDR
4.5 删除卷组
[root@centos2 ~]# vgremove scvg Volume group "scvg" successfully removed [root@centos2 ~]# vgscan Reading volume groups from cache. Found volume group "centos" using metadata type lvm2
5. 逻辑卷管理
5.1 建立逻辑卷
lvcreate [选项] [-n 逻辑卷名] 卷组名 -L 容量:指定逻辑卷大小,单位MB,GB,TB等 -l 个数:按照PE个数指定逻辑卷大小,这个参数需要换算容量,麻烦 -n 逻辑卷名:指定逻辑卷名
[root@centos2 ~]# lvcreate -L 2G -n lv1 scvg2 Logical volume "lv1" created.
建立完逻辑卷之后,还要格式化和挂载逻辑卷之后才能正常使用。格式化和挂载命令和操作普通分区时是一样的,不过需要注意的是逻辑卷的设备文件名是/dev/卷组名/逻辑卷名,如我们的lv1的设备文件名就是“/dev/scvg2/lv1”
[root@centos2 ~]# mkfs -t ext4 /dev/scvg2/lv1 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 131072 inodes, 524288 blocks 26214 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=536870912 16 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (16384 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 [root@centos2 ~]# mkdir /disklvm [root@centos2 ~]# mount /dev/scvg2/lv1 /disklvm/ [root@centos2 ~]# mount ... /dev/mapper/scvg2-lv1 on /disklvm type ext4 (rw,relatime,data=ordered)
如果需要开机自动挂载,也需要修改/etc/fstab文件。
5.2 查看逻辑卷
同样查看命令两个。lvscan查看系统中是否拥有逻辑卷,lvdisplay查看逻辑卷详细信息。
[root@centos2 ~]# lvscan ... ACTIVE '/dev/scvg2/lv1' [2.00 GiB] inherit [root@centos2 ~]# lvdisplay ... --- Logical volume --- LV Path /dev/scvg2/lv1 逻辑卷设备文件名 LV Name lv1 逻辑卷名 VG Name scvg2 所属卷组名 LV UUID gdU1fb-ROJw-FL9S-c6AV-kB1P-PZQU-fybsaY LV Write Access read/write LV Creation host, time centos2, 2019-11-08 17:34:35 +0800 LV Status available # open 1 LV Size 2.00 GiB 逻辑卷大小 Current LE 256 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2
5.3 调整逻辑卷大小
lvresize [选项] 逻辑卷设备文件名 -L 容量:按照容量调整大小,单位MB,GB,TB等。使用+代表增加空间,-代表减少空间。如果直接写容量,代表设定逻辑卷大小为指定大小。 -l 个数:按照PE个数调整大小
[root@centos2 ~]# lvresize -L +2G /dev/scvg2/lv1 Size of logical volume scvg2/lv1 changed from 2.00 GiB (256 extents) to 4.00 GiB (512 extents). Logical volume scvg2/lv1 successfully resized. [root@centos2 ~]# lvdisplay ... --- Logical volume --- LV Path /dev/scvg2/lv1 LV Name lv1 VG Name scvg2 LV UUID gdU1fb-ROJw-FL9S-c6AV-kB1P-PZQU-fybsaY LV Write Access read/write LV Creation host, time centos2, 2019-11-08 17:34:35 +0800 LV Status available # open 1 LV Size 4.00 GiB Current LE 512 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2
逻辑卷大小已经改变,但还有写问题
[root@centos2 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 894M 0 894M 0% /dev tmpfs 910M 0 910M 0% /dev/shm tmpfs 910M 11M 900M 2% /run tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/mapper/centos-root 27G 4.3G 23G 16% / /dev/sda1 1014M 237M 778M 24% /boot tmpfs 182M 12K 182M 1% /run/user/42 tmpfs 182M 0 182M 0% /run/user/0 /dev/mapper/scvg2-lv1 2.0G 6.0M 1.8G 1% /disklvm
刚刚只是逻辑卷的大小改变了,如果想要让分区使用这个新逻辑卷,还需使用resize2fs命令来调整分区的大小。不过这里就体现了LVM的优势,我们不需要卸载分区,直接就能调整分区的大小。
resize2fs [选项] [设备文件名] [调整的大小] -f:强制调整 设备文件名:指定调整哪个分区的大小 调整的大小:指定把分区调整到多大,要加M,G等单位,如果不加,会使用整个分区
[root@centos2 ~]# resize2fs /dev/scvg2/lv1 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/scvg2/lv1 is mounted on /disklvm; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/scvg2/lv1 is now 1048576 blocks long. [root@centos2 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 894M 0 894M 0% /dev tmpfs 910M 0 910M 0% /dev/shm tmpfs 910M 11M 900M 2% /run tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/mapper/centos-root 27G 4.3G 23G 16% / /dev/sda1 1014M 237M 778M 24% /boot tmpfs 182M 12K 182M 1% /run/user/42 tmpfs 182M 0 182M 0% /run/user/0 /dev/mapper/scvg2-lv1 3.9G 8.0M 3.7G 1% /disklvm
5.4 删除逻辑卷
lvremove 逻辑卷设备文件名
删除时,需要先卸载
[root@centos2 ~]# umount /dev/scvg2/lv1 [root@centos2 ~]# lvremove /dev/scvg2/lv1 Do you really want to remove active logical volume scvg2/lv1? [y/n]: y Logical volume "lv1" successfully removed [root@centos2 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 894M 0 894M 0% /dev tmpfs 910M 0 910M 0% /dev/shm tmpfs 910M 11M 900M 2% /run tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/mapper/centos-root 27G 4.3G 23G 16% / /dev/sda1 1014M 237M 778M 24% /boot tmpfs 182M 12K 182M 1% /run/user/42 tmpfs 182M 0 182M 0% /run/user/0