centos下LVM配置与管理
centos下LVM配置与管理
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。
LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。
LVM的主要功能:容量组合,动态调整容量大小。
LVM是将多块硬盘从逻辑上组合成一个大容量的存储空间(即VG),最终要划分成小的LV逻辑卷来使用这些空间。
LVM的管理流程:先给硬盘分区(也可以不分区),再创建PV,再创建VG,再创建LV,再格式化LV,再手动或自动挂载LV,再写入数据。
基本的逻辑卷管理概念:
PV(Physical Volume)- 物理卷
物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。
VG(Volumne Group)- 卷组
卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
LV(Logical Volume)- 逻辑卷
逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。
关系图如下:
PE(Physical Extent)- 物理块
LVM 默认使用4MB的PE区块,而LVM的LV最多仅能含有65534个PE (lvm1 的格式),因此默认的LVM的LV最大容量为4M*65534/(1024M/G)=256G。PE是整个LVM 最小的储存区块,也就是说,其实我们的资料都是由写入PE 来处理的。简单的说,这个PE 就有点像文件系统里面的block 大小。所以调整PE 会影响到LVM 的最大容量!不过,在 CentOS 6.x 以后,由于直接使用 lvm2 的各项格式功能,因此这个限制已经不存在了。
功能/命令 |
物理卷管理(PV) |
卷组管理(VG) |
逻辑卷管理(LV) |
扫描查询系统中的LVM设备 |
pvscan |
vgscan |
lvscan |
建立 |
pvcreate |
vgcreate |
lvcreate |
显示 |
pvdisplay |
vgdisplay |
lvdisplay |
状态 |
pvs |
vgs |
lvs |
删除 |
pvremove |
vgremove |
lvremove |
扩展(增加容量) |
vgextend |
lvextend/lvresize |
|
缩容(缩小容量) |
vgreduce |
lvreduce/lvresize |
|
调整系统中看到的容量 |
resize2fs/xfs_growfs |
LVM逻辑卷管理的思路:先给硬盘分区(也可以不分区),再创建pv,再创建vg,再创建lv,再格式化,再手动或自动挂载,再测试数据的写入。
创建PV物理卷:
1 [root@serve1 ~]# lsblk 2 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT 3 sda 8:0 0 20G 0 disk 4 ├─sda1 8:1 0 1G 0 part /boot 5 └─sda2 8:2 0 19G 0 part 6 ├─cl-root 253:0 0 17G 0 lvm / 7 └─cl-swap 253:1 0 2G 0 lvm [SWAP] 8 sdb 8:16 0 20G 0 disk 9 sdc 8:32 0 20G 0 disk 10 sr0 11:0 1 7.7G 0 rom
创建PV
1 [root@serve1 ~]# pvcreate /dev/sd[b-c] 2 Physical volume "/dev/sdb" successfully created. 3 Physical volume "/dev/sdc" successfully created.
查看PV的状态
1 [root@serve1 ~]# pvs 2 PV VG Fmt Attr PSize PFree 3 /dev/sda2 cl lvm2 a-- <19.00g 0 4 /dev/sdb lvm2 --- 20.00g 20.00g 5 /dev/sdc lvm2 --- 20.00g 20.00g
查看PV的详细信息
1 [root@serve1 ~]# pvdisplay 2 --- Physical volume --- 3 PV Name /dev/sda2 4 VG Name cl 5 PV Size <19.00 GiB / not usable 3.00 MiB 6 Allocatable yes (but full) 7 PE Size 4.00 MiB 8 Total PE 4863 9 Free PE 0 10 Allocated PE 4863 11 PV UUID fnufKb-qQ1k-jEH3-tS3R-7dvF-Ldrd-6PMuoG 12 13 "/dev/sdb" is a new physical volume of "20.00 GiB" 14 --- NEW Physical volume --- 15 PV Name /dev/sdb 16 VG Name 17 PV Size 20.00 GiB 18 Allocatable NO 19 PE Size 0 20 Total PE 0 21 Free PE 0 22 Allocated PE 0 23 PV UUID koMQS3-Omw9-bg8r-Lluq-vM7C-nm0B-KqKIaH 24 25 "/dev/sdc" is a new physical volume of "20.00 GiB" 26 --- NEW Physical volume --- 27 PV Name /dev/sdc 28 VG Name 29 PV Size 20.00 GiB 30 Allocatable NO 31 PE Size 0 32 Total PE 0 33 Free PE 0 34 Allocated PE 0 35 PV UUID mzTDJw-Ak2N-CzDD-eEcO-bczl-wA0r-44LHqd
创建VG卷组:
1 [root@serve1 ~]# vgcreate vg1 /dev/sd[b-c] 2 Volume group "vg1" successfully created 3 4 [root@serve1 ~]# vgs 5 VG #PV #LV #SN Attr VSize VFree 6 cl 1 2 0 wz--n- <19.00g 0 7 vg1 2 0 0 wz--n- 39.99g 39.99g 8 [root@serve1 ~]# vgdisplay 9 --- Volume group --- 10 VG Name vg1 11 System ID 12 Format lvm2 13 Metadata Areas 2 14 Metadata Sequence No 1 15 VG Access read/write 16 VG Status resizable 17 MAX LV 0 18 Cur LV 0 19 Open LV 0 20 Max PV 0 21 Cur PV 2 22 Act PV 2 23 VG Size 39.99 GiB 24 PE Size 4.00 MiB 25 Total PE 10238 26 Alloc PE / Size 0 / 0 27 Free PE / Size 10238 / 39.99 GiB 28 VG UUID xfNGUD-pYdS-eUI9-5Y0u-Ulqx-rwWW-EI5gso 29 30 --- Volume group --- 31 VG Name cl 32 System ID 33 Format lvm2 34 Metadata Areas 1 35 Metadata Sequence No 3 36 VG Access read/write 37 VG Status resizable 38 MAX LV 0 39 Cur LV 2 40 Open LV 2 41 Max PV 0 42 Cur PV 1 43 Act PV 1 44 VG Size <19.00 GiB 45 PE Size 4.00 MiB 46 Total PE 4863 47 Alloc PE / Size 4863 / <19.00 GiB 48 Free PE / Size 0 / 0 49 VG UUID cxM7kS-b357-Y4MX-439j-EkVT-3X4l-5tTZp1
说明:vg1指的是卷组名称,/dev/[b-c]是卷组中的设备
创建LV逻辑卷(这里我创建了2个LV逻辑卷):
1 [root@serve1 ~]# lvcreate -L 25G -n lv1 vg1 #创建LV逻辑卷 2 Logical volume "lv1" created. 3 4 [root@serve1 ~]# lvs 5 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert 6 root cl -wi-ao---- <17.00g 7 swap cl -wi-ao---- 2.00g 8 lv1 vg1 -wi-a----- 25.00g 9 10 [root@serve1 ~]# lvdisplay 11 --- Logical volume --- 12 LV Path /dev/vg1/lv1 13 LV Name lv1 14 VG Name vg1 15 LV UUID PDVaXp-eih9-ogif-PvBu-Mve2-nCUf-086A8o 16 LV Write Access read/write 17 LV Creation host, time serve1, 2017-11-18 23:32:49 +0800 18 LV Status available 19 # open 0 20 LV Size 25.00 GiB 21 Current LE 6400 22 Segments 2 23 Allocation inherit 24 Read ahead sectors auto 25 - currently set to 8192 26 Block device 253:2 27 28 --- Logical volume --- 29 LV Path /dev/cl/swap 30 LV Name swap 31 VG Name cl 32 LV UUID fjdF4f-JxFB-gtEh-7k4C-74BC-odR2-wIL6Sy 33 LV Write Access read/write 34 LV Creation host, time serve1, 2017-09-27 23:42:53 +0800 35 LV Status available 36 # open 2 37 LV Size 2.00 GiB 38 Current LE 512 39 Segments 1 40 Allocation inherit 41 Read ahead sectors auto 42 - currently set to 8192 43 Block device 253:1 44 45 --- Logical volume --- 46 LV Path /dev/cl/root 47 LV Name root 48 VG Name cl 49 LV UUID OddHW1-lehU-NcYT-uO19-nD7y-kdSx-PO3ZW0 50 LV Write Access read/write 51 LV Creation host, time serve1, 2017-09-27 23:42:53 +0800 52 LV Status available 53 # open 1 54 LV Size <17.00 GiB 55 Current LE 4351 56 Segments 1 57 Allocation inherit 58 Read ahead sectors auto 59 - currently set to 8192 60 Block device 253:0
明:-L:指定逻辑卷的大小,单位为"kKmMgGtT"字节; -n:指定逻辑卷的名称; vg1是卷组的名称,卷组的名称要和上面创建的卷组名称一致。
1 [root@serve1 ~]# lvcreate -l +100%FREE -n lv2 vg1 2 Logical volume "lv2" created. 3 4 [root@serve1 ~]# lvs 5 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert 6 root cl -wi-ao---- <17.00g 7 swap cl -wi-ao---- 2.00g 8 lv1 vg1 -wi-a----- 25.00g 9 lv2 vg1 -wi-a----- 14.99g 10 11 [root@serve1 ~]# lvdisplay 12 --- Logical volume --- 13 LV Path /dev/vg1/lv1 14 LV Name lv1 15 VG Name vg1 16 LV UUID PDVaXp-eih9-ogif-PvBu-Mve2-nCUf-086A8o 17 LV Write Access read/write 18 LV Creation host, time serve1, 2017-11-18 23:32:49 +0800 19 LV Status available 20 # open 0 21 LV Size 25.00 GiB 22 Current LE 6400 23 Segments 2 24 Allocation inherit 25 Read ahead sectors auto 26 - currently set to 8192 27 Block device 253:2 28 29 --- Logical volume --- 30 LV Path /dev/vg1/lv2 31 LV Name lv2 32 VG Name vg1 33 LV UUID DSymjV-ExDB-wTSR-6lns-Swjz-ZzP5-Ywf0xA 34 LV Write Access read/write 35 LV Creation host, time serve1, 2017-11-18 23:42:30 +0800 36 LV Status available 37 # open 0 38 LV Size 14.99 GiB 39 Current LE 3838 40 Segments 1 41 Allocation inherit 42 Read ahead sectors auto 43 - currently set to 8192 44 Block device 253:3 45 46 --- Logical volume --- 47 LV Path /dev/cl/swap 48 LV Name swap 49 VG Name cl 50 LV UUID fjdF4f-JxFB-gtEh-7k4C-74BC-odR2-wIL6Sy 51 LV Write Access read/write 52 LV Creation host, time serve1, 2017-09-27 23:42:53 +0800 53 LV Status available 54 # open 2 55 LV Size 2.00 GiB 56 Current LE 512 57 Segments 1 58 Allocation inherit 59 Read ahead sectors auto 60 - currently set to 8192 61 Block device 253:1 62 63 --- Logical volume --- 64 LV Path /dev/cl/root 65 LV Name root 66 VG Name cl 67 LV UUID OddHW1-lehU-NcYT-uO19-nD7y-kdSx-PO3ZW0 68 LV Write Access read/write 69 LV Creation host, time serve1, 2017-09-27 23:42:53 +0800 70 LV Status available 71 # open 1 72 LV Size <17.00 GiB 73 Current LE 4351 74 Segments 1 75 Allocation inherit 76 Read ahead sectors auto 77 - currently set to 8192 78 Block device 253:0
说明:-l:指定逻辑卷的大小(LE数)
创建挂载目录、格式化挂载并写入文件测试:
1 #格式化LV逻辑卷 2 [root@serve1 ~]# mkfs.xfs /dev/vg1/lv1 3 meta-data=/dev/vg1/lv1 isize=512 agcount=4, agsize=1638400 blks 4 = sectsz=512 attr=2, projid32bit=1 5 = crc=1 finobt=0, sparse=0 6 data = bsize=4096 blocks=6553600, imaxpct=25 7 = sunit=0 swidth=0 blks 8 naming =version 2 bsize=4096 ascii-ci=0 ftype=1 9 log =internal log bsize=4096 blocks=3200, version=2 10 = sectsz=512 sunit=0 blks, lazy-count=1 11 realtime =none extsz=4096 blocks=0, rtextents=0 12 13 [root@serve1 ~]# mkfs.xfs /dev/vg1/lv2 14 meta-data=/dev/vg1/lv2 isize=512 agcount=4, agsize=982528 blks 15 = sectsz=512 attr=2, projid32bit=1 16 = crc=1 finobt=0, sparse=0 17 data = bsize=4096 blocks=3930112, imaxpct=25 18 = sunit=0 swidth=0 blks 19 naming =version 2 bsize=4096 ascii-ci=0 ftype=1 20 log =internal log bsize=4096 blocks=2560, version=2 21 = sectsz=512 sunit=0 blks, lazy-count=1 22 realtime =none extsz=4096 blocks=0, rtextents=0 23 24 #挂载逻辑卷 25 [root@serve1 ~]# mount /dev/vg1/lv1 /web 26 [root@serve1 ~]# mount /dev/vg1/lv2 /data 27 28 [root@serve1 ~]# df -hT 29 文件系统 类型 容量 已用 可用 已用% 挂载点 30 /dev/mapper/cl-root xfs 17G 4.3G 13G 26% / 31 devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev 32 tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm 33 tmpfs tmpfs 1.9G 9.1M 1.9G 1% /run 34 tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup 35 /dev/sda1 xfs 1014M 238M 777M 24% /boot 36 tmpfs tmpfs 378M 12K 378M 1% /run/user/42 37 tmpfs tmpfs 378M 0 378M 0% /run/user/0 38 /dev/mapper/vg1-lv1 xfs 25G 33M 25G 1% /web 39 /dev/mapper/vg1-lv2 xfs 15G 33M 15G 1% /data 40 41 [root@serve1 ~]# echo /dev/mapper/vg1-lv1 /web xfs defaults 0 0 >>/etc/fstab 42 [root@serve1 ~]# echo /dev/mapper/vg1-lv2 /date xfs defaults 0 0 >>/etc/fstab 43 44 [root@serve1 ~]# cat /etc/fstab 45 46 # 47 # /etc/fstab 48 # Created by anaconda on Wed Sep 27 23:42:53 2017 49 # 50 # Accessible filesystems, by reference, are maintained under '/dev/disk' 51 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info 52 # 53 /dev/mapper/cl-root / xfs defaults 0 0 54 UUID=4318c13a-c39b-484d-aaa0-ce6331eddc30 /boot xfs defaults 0 0 55 /dev/mapper/cl-swap swap swap defaults 0 0 56 /dev/mapper/vg1-lv1 /web xfs defaults 0 0 57 /dev/mapper/vg1-lv2 /date xfs defaults 0 0
说明:centos7支持xfs和etx4类型的文件系统,centos6不支持xfs类型的文件系统。
卸载删除LVM
思路:删除LVM的步骤和创建LVM的步骤是相反的。先删除LV逻辑卷,再删除VG卷组,最后删除PV物理卷
1 [root@serve1 ~]# lvremove /dev/vg1/lv1 2 Do you really want to remove active logical volume vg1/lv1? [y/n]: y 3 Logical volume "lv1" successfully removed 4 [root@serve1 ~]# lvs 5 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert 6 root cl -wi-ao---- <17.00g 7 swap cl -wi-ao---- 2.00g 8 9 #删除VG1卷组 10 [root@serve1 ~]# vgremove vg1 11 Volume group "vg1" successfully removed 12 13 #查看VG卷组状态 14 [root@serve1 ~]# vgs 15 VG #PV #LV #SN Attr VSize VFree 16 cl 1 2 0 wz--n- <19.00g 0 17 18 #删除sd[b-c]物理卷 19 [root@serve1 ~]# pvremove /dev/sd[b-c] 20 Labels on physical volume "/dev/sdb" successfully wiped. 21 Labels on physical volume "/dev/sdc" successfully wiped. 22 23 #查看PV物理卷状态 24 [root@serve1 ~]# pvs 25 PV VG Fmt Attr PSize PFree 26 /dev/sda2 cl lvm2 a-- <19.00g 0 27 28 #最后注释或删掉/etc/fstab里面逻辑卷的挂载信息。