LVM制作

LVM的一些术语,必知的知识。

 

物理卷(physical volume):一个分区(比如windows下的c盘或者linux下的/dev/sda1注意是/dev/sda1不是/dev/sda。这是有区别的,/dev/sda指的是未经过格式化的磁盘。这里物理卷指的是一个经过格式化的分区。

 

卷组(Volume Group):多个物理卷的集合。卷组是不能直接使用的。

 

逻辑卷(logical volume):在卷组上开辟的空间,你可以将卷组,想成是一块拼接在一起的巨大未格式化的磁盘(这个磁盘还可以不断的有新的磁盘加进来)。而逻辑卷就是从这个卷组中格式化的分区。

 

 

PEphysical extent):整个卷组可以看成是由很多的PE构成的,PE的大小是可配置的,默认为4MB。简称pe

 

 

LElogical 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指定PE64M,也就是说我的卷组最多可以扩展到4T

注:在使用vgcreate 在创建卷组时,还可以指定PE的大小,需要加上-s参数来实现,PE大小范围为8 KB  16GB,并且必须总是 的倍数。一个卷组里面最多允许65534PE存在。默认设置的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的大小的参数,大小单位的可以用KMG表示KBMBGB-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

注:如果上边你在削减卷组的时候已经将逻辑卷删除了,那这里就不用挂载了。

你可能感兴趣的:(linux系统运维)