LVM
 
            一,基本介绍
       Linux用户安装Linux操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间。随着Linux的逻辑盘卷管理功能的出现,这些问题都迎刃而解,
      lvm是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
      LVM基本术语:
1. 物理存储介质:这里指系统的存储设备:硬盘,如:/dev/hda、/dev/sda等等,是存储系统最低层的存储单元。
2. 物理卷physical volume(PV)
     物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块
3. 卷组Volume Group(VG)
   LVM卷组由一个或多个物理卷组成,但是更确切的说,它包含由这些物理卷提供的许多PE。
4. 逻辑卷logical volume(LV)
   这里是我们存储信息的地方,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
5. PE  (physical extent)
   每一个物理卷被划分为称为PE的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
二,具体操作
1.创建一个分区
  [root@stau11 ~]# fdisk -l             //查看分区的情
  [root@stau11 ~]# fdisk /dev/sda       //进行分区
    Command (m for help): n        //n为添加一个分区,p查看分区
  First cylinder (2898-10443, default 2898):    //按【Enter】键决定
  Using default value 2898                //起始柱面选择默认  值                                                                                                                                                                                               
   Last cylinder or +size or +sizeM or +sizeK (289810443, default 10443): +2G    //    给2G的大小
 Command (m for help): t      //更改分区类型
Partition number (1-5): 5      //选着分区
Hex code (type L to list codes): l      //分区类型列表
Hex code (type L to list codes):8e     //将新添加的分区标注成lvm 
Command (m for help): p              //查看分区表
/dev/sda5            2756        2999     1959898+  8e  Linux LVM
Command (m for help): w            //保存
[root@localhost ~]# partprobe /dev/sda      //是系统识别分区(代替重启)
[root@localhost ~]# mkfs.ext3 /dev/sda5    //格式化新添加的分区
2.PV的创建
[root@localhost ~]# pvcreate /dev/sda5            //创建pv
  Writing physical volume data to disk "/dev/sda5"
  Physical volume "/dev/sda5" successfully created
[root@localhost ~]# pvs  或pvdisplay         //查看当前pv的信息
  PV         VG   Fmt  Attr PSize PFree
  /dev/sda5       lvm2 a--  1.87G 1.87G
3.VG的创建
[root@localhost ~]# vgcreate vg0 /dev/sda5    //vg0为当前vg的名
  Volume group "vg0" successfully created
[root@localhost ~]# vgs 或vgdispaly           //查看vg的信息
  VG   #PV #LV #SN Attr   VSize VFree
  vg0    1   0   0 wz--n- 1.87G 1.87G
4.lvm的创建
#lvcreate  -L 大小 -n  名字 隶属哪一个巻组
#lvcreate  -l   PE 个数  -n  名字 隶属哪一个巻组
[root@localhost ~]# lvcreate -L 500M -n lv01 vg0
  Logical volume "lv01" created
[root@localhost ~]# lvs 或lvdispaly           //查看lv的信息
 LV   VG   Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  lv01 vg0  -wi-a- 500.00M                                      
You have mail in /var/spool/mail/root
[root@localhost ~]# mkfs.ext3 /dev/vg0/lv01      //格式化
         lvm的使用
   # mkdir /mnt/lv01
     #  mount /dev/vg0/lv01 /mnt/lv01
     #  df -h
     # touch /mnt/lv01/lv.file
     #ls /mnt/lv01
 
三,lvm的增大
 [root@localhost ~]# lvextend -L +300M /dev/vg0/lv01  //(原来lv大小500M ,拉伸分区到 800M)  Extending logical volume lv01 to 800.00 MB
  Logical volume lv01 successfully resized
[root@localhost ~]# resize2fs /dev/vg0/lv01       //拉伸文件系统
[root@localhost ~]# lvs
  LV   VG   Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  lv01 vg0  -wi-ao 800.00M       //大小变成了800M
