LVM (Logic Volume Management,逻辑卷管理),是传统商业Unix就带有的一项高级磁盘管理工具,异常强大。后来LVM移植到了Linux操作系统上,尽管不像原来Unix版本那么强大,但瘦死的骆驼比马大,Linux的LVM仍然非常强大,可以在生产运行系统上面直接在线扩展硬盘分区,可以把分区umount以后收缩分区大小,还可以在系统运行过程中把一个分区从一块硬盘搬到另一块硬盘上面去等等,简直就像变魔术,而且这一切都可以在一个繁忙运行的系统上面直接操作,不会对你的系统运行产生任何影响,很安全。
一、LVM系统分区
#安装系统的时候采用LVM分区
#先划分一个/boot分区
#将剩余空间划为一个物理卷(PV),创建一个名VolGroup00卷组(VG)
#并在VolGroup00卷组修建逻辑卷(LV)
二、LVM分区创建、大小调整
1、新添加一块硬盘,使用LVM对这个磁盘进行分区管理
#检测所有存储设备
lvmdiskscan #或者使用fdisk -l
#创建物理分区(将整块硬盘划为一个物理分区)
fdisk /dev/sdb
#创建物理卷(PV)
pvcreate /dev/sdb1
#创建卷组(VG)
#创建一个名为VolGroup01的卷组,并将/dev/sdb1这个刚创建的特理卷加放该卷组中
vgcreate VolGroup01 /dev/sdb1
当多个物理卷组合成一个卷组后时,LVM会在所有的物理卷上做类似格式化的工作,将每个物理卷切成一块一块的空间,这一块一块
的空间就称为PE(Physical Extent ),它的默认大小是4MB。
由于受内核限制的原因,一个逻辑卷(Logic Volume)最多只能包含65536个PE(Physical Extent),所以一个PE的大小就决定了
逻辑卷的最大容量,4 MB 的PE决定了单个逻辑卷最大容量为 256 GB,若希望使用大于256G的逻辑卷,则创建卷组时需要指定更大
的PE。在Red Hat Enterprise Linux AS 4中PE大小范围为8 KB 到 16GB,并且必须总是 2 的倍数。
例如,如果希望使用 64 MB 的PE创建卷组,这样逻辑卷最大容量就可以为4 TB,命令如下:
vgcreate - 64MB VolGroup01 /dev/sdb1
#查看卷组
[root@LVM ~]# vgdisplay
--- Volume group ---
VG Name VolGroup01 #卷组名
System ID
Format lvm2 #格式
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0 #最大逻辑卷的个数,0为不限制
Cur LV 1 #当前逻辑卷的个数
Open LV 0 #当前可用的逻辑卷个数
Max PV 0
Cur PV 1 #当前卷组中物理卷的个数
Act PV 1 #当前卷组中有一个活动的物理卷
VG Size 149.05 GB #卷组的总容量27.96G
PE Size 4.00 MB #卷组的最小I/O单位
Total PE 38156 #卷组中的桩点数
Alloc PE / Size 25600 / 100.00 GB #当前用掉的桩点和磁盘大小
Free PE / Size 12556 / 49.05 GB #当前可用的桩点和磁盘大小
VG UUID 7SPylC-awq8-t48R-1Yn5-UKxM-pd2C-VS4p1s
#创建逻辑卷(LV)
lvcreate -L 100G -n LogVol11 VolGroup01
#其中-L 100G表示这个LV的空间是100G
#-n LogVol11表示这个LV名字为LogVol11
#VolGroup01表示这个LV所在的VG
lvcreate -L 49G -n LogVol12 VolGroup01
#LV检测
lvscan
#格式化LV(格式化成ext3格式)
mkfs.ext3 /dev/VolGroup01/LogVol11
mkfs.ext3 /dev/VolGroup01/LogVol12
#挂载到普通目录上
mkdir /data1
mkdir /data2
mount /dev/VolGroup01/LogVol11 /data1
mount /dev/VolGroup01/LogVol12 /data2
#修改/etc/fstab可以在启动时候自动挂载到相应位置
vi /etc/fstab
#查看分区情况
df -h
2、调整LV的大小
#首先取消挂载
umount /data1
umount /data2
#/dev/VolGroup01/LogVol12减少10
e2fsck -f /dev/VolGroup01/LogVol12
resize2fs /dev/VolGroup01/LogVol12 39G #39G为调整后的磁盘空间大小
lvreduce -L-10G /dev/VolGroup01/LogVol12 #10G为减少的磁盘空间大小
resize2fs /dev/VolGroup01/LogVol12
#/dev/VolGroup01/LogVol11增加10G
lvextend -L+10G /dev/VolGroup01/LogVol11
e2fsck -f /dev/VolGroup01/LogVol11
resize2fs /dev/VolGroup01/LogVol11
#重新挂载
mount /dev/VolGroup01/LogVol11 /data1
mount /dev/VolGroup01/LogVol12 /data2
#再来查看下分区情况
df -h