linux磁盘到文件系统大体结构: 磁盘-->(LVM RAID等) --> 文件系统
LVM
Logical Volume Manage(逻辑卷管理)
是linux环境下对底层磁盘的一种管理机制(方式),处在物理磁盘和文件系统之间
PV
Physical Volume(物理卷)
VG
Volume Group(卷组)
LV
Logical Volume(逻辑卷)
最小存储单位为: PE
总结:
名称 最小存储单位
硬盘 扇区(512字节)
文件系统 block(1K 或 4K)
RAID chunk(512K) mdadm -c
LVM pe (16M 自己定义)
步骤
添加一块硬盘
准备分区
[root@localhost ~]#fdisk /dev/sdc
[root@localhost ~]# ls /dev/sdc*
/dev/sdc /dev/sdc1 /dev/sdc2 /dev/sdc3
制作PV
[root@localhost ~]# rpm -qf `which pvcreate`
lvm2-2.02.130-5.el7.x86_64
[root@localhost ~]# pvcreate /dev/sdc{1,2}
Physical volume "/dev/sdc1" successfully created
Physical volume "/dev/sdc2" successfully created
制作VG
[root@localhost ~]# vgcreate Vg1 /dev/sdc{1,2}
Volume group "Vg1" successfully created
制作LV
[root@localhost ~]# lvcreate -n LV1 -L 150M Vg1 #-n 名字 #-L 大小
Rounding up size to full physical extent 152.00 MiB
Logical volume "LV1" created.
LV层次结构图:
各种查看:
#pvs #pvscan #pvdisplay
#vgs #vgscan #vgdisplay
#lvs #lvscan #lvdisplay
[root@localhost ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sdc1
VG Name Vg1
PV Size 100.00 MiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 24
Free PE 0
Allocated PE 24
PV UUID 33mepD-QNke-yXE5-Fomb-hnCe-GLE7-4DU4bU
--- Physical volume ---
PV Name /dev/sdc2
VG Name Vg1
PV Size 100.00 MiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 24
Free PE 10
Allocated PE 14
PV UUID tlwhsJ-33nM-77Wf-4p42-YWua-6ven-A2gom0
创建时指定PE大小
[root@localhost ~]# vgcreate-s 16M Vg1 /dev/sdc1 /dev/sdc2 #-s指定PE的大小
使用:
格式化
[root@localhost ~]# mkfs.ext4 /dev/Vg1/LV1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
38912 inodes, 155648 blocks
7782 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=33816576
19 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
挂载
[root@localhost ~]# mount /dev/Vg1/LV1 /opt/
[root@localhost ~]# mount
...../dev/mapper/Vg1-LV1 on /opt type ext4 (rw,relatime,data=ordered)
[root@localhost ~]# ll /dev/Vg1/LV1
lrwxrwxrwx 1 root root 7 Dec 2 15:42 /dev/Vg1/LV1 -> ../dm-0
[root@localhost ~]# ll /dev/mapper/Vg1-LV1
lrwxrwxrwx 1 root root 7 Dec 2 15:42 /dev/mapper/Vg1-LV1 -> ../dm-0
LV扩展:
LVM支持动态扩容
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
Vg1 2 1 0 wz--n- 192.00m 40.00m
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
LV1 Vg1 -wi-ao---- 152.00m
[root@localhost ~]# lvextend -L +30M /dev/Vg1/LV1
Rounding size to boundary between physical extents: 32.00 MiB
Size of logical volume Vg1/LV1 changed from 152.00 MiB (38 extents) to 184.00 MiB (46 extents).
Logical volume LV1 successfully resized.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
LV1 Vg1 -wi-ao---- 184.00m
[root@localhost ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/Vg1-LV1 144M 1.6M 132M 2% /opt
#说明 只从磁盘扩展到lv 还未到文件系统中去
[root@localhost ~]# resize2fs /dev/Vg1/LV1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/Vg1/LV1 is mounted on /opt; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 2
The filesystem on /dev/Vg1/LV1 is now 188416 blocks long.
[root@localhost ~]# df -lh #扩展成功
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/Vg1-LV1 175M 1.6M 161M 1% /opt
VG扩展:
[root@localhost ~]# vgextend Vg1 /dev/sdc3
Physical volume "/dev/sdc3" successfully created
Volume group "Vg1" successfully extended
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 Vg1 lvm2 a-- 96.00m 0
/dev/sdc2 Vg1 lvm2 a-- 96.00m 8.00m
/dev/sdc3 Vg1 lvm2 a-- 96.00m 96.00m #扩展成功
VG缩小:
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 Vg1 lvm2 a-- 96.00m 0
/dev/sdc2 Vg1 lvm2 a-- 96.00m 8.00m
/dev/sdc3 Vg1 lvm2 a-- 96.00m 96.00m
[root@localhost ~]# vgreduce Vg1 /dev/sdc3
Removed "/dev/sdc3" from volume group "Vg1"
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 Vg1 lvm2 a-- 96.00m 0
/dev/sdc2 Vg1 lvm2 a-- 96.00m 8.00m
/dev/sdc3 lvm2 --- 100.00m 100.00m
[root@localhost ~]# pvremove /dev/sdc3
Labels on physical volume "/dev/sdc3" successfully wiped
LV移除:
[root@localhost ~]# umount /opt/
[root@localhost ~]# lvremove /dev/Vg1/LV1
Do you really want to remove active logical volume LV1? [y/n]: y
Logical volume "LV1" successfully removed
VG移除:
[root@localhost ~]# vgremove Vg1
Volume group "Vg1" successfully removed
PV移除:
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 lvm2 --- 100.00m 100.00m
/dev/sdc2 lvm2 --- 100.00m 100.00m
[root@localhost ~]# pvremove /dev/sdc1
Labels on physical volume "/dev/sdc1" successfully wiped
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc2 lvm2 --- 100.00m 100.00m
[root@localhost ~]# pvremove /dev/sdc2
Labels on physical volume "/dev/sdc2" successfully wiped
[root@localhost ~]# pvs
[root@localhost ~]#
LVM快照
lvm 快照有两大用途,一是用来克隆虚拟机 例如 做 xen虚拟机时, 可先新建一台完整虚拟机, 假设大小为10G 然后我们可以在这台10G虚拟机上
创建一个3G的快照 接着通过这个3G快照启动虚拟机,做完实验后 可以直接删除快照而保持完整虚拟机的纯净
lvm快照的第二大用途是实时备份(momet-in-time), 即为了保持系统的一致性,我们先做一个快照冻结当前系统状态,这样快照里面的内容可
暂时保持不变,系统本身继续运行,通过备份快照来实现不中断服务的备份
原来有一个lv的基础上
#lvcreate -s -n lv_NAME_bak -L 200M /dev/Vg1/LV1
#创建一个名字为lv_NAME_bak 大小 为200M的快照
#-s snapshot -n name
[root@localhost ~]# lvcreate -s -n lvl_sp -L 30M /dev/Vg1/LV1
Rounding up size to full physical extent 32.00 MiB
Logical volume "lvl_sp" created.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
LV1 Vg1 owi-a-s--- 152.00m
lvl_sp Vg1 swi-a-s--- 32.00m LV1 0.00
[root@localhost ~]# mount /dev/Vg1/lvl_sp1 /tmp/lv1-back/
[root@localhost ~]# cp /etc/passwd /opt/
[root@localhost ~]# ls /opt/ #LV1挂在点
lost+found/ passwd
[root@localhost ~]# ls /tmp/lv1-back/ #lvl_sp1挂在点
lost+found passwd