四,lvm的减小
# umount  /dev/vg0/lv01      //卸载逻辑卷/dev/vg0/lv01 
  # df -h      //查看 
  # e2fsck  -f  /dev/vg0/lv01    //磁盘校验 
  # resize2fs  /dev/vg0/lv01  500M    //回缩文件系统到 500M 
  # lvreduce  -L  500M  /dev/vg0/lv01     //回缩分区到 500M 
     WARNING: Reducing active logical volume to 500.00 MB
     THIS MAY DESTROY YOUR DATA (filesystem etc.)
     Do you really want to reduce lv01? [y/n]: y  
  # lvs
  LV   VG   Attr   LSize   Origin Snap%  Move Log Copy%   Convert
   lv01 vg0  -wi-a- 500.00M          //此时已变成500M大小
  # mount  /dev/vg0/lv01   /mnt/lv01    //重新挂载分区 
  # df -h     //查看 
  # ls /mnt/lv01    //查看文件 
五,lvm的系统快照
     原理:系统快照(snapshot)是lvm的另外一种重要的功能,快照就是将当时的数据记录下来,就好像照相记录一样,以后数据有任何改动,原数据会被移动到快照区,没有被改变的区域则由快照区与文件系统共享。
由于快照区和原本的LV共享很多PE,所以快照区与被快照的区域必须在同一个VG上
操作:
以上面创建的lv01为例
1.挂载lvm
[root@localhost ~] # mount /dev/vg0/lv01 /mnt/lv01    
[root@localhost ~]# cd /mnt/lv01
[root@localhost lv01]# touch {a,b,c}{a,b,c}
[root@localhost lv01]# ls
aa  ab  ac  ba  bb  bc  ca  cb  cc  lost+found  lv.file  restoresymtable
2.为lvm创建快照
[root@localhost lv01]# lvcreate -L 64M -s -n lv-backup /dev/vg0/lv01
  Logical volume "lv-backup" created
3.挂载快照
[root@localhost lv01]# mkdir /mnt/lv-backup
[root@localhost mnt]# mount -o ro /dev/vg0/lv-backup /mnt/lv-backup/
4.备份快照
[root@localhost tmp]# dump -0u -f /tmp/lv-backup.dump /mnt/lv-backup/       //备份
  DUMP: Date of this level 0 dump: Sun Nov 11 14:53:31 2012
  DUMP: Dumping /dev/mapper/vg0-lv--backup (/mnt/lv-backup) to /tmp/lv-backup.dump
5.删除快照
[root@localhost tmp]# umount /mnt/lv-backup/
[root@localhost tmp]# lvremove /dev/vg0/lv-backup 
Do you really want to remove active logical volume lv-backup? [y/n]: y
  Logical volume "lv-backup" successfully removed
6.清空/dev/vg0/lv01下得内容
[root@localhost tmp]# umount /mnt/lv01
[root@localhost tmp]# mkfs.ext3 /dev/vg0/lv01 
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
7.恢复数据
[root@localhost tmp]# mount /dev/vg0/lv01 /mnt/lv01
[root@localhost tmp]# cd /mnt/lv01
[root@localhost lv01]# ls
lost+found
[root@localhost lv01]# restore -rf /tmp/lv-backup.dump   //恢复
restore: ./lost+found: File exists
[root@localhost lv01]# ls  //由于之前都删除了,所以这些都是改变的部分
aa  ab  ac  ba  bb  bc  ca  cb  cc  lost+found  lv.file  restoresymtable
六,lvm的关闭 
[root@localhost ~]# umount /mnt/lv01
[root@localhost ~]# lvremove /dev/vg0/lv01  //删除lv
Do you really want to remove active logical volume lv01? [y/n]: y
  Logical volume "lv01" successfully removed
[root@localhost ~]# vgchange -a n vg0     //使vg0不具有active标志
  0 logical volume(s) in volume group "vg0" now active
[root@localhost ~]# vgremove vg0       //删除vg
  Volume group "vg0" successfully removed
[root@localhost ~]# pvremove /dev/sda5     //删除pv
  Labels on physical volume "/dev/sda5" successfully wiped