1. 程式人生 > >LINUX中LVM的建立,擴容,增減大小

LINUX中LVM的建立,擴容,增減大小

LVM(Logical Volumn Manager):

總體思路:分割槽成LVM格式(8e)---PV建立--VG建立---LV建立---格式化分割槽---MOUNT分割槽----e2fsadm調整LV大小

幾個關鍵詞:

PV (Physical Volumn);VG(Volumn Group); LV(Logical Volumn);PE(Physical Extend物理塊 default 4M); LE(Logical Extend邏輯塊) PE:LE=1:1(Normal)

LVM的結構簡圖如下: 
   hda1  hdc1  sdc     (PV:s  物理卷,一般為分割槽或整個硬碟)                         
         |   /                                                                     
         |  /                                                                      
       diskvg          (VG 卷組由物理卷組成)                                                        
       /  |                                                                     
      /   |                                                                     
  usrlv rootlv varlv   (LV:s 邏輯卷在卷組上建立) 
    |      |     |                                                               
 ext2  reiserfs  xfs   (建立在邏輯捲上的檔案系統)

PV:  實體分割區(Partition)/dev/had...

VG:  虛擬硬碟   /dev/vg_name

LV: 虛擬分割區  /dev/vg_name/lv_name

LVM建立過程:

如有三個硬碟hda2(3G)/hdb2(3G)/hdc2(3G)/hdd2(3G)+hda1(100M boot分割槽)

1、建立分割槽:

    fdisk /dev/hda(..hdb..hdc..hdd) -----p---n--t--8e---p--w--- reboot

     (分出hda2/hdb2/hdc2/hdd2各3G的分割槽,分割槽格式為8e(lvm分割槽)

2、建立物理卷(PV):

     pvcreate [-v] /dev/hda2 /dev/hdb2 /dev/hdc2 /dev/hdd2

     ***建立物理卷(PV)之前可以通過pvscan 檢視是否有物理卷及其資訊,如pvscan檢視到現有PV(如/dev/hdb1、/dev/hdc1)屬於VG (如VG0),則可以通過

     pvdisplay /dev/hdb1檢視現有LVM的情況。 

     ****-v顯示建立的全部過程,可以省略   

3、建立卷組(VG):

     vgcreate [-v]  [-s 8M]vg01 /dev/hda2 /dev/hdb2 /dev/hdc2 /dev/hdd2

     ***建立卷組((VG)之前可以通過vgdisplay檢視現有卷組資訊;

     *** -s 建立的VG的PE大小(如8M),預設省略不寫為4M,必須是4的整數倍;

     ***VG建立好後,自動就Active起來,若沒有自動Active則可以通過  vgchange -a y vg01啟用 VG;也可以通過vgchange -a n vg01 關閉Actice 的VG為Deactive;

     ***只有對Deactive 的VG才能進行更改、刪除;VG的重新命名不需要Deactive,如 vgrename old_vg_name new_vg_name;

     ***vgremove 刪除現有VG :vgremove vg_name;必須是Deactive VG.

     ***若在建立了LVM後發現硬碟空間不夠,則可以建立一個LVM分割槽,通過pvcreate啟用此分割槽,再通過vgextend加入到現有VG中以擴充空間。

      pvcreate /dev/hde2  ; vgextend -v vg01 /dev/hde2   將hde2加入到現有vg01中以擴充空間。

      ***若要刪除VG中的PV,必須先確認此PV沒有被VG所使用:如/dev/hdd2,先檢視pvdisplay /dev/hdd2 中的PV Status,若為Not Availiable則可以刪除;

      vgreduce -v vg01 /dev/hdd2

4、建立邏輯卷(LVM):

    命令lvcreate的常用方法: 
   lvcreate [options]  -n 邏輯卷名  卷組名 
   其中的常用可選項有: 
   "-i Stripes :採用交錯(striped)方式建立LV,其中Stripes指卷組中PV的數量。 
   "-I Stripe_size :採用交錯方式時採用的塊大小(單位為KB),Stripe_size必須為2的指數:2N ,N=2,3...9。 
   "-l LEs :指定LV的邏輯塊數。 
   "-L size :指定LV的大小,其後可以用K、M、G表示KB、MB、GB。 
   "-s :建立一已存在LV的snapshot卷。 
   "-n name :為LV指定名稱。

   建立普通LV:  

    lvcreate -L 5G -n lv01 vg01  建立一個名為lv01的5G 虛擬分割槽在虛擬硬碟vg01上   /dev/vg01/lv01

    lvcreate -i 4 -I 8 -L 4G -n lv02  vg01  [-i 是VG中組成PV的分割槽個數,-I 塊大小,-L LV的大小]

   建立快照LV:

    lvcreate -s -i 4 -I 16 -L 2G -n lv03_snapshot vg01

5、建立檔案系統:

      mke2fs -j /dev/vg01/lv01   (mkfs.ext3 /dev/vg01/lv02;  mkfs.ext3 /dev/vg01/lv_snapshot)

6、掛載:

    mkdir /mnt/lv01 ;

    mount -t ext3 /dev/vg01/lv01  /mnt/lv01;

7、增、減LV大小:

    umount  /lv01;

    e2fsadm -L+100M(-100M) /dev/vg01/lv01

****

總結:

1) fdisk /dev/hd?--8e (/dev/hda2;/dev/hdb2;/dev/hdc2/;dev/hdd2)

2) pvcreate /dev/hda2 /dev/hdb2 /dev/hdc2

3)vgcreate vg01 /dev/hd2 /dev/hdb2 /dev/hdc2

4)lvcreate [-s] [-i pv_pation_count] [-I n*2k] -L 分割槽大小 [-n lv_name]  vg01

5)mke2fs [-j] /vg01/lv_name

6) mkdir /mnt/mnt_point;  mount -t ext3 /dev/vg01/lv_name  /mnt/mnt_point;

 增加硬碟已擴充分割槽容量:

1) pvcreate /dev/hdd2;

2) vgextend vg01 /dev/hdd2;

3)lvextend -L+100M /dev/vg01/lv_name; (線上擴充分割槽大小)  lvreduce -L -100M /dev/vg01/lv_name (線上擴充分割槽大小)

若VG中有容量未分配可以通過以下方法增加(或減少)分割槽容量:

1) umount /mnt/mnt_point;

2) e2fsadm -L+100M /dev/vg01/lv_name

**以上擴充必須是LV中最後一個LV(如/dev/vg01/lv01;/dev/vg01/lv02; /dev/vg01/lv03)

只能正常、正確擴充最後一個LV :lv03;若擴充lv01、lv02可能會有問題發生。