CentOS LVM逻辑卷管理

CentOS 挂载(U盘NTFS格式,新硬盘,增加交换分区,扩展根分区等)中扩展根分区部分用的就是LVM逻辑卷管理来进行扩展的。

1、为什么会有逻辑卷管理

传统磁盘管理是直接对硬盘分区进行访问,你如果磁盘不够了,再加一块硬盘,然后分区格式化,系统和应用直接对分区后的硬盘直接访问。

这个访问是独立,脱离原有目录系统的,比如在windows系统里经常出现C盘不够了,当时分区没想到windows会如此臃肿,要解决这个问题,

只能重新挂硬盘,借助第三方软件来动态的、非在线式的调整,而且,非常慢。

而LVM逻辑卷管理,可以动态的、实时的实现这个过程,非常快。LVM能做到这点,是LVM在磁盘上抽象了一层管理系统,系统和应用已经不

直接访问磁盘,而是访问这个抽象层,也就是LVM里的逻辑卷。

CentOS 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.
上一篇:linux的存储管理(RALD) LVM 逻辑卷管理 虚拟阵列


下一篇:为java spring mvc app创建安装程序