lvm的实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lvm的实现相关的知识,希望对你有一定的参考价值。

   lvm,logic volume admin,逻辑卷管理.主要功能就是能灵活地为分区,增大,减小,删除,增加,不管有多少硬盘都可以识为一个整体,进行整体管理.并没有性能和安全的功能,只为灵活分区.

   要实现lv有三个步骤:

   第一个pv,physical volume,物理卷.也就是将硬盘弄成lv需要的格式.准备好硬盘.比如,我们将 /dev/sd{h,i,j}弄成lv的格式.

查看这两块硬盘:  blkid  /dev/sd{h,i} 如果没有使用,将不会显示任何东西.语法:pvcreate DISK_LIST

pvcreate /dev/sd{h,i}  将这两块格式化成pv格式.

再查看这两块硬盘:  blkid  /dev/sd{h,i}

[[email protected] ~]# blkid /dev/sd{h,i}

/dev/sdh: UUID="HyAkte-P1LL-nuJZ-Ue6B-5g46-xGi1-hTwM0t" TYPE="LVM2_member" 

/dev/sdi: UUID="MFXDkw-CLuQ-tXzf-NEpn-d4wd-uB5b-SFmkj3" TYPE="LVM2_member" 

这样lv的地基就打好了,以后就可以用这两块做lv了.

    pv的增,删,改,查.这个命令很简单.

    pvcreate   pvcreate /dev/sd{h,i}   建立pv

    pvscan     查看已建立的pv             

    pvdisplay  查看已建立的pv,详细

    pvremove   pvremove /dev/sd{h,i}   抹除lv标志,变为普通硬盘


    第二步就要做vg,volume group,卷组.也就是将上面建的物理卷建出一个组.放到一个组里来.vg有 建立/删除,查看/详细,增大/缩小这些用法.

    建立vg,语法:vgcreate VG_NAME PV_LIST

    比如将上面两个pv盘建立成一个卷组:vgcreate vg0 /dev/sd{h,i}。这样就建好了,查看vgscan/vgdisplay


当不用这个vg了,把数据全部备份出去后就可以撤销这个vg,vgremove VG_NAME.撤销之前必须把数据全部备份出来.

    比如撤销将上面建立vg0 vgremove vg0.


    当用久了之后发现这两块盘空间不够了,这个时候就可以扩展vg.扩展之前得先建立一个pv.比如:pvcreate /dev/sde.扩展vg,语法:vgextend VG_NAME PV_LIST.  vgextend vg0 /dev/sde

    假如发现空间有很大的浪费,想拿一块硬盘出来.这个时候就要用以缩减功能了.比如我是三块500G的盘/dev/sd{e,h,i},也有就1.5T空间,最多用500,所以现在决定把e盘拿掉。比例我们先查看vg0有哪些成员盘:pvdisplay |grep -B 1 "vg0"     

[[email protected] ~]# pvdisplay |grep -B 1  "vg0" 

  PV Name               /dev/sdh

  VG Name               vg0

--

  PV Name               /dev/sdi

  VG Name               vg0

--

  PV Name               /dev/sde

  VG Name               vg

在拿掉一块盘之前必须先把这盘的数据转移到其他盘:pvmove /dev/sde  ,vgreduce vg0  /dev/sde.

将e从vg0中移出。再看vg0成员:

[[email protected] ~]# pvdisplay |grep -B 1 "vg0"  

  PV Name               /dev/sdh

  VG Name               vg0

--

  PV Name               /dev/sdi

  VG Name               vg0


  接下来说说PE

  pe就是通过vg将pv划分成一个个的小块。默认为4M。lv之所以能灵活地动态调整大小其实动态地调整PE的个数。查看一个VG的pe信息:

[[email protected] ~]# vgdisplay 

  --- Volume group ---

  VG Name               vg0

  System ID             

  Format                lvm2

  ……

  VG Size               3.98 TiB

  PE Size               4.00 MiB

  Total PE              1044478

  Alloc PE / Size       0 / 0   

  Free  PE / Size       1044478 / 3.98 TiB

  VG UUID               zzNjU6-hr2N-LbPZ-Re3y-HvWS-L75X-gjeUos

可以看见PE大小为默认的4M,总个数为1044478,已分配0个。因为创建lv时才分配pe,所以现在还是已分配0个。vgcreate -s $:创建时手动指定PE大小。一般为默认。


   第三步就要做最重要的LV了。

   可以将lv视作一个硬盘,并且可以随时调整其大小。可以直接格式化挂载来使用。

lvcreate -l pe个数/-L 指定空间大小  -n LV_NAME VG_NAME  

比如,将上面的vg全部来建立一个lv

先查看所有的PE个数:

[[email protected] ~]# vgdisplay |grep Total

  Total PE              1044478

[[email protected] ~]# lvcreate -l 1044478 -n lv0 vg0

  Logical volume "lv0" created

查看建立的lv:

[[email protected] ~]# lvscan 

  ACTIVE            ‘/dev/vg0/lv0‘ [3.98 TiB] inherit

[[email protected] ~]# lvdisplay 

  --- Logical volume ---

  LV Path                /dev/vg0/lv0

  LV Name                lv0

  VG Name                vg0

  LV UUID                bktGuQ-Lzjx-qji2-BOc9-luYT-cqUo-CmULvY

  LV Write Access        read/write

  LV Creation host, time mydg.localdomain, 2017-02-09 16:03:10 +0800

  LV Status              available

  # open                 0

  LV Size                3.98 TiB

  Current LE             1044478

  ……

移出并建立一个3T大小的空间。

[[email protected] ~]# echo "y"|lvremove /dev/vg0/lv0 

Do you really want to remove active logical volume lv0? [y/n]:   Logical volume "lv0" successfully removed


[[email protected] ~]# lvcreate -L 3000G -n lv0 vg0

  Logical volume "lv0" created

格式化,挂载,查看大小:

[[email protected] ~]# mkfs -t ext4 -T largefile /dev/vg0/lv0

[[email protected] ~]# mount /dev/vg0/lv0 /mnt/

[[email protected] ~]# df -Ph

文件系统      容量  已用  可用 已用%% 挂载点

……

/dev/mapper/vg0-lv0   3.0T  200M  2.8T   1% /mnt


    接下来,将lv0大小扩展到3.5T。命令lvextend -l pe个数/-L 指定空间大小  LV_NAME,参数跟建立差不多。

[[email protected] ~]# lvextend -L 3500G /dev/vg0/lv0 

  Extending logical volume lv0 to 3.42 TiB

  Logical volume lv0 successfully resized 

还要应用到文件系统:

  [[email protected] ~]# resize2fs -p /dev/vg0/lv0   这个-p就是指应用全部空间。

再查看:

[[email protected] ~]# df -lPh

文件系统      容量  已用  可用 已用%% 挂载点

……

/dev/mapper/vg0-lv0   3.5T  198M  3.3T   1% /mnt

应用成功。

缩减空间比较危险,空间丢失数据,硬盘读写比较高,用得少就不写了。

这个lv还有很多的功能比如快照,多路径。磁盘综合运用只是其中一个功能。

以上是关于lvm的实现的主要内容,如果未能解决你的问题,请参考以下文章

在linux下实现LVM

lvm基本应用,扩展及缩减实现

LVM原理与实现过程

逻辑卷LVM的实现

LVM基本应用,扩展及缩减实现!

lvm的实现