LVM学习点滴
创建一个凌驾于RAID上的LVM
1、底层RAID的搭建
[root@linux ~]#fdisk /dev/sda          #创建分区并把分设置为raid格式(fd)
[root@linux ~]#mknod /dev/md0 b 9 0     #创建RAID使用的块文件
[root@linux ~]#mdadm -C /dev/md4 -l 5 -n 3 -x 2 /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8 /dev/sda9 
                         #将分区sda5、sda6、sda7做成raid5格式并将sda8、sda9做为热备盘使用md4块设备。
[root@linux ~]# mdadm --detail /dev/md0       #查看刚刚创建的raid5的详细信息。
我们可以通过上面的操作创建多个raid阵列来做到物理层的安全冗余。
2、LVM的搭建
[root@linux ~]# pvcreate /dev/md0           #将创建的raid设备初始化为PhysicalVolume。
[root@linux ~]# pvdisplay /dev/md0          #查看刚刚初始化成pv的raid设备


[root@linux ~]# vgcreate home /dev/md0 /dev/md1  #将相应的pv添加到VolumeGroup并以home为vgname
[root@linux ~]# vgdisplay home                   #查看刚刚创建的VG

[root@linux ~]# lvcreate -L 200M -n home home    #在VG(home)上创建以home为名称的logicalvolume设备设定大小为200M
[root@linux ~]# lvdisplay home                   #查看相应logicalvolume设备详细信息

3、LVM的管理
扩大lv空间(假设vg空间已经没有而且pv设备也都是新添加的)
将新添加的设备做raid搭建pv初始化等操作
[root@linux ~]# vgextend home /dev/md2           #将做好的pv设备添加在vg(home)当中去
[root@linux ~]# vgdisplay home                   #查看下现在vg的容量应该已经增加了
[root@linux ~]# lvextend /dev/home/home -L 300G  #将lv设备扩展成自己想要的大小
[root@linux ~]# resize2fs /dev/home/home         #在线同步格式新添加lv容量
这里可以使用df -h查看下刚刚新扩展的目录容量比以前大了。

减小lv空间
[root@linux ~]# umount /dev/home/home            #卸载挂载的lv设备
[root@linux ~]# e2fsck -f /dev/home/home         #检测分区情况
[root@linux ~]# resize2fs /dev/home/home 200G  #将lv调整成自己想要的大小(注意:最好大于原实际数据的大小)
[root@linux ~]# lvreduce /dev/home/home -L 200G  #再将lv中不使用的pe在pv中释放掉(如果不做这一步操作将无法减小vg)
然后再将设备挂载到相应目录并用df -h查看分区空间已经减小为200G了,而且里面的数据还都在。

从vg空间中取出空闲的pv
减小vg空间是为了把vg当中空闲的pv取出,可是当我们在vg上面创建lv的时候就会把vg当中的pv对应到相应的lv,所以我们要想取出空闲的pv就要先把lv卸载掉并释放出所占用的pv上面的pe。
[root@linux ~]# umount /dev/home/home            #卸载挂载的lv设备
[root@linux ~]# e2fsck -f /dev/home/home         #检测分区情况
[root@linux ~]# resize2fs /dev/home/home 200G  #将lv调整成自己想要的大小(注意:最好大于原实际数据的大小)
[root@linux ~]# lvreduce /dev/home/home -L 200G  #再将lv中不使用的pe在pv中释放掉(如果不做这一步操作将无法减小vg)
以上4步是减小lv空间的操作
[root@linux ~]# pvdisplay                        #查看所有PV当Allocated PE为0时才可以从vg当中来移除
  --- Physical volume ---
  PV Name               /dev/md2
  VG Name               home
  PV Size               407.50 MB / not usable 3.50 MB
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              101
  Free PE               101
  Allocated PE          0
  PV UUID               rJ7ydC-wcLy-7n1P-aZRh-ibuU-jUOA-y0z3Fm

  --- Physical volume ---
  PV Name               /dev/md0
  VG Name               home
  PV Size               101.88 MB / not usable 1.88 MB
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              25
  Free PE               0
  Allocated PE          25
  PV UUID               ygNgVd-cPso-2x4x-Gamb-4xFq-WpX9-AlbKux

[root@linux ~]# vgreduce home /dev/md2           #移除空闲的pv

移除掉这个pv设备之后,里面已没有什么数据,可以任意处理。

用LVMsnapshot来备份数据
[root@linux ~]# lvcreate -L 220M -s -n backup /dev/home/home  #创建home的快照命名为backup
[root@linux ~]# mkdir /backup                                 #创建相备份目录  
[root@linux ~]# mount /dev/home/backup /backup                #将快照分区挂载到新建的目录当中
快照只是把创建快照时的那一刻的数据重新copy到一个lv上面,不影响原lv的正常使用。随后就是tar备份的操作