LVM的一些术语,必知的知识。
物理卷(physical volume):一个分区(比如windows下的c盘或者linux下的/dev/sda1注意是/dev/sda1不是/dev/sda。这是有区别的,/dev/sda指的是未经过格式化的磁盘。这里物理卷指的是一个经过格式化的分区。
卷组(Volume Group):多个物理卷的集合。卷组是不能直接使用的。
逻辑卷(logical volume):在卷组上开辟的空间,你可以将卷组,想成是一块拼接在一起的巨大未格式化的磁盘(这个磁盘还可以不断的有新的磁盘加进来)。而逻辑卷就是从这个卷组中格式化的分区。
PE(physical extent):整个卷组可以看成是由很多的PE构成的,PE的大小是可配置的,默认为4MB。简称pe
LE(logical extent):当卷组中开辟出了逻辑卷时,这个逻辑卷的基本组成单元就是LE,大小和PE相同并且也是一一对应的。
##直接进行LVM制作
一、创建物理卷(物理卷的创建需要有现成的分区,如果你的系统上没有现成可用的分区则需要先进行磁盘分区,我这里也没有,所以先进行分区)。
##先分区,如果有可用的分区直接创建物理卷即可
1.查看分区:fdisk -l ##查看可用的磁盘设备,我这里有个20G的磁盘可用。
2. 分区(跟着做即可):http://blog.chinaunix.net/uid-26557245-id-3134302.html
3. 格式化分区:mkfs -t ext3 /dev/sdb1
注:如果找不到分区,可以执行命令重读分区表:partprobe
##可以开始制作物理卷了
4.创建物理卷 :pvcreate /dev/sdb1 ##多个分区的话可以一起创建,用空格分开
二、创建卷组:vgcreate -s64M vgmysql /dev/sdb1 ##多个物理卷时,用空格隔开即可。-s指定PE为64M,也就是说我的卷组最多可以扩展到4T。
注:在使用vgcreate 在创建卷组时,还可以指定PE的大小,需要加上-s参数来实现,PE大小范围为8 KB 到 16GB,并且必须总是 2 的倍数。一个卷组里面最多允许65534个PE存在。默认设置的PE大小为4 MB,这表示卷组上创建的所有逻辑卷都以 4 MB 为增量单位来进行扩充或缩减,所以4 MB 的PE决定了单个逻辑卷最大容量为 256 GB,若希望使用大于256G的逻辑卷则创建卷组时指定更大的PE。
三、激活卷组(卷组必须激活才可以使用)
1.激活卷组:vgchange -a y vgmysql
2.查看下激活的卷组:vgdisplay
四、创建逻辑卷
1.创建逻辑卷:lvcreate -L 5G -n lvmysql1 vgmysql
注:-L是用来指定LVM的大小的参数,大小单位的可以用K、M、G表示KB、MB、GB。-n是用来指定LVM的名称。
2.查看下逻辑卷:lvdisplay
五、格式化逻辑卷(格式化后即可挂载使用):mkfs.ext3 /dev/mapper/vgmysql-lvmysql1
六、挂载逻辑卷:mount /dev/mapper/vgmysql-lvmysql1 /mnt/mysqldata
七、系统启动的时候自动挂载逻辑卷:
##vim /etc/fstab ##添加下边记录,自行更改目录名称
/dev/mapper/vgmysql-lvmysql1 /mnt/lvmtest ext3 defaults 0 0
八、重启后查看是否能挂载:fdisk -l
九、扩容卷组和逻辑卷
1. 扩容卷组(当然如果卷组中还有很多空间的话,直接扩容逻辑卷即可):
vgextend vgmysql /dev/sdc1 ##我这里有个可用的分区/dev/sdc1,没有的话自己找磁盘先分区
2. 查看下是否扩展了:vgdisplay ##
3. 扩容逻辑卷:lvextend -L +10G /dev/vgmysql/lvmysql1 ##扩了10G
4. 查看下是否扩成功了:lvdisplay
5. 拉伸物理边界:resize2fs /dev/vgmysql/lvmysql1 ##这不必须有的,上边扩容完逻辑卷,只是扩容了逻辑边界。物理边界也是需要扩展的。
6. 查看下df -lh ##看看是否扩容完毕
小结:扩容是在线扩容的,注意这是有风险的,为降低风险,尽量在磁盘读写负载较小的时候扩容。最重要的是:扩容前先备份,备份终于泰山。
附加:LVM其它非常用命令如下
1、挂载分区:mount /dev/sdc1 /mnt
2、卸载分区:umount /dev/sdc1
3、删除逻辑卷:lvremove /dev/mapper/vgmysql-lvmysql1
4、删除卷组:vgremove vgmysql
5、删除物理卷:pvremove /dev/sdb1 /dev/sdc1
6、删除分区:fdisk /dev/sdc
逻辑卷缩小:
1、卸载逻辑卷:umount /mnt/lvmtest/
2、缩小逻辑卷物理边界前的检查(必须):e2fsck -f /dev/vgmysql/lvmysql1
3、缩小逻辑卷的物理边界:resize2fs /dev/vgmysql/lvmysql1 10G
注:##10G表示缩小后的大小
4、缩小逻辑卷的逻辑边界:lvreduce -L -5G /dev/vgmysql/lvmysql1
注:-5G表示缩小5G大小,所以第三步中的大小是缩减前的总的大小减去这个值。
5、挂载上即可: mount /dev/vgmysql/lvmysql1 /mnt/lvmtest/
注:逻辑卷的缩小必须先卸载,也就是说不能在线缩小逻辑卷。最重要的是一定要备份数据,因为缩小的风险比扩容还大。
卷组的缩小:强烈不建议缩小卷组,宁可从新买磁盘也不缩小卷组。卷组作为逻辑卷的基础,不能轻易的缩小,缩小的话极易可能损坏当前逻辑卷上的数据。但为了全面这里给出卷组的缩小方法。一定注意,削减卷组前一定要备份数据,备份重于泰山。
1、查看当前机器上现有的卷组:vgs ##我这里缩小vgmysql这个卷组
2、查看当前卷组中的物理卷:pvs ##可以看出vgmysql卷组有两个物理卷
3、查看当前卷组中的逻辑卷:lvs ##这个vgmsyql卷组里边有个逻辑卷lvmysql1
4、卸载逻辑卷删除逻辑卷:umount /mnt/lvmtest
注:注意这一步可以不删除逻辑卷,当然前提是你的这个逻辑卷和你要削减的物理卷没关系(就是说你的这个逻辑卷没有使用要削减的物理卷的存储空间),如果后边在削减物理卷的时候削减不成功,提示物理卷在使用则必须先将逻辑卷删除后才能削减物理卷成功:lvremove /dev/vgmysql/lvmysql1
5、削减卷组(就是减少物理卷):vgreduce vgmysql /dev/sdc1 ##除掉物理卷/dev/sdc1
注:这里如果削减不成功,则说明这个物理卷被某些逻辑卷被使用着,所以需要先删除逻辑卷。当然如果能成功削减物理卷则不必删除逻辑卷了。
6、查看卷组中的逻辑卷是不是减少了:pvs ##看到卷组已经去掉了一个物理卷
7、挂载之前的逻辑卷:mount /dev/vgmysql/lvmysql1 /mnt/lvmtest
注:如果上边你在削减卷组的时候已经将逻辑卷删除了,那这里就不用挂载了。