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.
原文地址:https://www.cnblogs.com/asker009/p/10282800.html