CentOS LVM逻辑卷管理
在CentOS 挂载(U盘NTFS格式,新硬盘,增加交换分区,扩展根分区等)中扩展根分区部分用的就是LVM逻辑卷管理来进行扩展的。
1、为什么会有逻辑卷管理
传统磁盘管理是直接对硬盘分区进行访问,你如果磁盘不够了,再加一块硬盘,然后分区格式化,系统和应用直接对分区后的硬盘直接访问。
这个访问是独立,脱离原有目录系统的,比如在windows系统里经常出现C盘不够了,当时分区没想到windows会如此臃肿,要解决这个问题,
只能重新挂硬盘,借助第三方软件来动态的、非在线式的调整,而且,非常慢。
而LVM逻辑卷管理,可以动态的、实时的实现这个过程,非常快。LVM能做到这点,是LVM在磁盘上抽象了一层管理系统,系统和应用已经不
直接访问磁盘,而是访问这个抽象层,也就是LVM里的逻辑卷。
2、常用的LVM命令
物理卷
|
卷组 | 逻辑卷 | |
扫描 | pvscan(pvs) | vgscan(vgs) | lvscan(lvs) |
创建 | pvcreate | vgcreate | lvcreate |
显示 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩展 | vgextend | lvextend | |
缩减 | vgreduce | lvreduce |
3、逻辑卷示例
3.1、创建物理卷
查看目前物理卷 [root@bigdata-senior01 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb3 centos lvm2 a-- <15.00g 0 查看目前磁盘情况,这个命令比较多,这里用lsblk直观一些 [root@bigdata-senior01 ~]# 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 32G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 20G 0 disk ├─sdb1 8:17 0 2G 0 part /backup ├─sdb2 8:18 0 3G 0 part [SWAP] └─sdb3 8:19 0 15G 0 part └─centos-root 253:0 0 32G 0 lvm / sdc 8:32 0 1G 0 disk sdd 8:48 0 1G 0 disk sde 8:64 0 1G 0 disk sdf 8:80 0 1G 0 disk sdg 8:96 0 1G 0 disk sr0 11:0 1 4.2G 0 rom 把sdc,sdd,sde三个磁盘都创建成物理卷 [root@bigdata-senior01 ~]# pvcreate /dev/sdc /dev/sdd /dev/sde Physical volume "/dev/sdc" successfully created. Physical volume "/dev/sdd" successfully created. Physical volume "/dev/sde" successfully created. [root@bigdata-senior01 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb3 centos lvm2 a-- <15.00g 0 /dev/sdc lvm2 --- 1.00g 1.00g /dev/sdd lvm2 --- 1.00g 1.00g /dev/sde lvm2 --- 1.00g 1.00g
3.2、创建新卷组esdata
查看目前卷组情况 [root@bigdata-senior01 ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 2 2 0 wz--n- 33.99g 0 创建esdata卷组 [root@bigdata-senior01 ~]# vgcreate esdata /dev/sdc /dev/sdd /dev/sde Volume group "esdata" successfully created 再次查看 [root@bigdata-senior01 ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 2 2 0 wz--n- 33.99g 0 esdata 3 0 0 wz--n- <2.99g <2.99g
3.3、创建逻辑卷,800M大小
[root@bigdata-senior01 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 31.99g swap centos -wi-ao---- 2.00g 从esdata上创建名字为vo_esData的逻辑卷,800M [root@bigdata-senior01 ~]# lvcreate -n vo_esData -L 800M esdata Logical volume "vo_esData" created. [root@bigdata-senior01 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 31.99g swap centos -wi-ao---- 2.00g vo_esData esdata -wi-a----- 800.00m
3.4、格式化逻辑卷vo_esData
查看逻辑卷路径
[root@bigdata-senior01 ~]# lvdisplay --- Logical volume --- LV Path /dev/esdata/vo_esData LV Name vo_esData VG Name esdata LV UUID tMu3LD-Xxyy-10b4-Nbvn-SFe9-hn9W-kdFlDV LV Write Access read/write LV Creation host, time bigdata-senior01.home.com, 2019-01-17 15:39:59 +0800 LV Status available # open 0 LV Size 800.00 MiB Current LE 200 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2
格式化成ext4格式,为啥不是xfs格式?因为xfs缩减不方便 [root@bigdata-senior01 ~]# mkfs.ext4 /dev/esdata/vo_esData mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 51296 inodes, 204800 blocks 10240 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=209715200 7 block groups 32768 blocks per group, 32768 fragments per group 7328 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840 Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (4096 blocks): 完成 Writing superblocks and filesystem accounting information: 完成
3.5、挂载
[root@bigdata-senior01 /]# mount /dev/esdata/vo_esData /mnt/esdata
[root@bigdata-senior01 /]# ls /mnt/esdata
lost+found
[root@bigdata-senior01 /]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 32G 4.2G 28G 13% /
devtmpfs 901M 0 901M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 8.6M 904M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
/dev/sdb1 2.0G 67M 2.0G 4% /backup
tmpfs 183M 0 183M 0% /run/user/1004
/dev/mapper/esdata-vo_esData 772M 1.6M 714M 1% /mnt/esdata
3.6、扩展逻辑卷,把刚才创建的800M的逻辑卷扩展到1.5G,只要卷组里还有足够的资源,就可以扩展逻辑卷。
如果卷组的空间不够,还可以再加硬盘创建物理卷,然后,把物理卷加入到对应的卷组里,保证卷组的资源。
[root@bigdata-senior01 /]# vgs VG #PV #LV #SN Attr VSize VFree centos 2 2 0 wz--n- 33.99g 0 esdata 3 1 0 wz--n- <2.99g <2.21g #卷组还有2.21GB的空间可用 [root@bigdata-senior01 /]# vgdisplay --- Volume group --- VG Name esdata System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 3 Act PV 3 VG Size <2.99 GiB PE Size 4.00 MiB Total PE 765 Alloc PE / Size 200 / 800.00 MiB Free PE / Size 565 / <2.21 GiB #卷组还有2.21GB的空间可用 VG UUID HhfZYk-xAbw-oYGP-S2bc-r53K-CxUO-ds2NUi [root@bigdata-senior01 /]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 31.99g swap centos -wi-ao---- 2.00g vo_esData esdata -wi-ao---- 800.00m [root@bigdata-senior01 /]# lvextend -L 1.5G /dev/esdata/vo_esData Size of logical volume esdata/vo_esData changed from 800.00 MiB (200 extents) to 1.50 GiB (384 extents). Logical volume esdata/vo_esData successfully resized. [root@bigdata-senior01 /]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 31.99g swap centos -wi-ao---- 2.00g vo_esData esdata -wi-ao---- 1.50g [root@bigdata-senior01 /]# vgs VG #PV #LV #SN Attr VSize VFree centos 2 2 0 wz--n- 33.99g 0 esdata 3 1 0 wz--n- <2.99g <1.49g
卸载设备,然后才能拉伸文件系统容量
[root@bigdata-senior01 /]# umount /dev/esdata/vo_esData
[root@bigdata-senior01 /]# e2fsck /dev/esdata/vo_esData
e2fsck 1.42.9 (28-Dec-2013)
/dev/esdata/vo_esData: clean, 11/51296 files, 7726/204800 blocks
[root@bigdata-senior01 /]# resize2fs /dev/esdata/vo_esData
resize2fs 1.42.9 (28-Dec-2013)
请先运行 'e2fsck -f /dev/esdata/vo_esData'.
[root@bigdata-senior01 /]# e2fsck -f /dev/esdata/vo_esData
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/esdata/vo_esData: 11/51296 files (0.0% non-contiguous), 7726/204800 blocks
[root@bigdata-senior01 /]# resize2fs /dev/esdata/vo_esData
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/esdata/vo_esData to 393216 (4k) blocks.
The filesystem on /dev/esdata/vo_esData is now 393216 blocks long.
[root@bigdata-senior01 /]# mount /dev/esdata/vo_esData /mnt/esdata
[root@bigdata-senior01 /]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 32G 4.2G 28G 13% /
devtmpfs 901M 0 901M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 8.6M 904M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
/dev/sdb1 2.0G 67M 2.0G 4% /backup
tmpfs 183M 0 183M 0% /run/user/1004
/dev/mapper/esdata-vo_esData 1.5G 2.4M 1.4G 1% /mnt/esdata
3.7、缩小逻辑卷容量
[root@bigdata-senior01 ~]# umount /dev/esdata/vo_esData [root@bigdata-senior01 ~]# e2fsck -f /dev/esdata/vo_esData e2fsck 1.42.9 (28-Dec-2013) 第一步: 检查inode,块,和大小 第二步: 检查目录结构 第3步: 检查目录连接性 Pass 4: Checking reference counts 第5步: 检查簇概要信息 /dev/esdata/vo_esData: 11/87936 files (0.0% non-contiguous), 10228/393216 blocks #减少文件系统到1G左右 [root@bigdata-senior01 ~]# resize2fs /dev/esdata/vo_esData 1G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/esdata/vo_esData to 262144 (4k) blocks. The filesystem on /dev/esdata/vo_esData is now 262144 blocks long. #减少逻辑卷到1G,可能会损坏数据 [root@bigdata-senior01 ~]# lvreduce -L 1G /dev/esdata/vo_esData WARNING: Reducing active logical volume to 1.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce esdata/vo_esData? [y/n]: y Size of logical volume esdata/vo_esData changed from 1.50 GiB (384 extents) to 1.00 GiB (256 extents). Logical volume esdata/vo_esData successfully resized. [root@bigdata-senior01 ~]# mount /dev/esdata/vo_esData /mnt/esdata [root@bigdata-senior01 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 32G 4.2G 28G 13% / devtmpfs 901M 0 901M 0% /dev tmpfs 912M 0 912M 0% /dev/shm tmpfs 912M 8.7M 904M 1% /run tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 1014M 143M 872M 15% /boot /dev/sdb1 2.0G 67M 2.0G 4% /backup tmpfs 183M 0 183M 0% /run/user/1004 /dev/mapper/esdata-vo_esData 994M 2.0M 925M 1% /mnt/esdata
3.8、逻辑卷里硬盘出问题怎么办?假设上例的/dev/sdc磁盘出现问题,如何处理?
先查看物理卷情况,/dev/sdc损坏的盘有数据,需要先把数据迁移
[root@bigdata-senior01 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb3 centos lvm2 a-- <15.00g 0 /dev/sdc esdata lvm2 a-- 1020.00m 0 /dev/sdd esdata lvm2 a-- 1020.00m 1016.00m /dev/sde esdata lvm2 a-- 1020.00m 1020.00m
迁移/dev/sdc数据到/dev/sde,确保目标盘空间够用 [root@bigdata-senior01 ~]# pvmove /dev/sdc /dev/sde /dev/sdc: Moved: 1.18% /dev/sdc: Moved: 100.00%
迁移完成 [root@bigdata-senior01 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb3 centos lvm2 a-- <15.00g 0 /dev/sdc esdata lvm2 a-- 1020.00m 1020.00m /dev/sdd esdata lvm2 a-- 1020.00m 1016.00m /dev/sde esdata lvm2 a-- 1020.00m 0
从卷组esdata里移除 /dev/sdc [root@bigdata-senior01 ~]# vgreduce esdata /dev/sdc Removed "/dev/sdc" from volume group "esdata" [root@bigdata-senior01 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb3 centos lvm2 a-- <15.00g 0 /dev/sdc lvm2 --- 1.00g 1.00g /dev/sdd esdata lvm2 a-- 1020.00m 1016.00m /dev/sde esdata lvm2 a-- 1020.00m 0 [root@bigdata-senior01 ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 2 2 0 wz--n- 33.99g 0 esdata 2 1 0 wz--n- 1.99g 1016.00m
移除物理卷/dev/sdc [root@bigdata-senior01 ~]# pvremove /dev/sdc Labels on physical volume "/dev/sdc" successfully wiped. [root@bigdata-senior01 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb3 centos lvm2 a-- <15.00g 0 /dev/sdd esdata lvm2 a-- 1020.00m 1016.00m /dev/sde esdata lvm2 a-- 1020.00m 0
3.9、修复的硬盘重新装回去(或者是一块新的,旧的已经安息)
[root@bigdata-senior01 ~]# 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 32G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 20G 0 disk ├─sdb1 8:17 0 2G 0 part /backup ├─sdb2 8:18 0 3G 0 part [SWAP] └─sdb3 8:19 0 15G 0 part └─centos-root 253:0 0 32G 0 lvm / sdc 8:32 0 1G 0 disk sdd 8:48 0 1G 0 disk └─esdata-vo_esData 253:2 0 1G 0 lvm /mnt/esdata sde 8:64 0 1G 0 disk └─esdata-vo_esData 253:2 0 1G 0 lvm /mnt/esdata sdf 8:80 0 1G 0 disk sdg 8:96 0 1G 0 disk sr0 11:0 1 4.2G 0 rom
重新把/dev/sdc创建物理卷 [root@bigdata-senior01 ~]# pvcreate /dev/sdc Physical volume "/dev/sdc" successfully created.
查看 [root@bigdata-senior01 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb3 centos lvm2 a-- <15.00g 0 /dev/sdc lvm2 --- 1.00g 1.00g /dev/sdd esdata lvm2 a-- 1020.00m 1016.00m /dev/sde esdata lvm2 a-- 1020.00m 0
扩充卷组esdata [root@bigdata-senior01 ~]# vgextend esdata /dev/sdc Volume group "esdata" successfully extended
[root@bigdata-senior01 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb3 centos lvm2 a-- <15.00g 0 /dev/sdc esdata lvm2 a-- 1020.00m 1020.00m /dev/sdd esdata lvm2 a-- 1020.00m 1016.00m /dev/sde esdata lvm2 a-- 1020.00m 0
[root@bigdata-senior01 ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 2 2 0 wz--n- 33.99g 0 esdata 3 1 0 wz--n- <2.99g <1.99g
逻辑卷根本不知道底层的硬盘已经换了一块。
4.0、逻辑卷的磁盘需要分区标识吗?
磁盘不分区就可以创建物理卷,但是我们依然可以用fdisk对磁盘进行分区标识,LVM的分区标识是8e,打上标识后,磁盘要转成普通磁盘使用需要重新分区,这也算一个安全手段。
我们也可以把磁盘分区几个区后,对其中某几个区创建物理卷。
5、删除逻辑卷
[root@bigdata-senior01 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 32G 4.2G 28G 13% / devtmpfs 901M 0 901M 0% /dev tmpfs 912M 0 912M 0% /dev/shm tmpfs 912M 8.7M 904M 1% /run tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 1014M 143M 872M 15% /boot /dev/sdb1 2.0G 67M 2.0G 4% /backup tmpfs 183M 0 183M 0% /run/user/1004 /dev/mapper/esdata-vo_esData 994M 2.0M 925M 1% /mnt/esdata 其实 /dev/esdata/vo_esData和/dev/mapper/esdata-vo_esData都是链接文件 [root@bigdata-senior01 ~]# ll /dev/esdata/vo_esData lrwxrwxrwx 1 root root 7 1月 17 17:18 /dev/esdata/vo_esData -> ../dm-2 [root@bigdata-senior01 ~]# ll /dev/mapper/esdata-vo_esData lrwxrwxrwx 1 root root 7 1月 17 17:18 /dev/mapper/esdata-vo_esData -> ../dm-2
卸载文件系统 [root@bigdata-senior01 ~]# umount /dev/esdata/vo_esData
移除逻辑卷 [root@bigdata-senior01 ~]# lvremove /dev/esdata/vo_esData Do you really want to remove active logical volume esdata/vo_esData? [y/n]: y Logical volume "vo_esData" successfully removed
移除卷组 [root@bigdata-senior01 ~]# vgremove esdata Volume group "esdata" successfully removed
移除物理卷 [root@bigdata-senior01 ~]# pvremove /dev/sdc /dev/sdd /dev/sde Labels on physical volume "/dev/sdc" successfully wiped. Labels on physical volume "/dev/sdd" successfully wiped. Labels on physical volume "/dev/sde" successfully wiped.