在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.