1.逻辑卷LVM简介
(1)目的:
管理磁盘的一种方式,性质与基本磁盘无异
(2)特点:
随意扩张大小,缩减大小,快照备份。
(3)流程对比:
基本分区(MBR|GPT) ----> Filesystem ----> mount
逻辑卷 ----> Filesystem ----> mount
(4)工作原理:
名词
PV:物理卷(Physical volume)
VG:卷组(Volume Group)
LV:逻辑卷(Logical Volume)
PE:物理块(Physical Extent)
LE:逻辑块(Logical Extent)
图示:
2.创建LVM
(1)添加物理磁盘并查看
[root@server0 ~]# ll /dev/sd* ----查看添加的物理磁盘
brw-rw----. 1 root disk 253, 32 Jun 6 17:38 /dev/sdc
brw-rw----. 1 root disk 253, 48 Jun 6 17:38 /dev/sdd
brw-rw----. 1 root disk 253, 64 Jun 6 17:38 /dev/sde
(2)创建物理卷PV
将物理磁盘,转换成物理卷-PV
[root@server0 ~]# pvcreate /dev/sdc
查看PV信息
方法1:# pvscan
方法2 : # pvs
方法3 :# pvdisplay
(3)创建卷组VG
创建卷组
[root@server0 ~]# vgcreate vg1 /dev/sdc
查看卷组信息
第一种方法,查看卷组的摘要信息。卷组名,物理卷数量,逻辑卷数量,大小等。
[root@server0 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 0 0 wz--n- 2.00g 2.00g
第二种方法,扫描卷组信息。
[root@server0 ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg1" using metadata type lvm2
第三种方法。显示卷组详细信息。
[root@server0 ~]# vgdisplay
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 2.00 GiB //重点观察
PE Size 4.00 MiB //重点观察
Total PE 511 //重点观察
Alloc PE / Size 0 / 0
Free PE / Size 511 / 2.00 GiB
VG UUID 7E4tlj-l0a2-ph52-OytH-eaq7-58K6-2S4n8V
(4)创建逻辑卷LV
[root@server0 ~]# lvcreate -L 200M -n lv2 vg1
-L 是指 指定创建逻辑卷的大小位200M
-n 是指定逻辑卷的名字为lv2
vg1是卷组的名字
查看逻辑卷LV
[root@server0 ~]# lvscan
ACTIVE '/dev/vg1/lv1' [400.00 MiB] inherit
ACTIVE '/dev/vg1/lv2' [200.00 MiB] inherit
(5)创建文件系统(格式化)并挂载
创建文件系统
[root@server0 ~]# mkfs.ext4 /dev/vg1/lv2
创建挂载点
[root@server0 ~]# mkdir /mnt/lv2
方法一:手动挂载
挂载
[root@server0 ~]#mount /dev/vg1/lv2 /mnt/lv2
方法二:自动挂载
#vim /etc/fstab
在/etc/fstab文件最后一行添加下列一行命令
/dev/vg1/lv1或UUID /mnt/lv2 ext4 defaults 0 0
磁盘分区 或UUID 挂载点 文件系统 属性 压缩 检测
#mount -a ----全部挂载( mount -a 的意思是将/etc/fstab的所有内容重新加载)
(6)查看挂载结果
# df -hT
3.卷组VG管理
(1)==扩大VG vgextend==
第一步,创建PV。而后使用第二部,增加到VG中。
[root@server0 ~]# pvcreate /dev/sdd1
第二步:扩展VG(把创建的物理卷添加到卷组vg1中)
[root@server0 ~]# vgextend vg1 /dev/sdd1
第三步: 查看卷组的size变化
[root@server0 ~]# vgdisplay
VG Size 2.00 GiB //重点观察
PE Size 4.00 MiB //重点观察
Total PE 511 //重点观察
==减小VG vgextend==
==减小VG ,命令虽少。但千万需要注意的是数据迁移。
1.查看当前的VG中PV的使用情况
[root@server0 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc vg1 lvm2 a-- 2.00g 1.76g
/dev/sde vg1 lvm2 a-- 2.00g 2.00g
注意观察,PV的空间。一个是使用过的,一个是满的
2. pvmove,会将sdc中的数据,移动到sde中。
[root@server0 ~]# pvmove /dev/sdc
/dev/sdc: Moved: 16.7%
/dev/sdc: Moved: 100.0%
可以看到移动过程。
3.再次查看,空间已经发生变化。
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdc vg1 lvm2 a-- <2.00g <2.00g
/dev/sde vg1 lvm2 a-- <2.00g 1.80g
4.vgreduce VG缩减。
[root@server0 ~]# vgreduce vg1 /dev/sdd
Removed "/dev/sdd" from volume group "vg1"
5.再次观察,VG中少了一个PV
[root@server0 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 2 0 wz--n- 2.00g 1.80g
观察,PV的数量变少了。
(2)逻辑卷lv扩容
1.查看VG空间。
[root@server0 ~]# vgs -------------也可以使用 #df -hT
VG #PV #LV #SN Attr VSize VFree
vg1 2 2 0 wz--n- 1.88g 1.00g
请观察,VG是否有剩余空间。
2.扩容LV。
[root@server0 ~]# lvextend -L +100M /dev/vg1/lv2
增加100M空间,给lv2
3.FS扩容---刷新一下,扩容更新 (把更改的大小写入到fs中,如果不执行这一步,扩容操作后用#df -hT 查看容量大小不会更新)
[root@server0 ~]# resize2fs /dev/vg1/lv2
4.测试命令------->向逻辑卷中写东西
[root@server0 ~]# dd < /dev/zero > /mnt/lv2/file.txt bs=2M count=300
逻辑卷lv减容
逻辑卷/dev/vg1/lv2,大小400M,并挂载到/mnt/lv2
需要先将lv卸载(umount),再进行减容操作。
1.首先查看磁盘使用情况-----#df -hT
注意分区大小400M
/dev/mapper/vg1-lv2 ext4 380M 2.3M 356M 1% /mnt/lv2
2.卸载 ---------------#umount /dev/vg1/lv2
3.调整分区大小
#e2fsck -f /dev/vg1/lv2 ------检测磁盘是否出错
#resize2fs -p /dev/vg1/lv2 200M -----把更新的大小的信息发送给FS文件系统进行刷新
4、设置空闲空间,减容
#lvreduce -L 200M /dev/vg1/lv2
5、挂载上/mnt/lv2,查看磁盘使用情况
#mount /dev/vg1/lv2 /mnt/lv2/
#df -h
看到分区大小已经200M
/dev/mapper/vg1-lv2 ext4 186M 1.6M 171M 1% /mnt
注意
不要对已经挂载的LV进行兼容,会损坏文件系统。
千万注意,缩减后的LV大小,要大于存储数据的大小。
(重新格式化才能用)
更新XFS文件系统
如果您的文件系统,不是EXT4。那请用下列命令来更新XFS文件系统
xfs的LVM不支持缩容,只可以扩容
xfs文件系统扩容请注意,不同的文件系统,扩容指令不同。
[root@server0 ~]# xfs_growfs /dev/vg1/lv1
4.命令归类汇总图
VG减容时,数据迁移命令# pvmove /dev/sdc(想迁移数据的磁盘)
5.逻辑卷LVM卸载流程
lvm卸载流程
1.umount #umount /mnt/lv2(挂载点)
2.删除LV。 #lvremove /dev/vg1/lv2
3.将PV从所在的VG中删除。
4.删除VG。
6.LVM快照snapshot
(1)快照的目的
快速-------备份数据。
(2)创建快照 (EXT4)
第一步:创建快照 卷(EXT4)
[root@server0 ~]# lvcreate -L 128M -s -n lv2-snap /dev/vg1/lv2
或者这样看呢,创建LV,名字lv2-snap,根据lv2进行快照,大小128M
lvcreate -n lv2-snap -s /dev/vg1/lv2 -L 128M -s(snapshot快照)
注意:制作快照受VG大小的影响(VG要有足够的空间去创建这个快照)
第二步: 查询快照卷大小。
[root@server0 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 768.00m
lv2 vg1 owi-aos--- 512.00m
lv2-snap vg1 swi-aos--- 128.00m lv2 5.92
第三步:挂载快照卷,恢复数据(验证)
将快照卷挂载,拷贝出数据。可以用作回复数据使用了。
[root@server0 ~]# mkdir /mnt/lv2-snap
[root@server0 ~]# mount -o ro /dev/vg1/lv2-snap /mnt/lv2-snap/
注释: -o ---options 来描述设备的挂载方式为只读readonly
ro----readonly
注意:提示xfs文件系统快照注意事项
XFS:不识别uuid ,所以需要单独加上一个-o nouuid 来忽略掉。就可以使用xfs的快照了。
[root@server0 ~]# mount -o nouuid,ro /dev/vg1/lv1-snap /mnt/lv1-snap/
挂载快照,尽量使用ro的方式,将不会破坏快照卷中的数据
7.交换分区管理 Swap
(1)作用:
"提升"内存的容量,防止OOM(Out Of Memory)
(2)swap大小
推荐-------------设置交换分区大小为内存的2倍
生产-------------大于 4GB 而小于 16GB 内存的系统,最小需要 4GB 交换空间;
大于 16GB 而小于 64GB 内存的系统,最小需要 8GB 交换空间;
大于 64GB 而小于 256GB 内存的系统,最小需要 16GB 交换空间。
(3)查看当前的交换分区
一、查看当前的交换分区
[root@server0 ~]# free -m ----> m(以兆为单位查看)
total used free shared buff/cache availableMem: 489 140 145 4 202 304
Swap: 0 0 0
二、增加交换分区----(可以是分区或者LVM或者File)
1. 准备分区
(准备将/dev/sde磁盘,划分为1G分区)
[root@server0 ~]# fdisk /dev/sde (按 t 转换分区的 ID 为82)
[root@server0 ~]# partprobe /dev/sde ----刷新做好的分区
[root@server0 ~]# ll /dev/sde* ----查看做好的分区
brw-rw----. 1 root disk 253, 16 12月 6 10:18 /dev/sde
brw-rw----. 1 root disk 253, 17 12月 6 10:18 /dev/sde1
2.格式化
[root@server0 ~]# mkswap /dev/sde1
3.挂载
[root@server0 ~]# blkid /dev/sde1 ------查看/dev/sde1的UUID
/dev/sde1: UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" TYPE="swap"
[root@server0 ~]# vim /etc/fstab -------进开机默认启动文件,在最后一行添加
UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap swap defaults 0 0
挂载点 文件系统 属性 不压缩 不检测
4.查看
[root@server0 ~]# swapon -s
Filename Type Size Used Priority(优先级)
/dev/vdb1 partition 524284 0 1
扩展:对交换分区调优
1. swap分区的优先级(Priority)从高到低依次使用,最高32767,最低优先级是0
这样设置使得Linux并行的使用优先级相同的swap分区(Priority = 1的分区),这会大幅的提高对swap的读写。当这些分区满了,就会使用较低优先级swap分区(Priority = 0的分区)
挂载时,使用相同的优先级
[root@server0 ~]# vim /etc/fstab
UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap swap defaults,pri=1 0 0
UUID="ea5b1c77-e540-465c-9644-0d75457f8b45" swap swap defaults,pri=1 0 0
pri是优先级的意思,设置相同即可。
[root@server0 ~]# swapon -a ------重新都挂载一遍,自动启动所有SWAP装置
Filename Type Size Used Priority
/dev/sdb1 partition 524284 0 1
/dev/sdc1 partition 524284 0 1