lvm¶
lvm - logic volume manage
LVM基本术语¶
LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。首先我们讨论以下几个LVM术语:
物理存储介质(The physical media)
这里指系统的存储设备:硬盘,如:/dev/hda、/dev/sda等等,是存储系统最低层的存储单元。
物理卷(physicalvolume)
物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
逻辑卷(logicalvolume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
PE(physical extent)
每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
由于vg是多个PE(块)组成的,而且每个vg块的PE最大数量是65534。默认每个PE的大小是4m
也就是说默认的每个vg最大也就是4m乘65534=256G,因此PE块的大小决定了最终vg的大小。
PE的值可以是4,8,16,32,64。PE越小硬盘利于率越高,但是每个VG块的最大数量是65534,所以PE大小决定了VG卷组的大小。
准备好物理磁盘或分区¶
[root@alvin Desktop]# ls /dev/sdb
/dev/sdb
[root@alvin Desktop]# ls /dev/sdc
/dev/sdc
[root@alvin Desktop]# ls /dev/sdc*
/dev/sdc /dev/sdc1 /dev/sdc2
[root@alvin Desktop]# ls /dev/sdd
/dev/sdd
创建物理卷(pv)¶
[root@alvin Desktop]# pvcreate /dev/sdb
[root@alvin Desktop]# pvcreate /dev/sdc2
[root@alvin Desktop]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 a-- 80.00g 80.00g
/dev/sdc2 lvm2 a-- 39.99g 39.99g
创建卷组(vg)¶
vgcreate 参数说明
- -l:卷组上允许创建的最大逻辑卷数;
- -p:卷组中允许添加的最大物理卷数;
- -s:卷组上的物理卷的PE大小。
[root@alvin Desktop]# vgcreate /dev/vg0 /dev/sdb /dev/sdc2
Volume group "vg0" successfully created
[root@alvin Desktop]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 2 0 0 wz--n- 119.98g 119.98g
创建逻辑卷¶
说明:
-L | 指定创建的LV 的大小 |
-l | 指定创建的LV 的PE 数量 |
-n | LV的名字 |
[root@alvin Desktop]# lvcreate -L 10G -n /dev/vg0/lv01 /dev/vg0
Logical volume "lv01" created
[root@alvin Desktop]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv01 vg0 -wi-a---- 10.00g
格式后挂载使用¶
[root@alvin Desktop]# mkfs.ext4 /dev/vg0/lv01
[root@alvin Desktop]# mkdir /mnt/lv01
[root@alvin Desktop]# mount /dev/vg0/lv01 /mnt/lv01
[root@alvin Desktop]# vim /etc/fstab --设置开机自动挂载
查看逻辑卷状态¶
[root@alvin lv01]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg0 lvm2 a-- 80.00g 70.00g
/dev/sdc2 vg0 lvm2 a-- 39.98g 39.98g
[root@alvin lv01]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 2 1 0 wz--n- 119.98g 109.98g
[root@alvin lv01]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv01 vg0 -wi-ao--- 10.00g
******************************************************************************************
[root@alvin lv01]# pvdisplay /dev/sdb --详细显示pv状态
--- Physical volume ---
PV Name /dev/sdb
VG Name vg0
PV Size 80.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 20479
Free PE 17919
Allocated PE 2560
PV UUID Jqgzop-F0rK-gf8g-EwSZ-YsrM-eGYE-QojNTq
*********************************************************************************************
[root@alvin lv01]# vgdisplay vg0 --详细显示卷组的信息
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 119.98 GiB
PE Size 4.00 MiB
Total PE 30715
Alloc PE / Size 2560 / 10.00 GiB
Free PE / Size 28155 / 109.98 GiB
VG UUID VQ56JI-lHJs-yHhk-p1fD-oj0a-mWcV-FQMzGd
*********************************************************************************************
[root@alvin lv01]# lvdisplay /dev/vg0/lv01 --详细显示逻辑卷的信息
--- Logical volume ---
LV Path /dev/vg0/lv01
LV Name lv01
VG Name vg0
LV UUID o2sCgf-mnnn-N1pN-JqzC-BxTc-tMYr-yXj9NW
LV Write Access read/write
LV Creation host, time teacher.uplooking.com, 2015-04-08 16:51:55 +0800
LV Status available
# open 1
LV Size 10.00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
扩展vg¶
[root@alvin lv01]# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created
[root@alvin lv01]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg0 lvm2 a-- 80.00g 70.00g
/dev/sdc2 vg0 lvm2 a-- 39.98g 39.98g
/dev/sdd lvm2 a-- 80.00g 80.00g
[root@alvin lv01]# vgextend vg0 /dev/sdd --向vg中添加pv
Volume group "vg0" successfully extended
[root@alvin lv01]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 3 1 0 wz--n- 199.98g 189.98g
从卷组中移除pv¶
[root@alvin lv01]# vgreduce vg0 /dev/sdd
Removed "/dev/sdd" from volume group "vg0"
[root@alvin lv01]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 2 1 0 wz--n- 119.98g 109.98g
删除PV¶
[root@alvin lv01]# pvremove /dev/sdd
Labels on physical volume "/dev/sdd" successfully wiped
[root@alvin lv01]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg0 lvm2 a-- 80.00g 70.00g
/dev/sdc2 vg0 lvm2 a-- 39.98g 39.98g
在线扩展lv:¶
指定新增大小扩容¶
[root@alvin lv01]# lvextend -v -L +10G /dev/vg0/lv01
-v:显示创建过程
-L:指定扩展的大小 (+10G:扩展10G,30G:扩展到30G)
[root@alvin lv01]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv01 vg0 -wi-ao--- 20.00g
[root@alvin lv01]# df -h | grep lv01 --df查看没变化
/dev/mapper/vg0-lv01 9.9G 151M 9.2G 2% /mnt/lv01
[root@alvin lv01]# resize2fs /dev/vg0/lv01 --在线扩展文件系统
--如果报以下错误:please run "e2fsck -f /dev/vg0/lv01" first
--直接执行提示的命令即可(e2fsck -f /dev/vg0/lv01)
[root@alvin lv01]# df -h | grep lv01
/dev/mapper/vg0-lv01 20G 156M 19G 1% /mnt/lv01
将剩余空间全部分配给指定逻辑并同时扩容文件系统¶
-r 参数就是在扩容逻辑卷的同时也刷新了文件系统,就不用再执行resize2ft了。
lvextend -r -l +100%free -n /dev/centos/root
回缩逻辑卷¶
生产环境中要先备份数据,再回缩文件系统
[root@alvin ~]# resize2fs /dev/vg0/lv01 10G --回缩文件系统
[root@alvin ~]# e2fsck -f /dev/vg0/lv01 --磁盘检测
[root@alvin ~]# lvreduce -v -L 10G /dev/vg0/lv01 --回缩逻辑卷(回缩到10G)
[root@alvin ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv01 vg0 -wi-a---- 10.00g
[root@alvin ~]# mount /dev/vg0/lv01 /mnt/lv01
[root@alvin ~]# df -h
拆除逻辑卷的过程¶
[root@alvin ~]# umount /mnt/lv01 --卸载
[root@alvin ~]# vim /etc/fstab --清除开机自动启动项
[root@alvin ~]# lvremove /dev/vg0/lv01 --删除lv
[root@alvin ~]# vgremove vg0 --删除vg
[root@alvin ~]# pvremove /dev/sdc2 --删除pv
[root@alvin ~]# pvremove /dev/sdb --删除pv
查看lv的物理分布¶
[root@alvin ~]# lsblk -f --查看lv的物理分布
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 7631883b-5824-4ed5-a730-b8d2ea45c14d /boot
├─sda2 ext4 b18be717-ca34-41c2-8291-994f0a07d9a2 /
├─sda3 swap 116f98e8-74bf-44e2-8787-07a9271ae2e5 [SWAP]
├─sda4
├─sda5 ext2 0ecfcbe1-d9a3-4af5-b11a-e754e61725bc /sda5
├─sda6 ext4 soft 624daed7-28e7-462e-bb59-c0f806994167 /sda6
├─sda7 swap 5d858574-18c1-4d62-9b84-5ec6dc205ae9 [SWAP]
└─sda8 ext4 9a216799-0764-4b9f-b81f-ce82361ebc10 /sda8
sdb LVM2_memb Aq6Dbw-PEX1-jsfX-pjb6-cKsQ-lzhr-61lj0y
└─vg0-lv01 (dm-0)
sdc
├─sdc1 linux_rai teacher.uplooking.com:0 33bcd246-b3a6-77d0-7666-a8f6b13f6521
└─sdc2 LVM2_memb 11C3kp-VePT-6Xfc-9m4G-4kYY-Tnmz-DEUcoz
sdd LVM2_memb xhdIyN-HRvB-wONX-hedx-mO2S-DatH-9332FJ
sr0 iso9660 RHEL_6.4 x86_64 Disc 1
fdisk分区¶
fdisk /dev/sdb
p #打印看看
n #开始分区
#回车
#回车
+512M
w
partprobe #通知内核重新读取分区表