linux LVM 簡介及指令介紹

前言
由於幫客戶主機建立 LVM 時常遇到 linux 系統完全沒有 LVM ,導致我們常常會需要重新建立一個 LVM 這邊就做一個較完整的筆記幫忙紀錄常常容易忘掉的步驟,另一方面也幫忙釐清 linux 系統中的 LVM 複雜的觀念。


一、 LVM簡介

LVM,Logical  Volume  Manager 邏輯磁碟管理。LVM主要功能為可以彈性調整磁碟、分割區與檔案系統的大小。其概念為,將實體分割區變成PV,由PV組成VG(相當於虛擬磁碟),VG可以分割成數個LV(相當於虛擬分割區),然後在LV上建立檔案系統,此檔案系統我們可以把它當成一般檔案系統使用。亦即,我們透過組合多個實體分割區,以實現可以彈性改變大小的磁碟、分割區及檔案系統。


圖1   LVM架構圖
(引用自鳥哥的私房菜)



二、PV、VG、LV、PE、檔案系統 resize2fs指令


圖2   VG、LV、PE相關性
(引用自鳥哥的私房菜)

(一) PV,Physical Volume實體捲軸

我們須將實體分割區變成PV,此實體分割區才能夠被LVM所使用。
PV名稱與「分割區之裝置檔名」相同,如/dev/sdb1、/dev/sdc3。
一個實體分割區只對應一個PV。
在PV的metadata區中,會記錄此PV是否被任何VG使用,若被VG使用,會記錄被那一個VG使用。


PV相關指令:
1.  pvcreate

語法:  pvcreate    分割區名稱

說明:
此指令用來「建立PV」,即將實體分割區建立(轉換)為PV。在使用此指令前,須先將分割區的 Partition ID設成8e(可以使用fdisk指令設定)。
註:筆者測試分割區的Partition ID不設定成8e,分割區也是可以建立成PV。

範例1:將 /dev/sdb1建立成為PV。
[root@CentOS6NEW ~]# pvcreate   /dev/sdb1
  Physical volume "/dev/sdb1" successfully created

範例2:將 /dev/sdc{1,2,3}建立成為PV。
[root@CentOS6NEW ~]#  pvcreate   /dev/sdc{1,2,3}
  Physical volume "/dev/sdc1" successfully created
  Physical volume "/dev/sdc2" successfully created
  Physical volume "/dev/sdc3" successfully created

2.  pvremove

語法:  pvremove   PV名稱

說明:
將PV還原成一般實體分割區。還原後,分割區的Partition ID依然為8e,使用者可視需求改變Partition ID。

範例: 將 /dev/sdb1此PV還原成一般實體分割區。
[root@CentOS6NEW ~]#  pvremove   /dev/sdb1
  Labels on physical volume "/dev/sdb1" successfully wiped

3.  pvscan

語法: pvscan

說明:
搜尋目前系統上存在的PV並顯示PV資訊。

範例: 搜尋並顯示目前系統上的PV。
[root@CentOS6NEW ~]# pvscan
  PV  /dev/sdb1                      lvm2 [1.01 GiB]
  PV  /dev/sdc1                      lvm2 [1.01 GiB]
  PV  /dev/sdc2                      lvm2 [407.90 MiB]
  PV  /dev/sdc3                      lvm2 [407.90 MiB]
  Total: 4 [2.82 GiB] / in use: 0 [0   ] / in no VG: 4 [2.82 GiB]


4. pvdisplay

語法: pvdisplay   PV名稱

說明:
顯示PV的詳細資訊。若沒有參數「PV名稱」,則顯示系統上所有的PV詳細資訊。

範例1:顯示 /dev/sdb1 此PV的詳細資訊。
[root@CentOS6NEW ~]#   pvdisplay   /dev/sdb1
  "/dev/sdb1" is a new physical volume of "1.01 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name             
  PV Size               1.01 GiB
  Allocatable           NO
  PE Size               0 
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               0tA0MH-8AAR-yVs0-DBcR-2m8u-j2c4-zvt10B

範例2:顯示所有PV的詳細資訊。
[root@CentOS6NEW ~]#  pvdisplay
  "/dev/sdb1" is a new physical volume of "1.01 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name             
  PV Size               1.01 GiB
  Allocatable           NO
  PE Size               0 
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               0tA0MH-8AAR-yVs0-DBcR-2m8u-j2c4-zvt10B
 
  "/dev/sdc3" is a new physical volume of "407.90 MiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc3
  VG Name             
  PV Size               407.90 MiB
  Allocatable           NO
  PE Size               0 
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               JqGpho-QCOJ-DYuJ-3Pcm-UhvL-14qS-aXZGs1


(二) VG,Volume Group 捲軸群組

VG相當於虛擬磁碟,由一到多個PV所組成。在建立VG之後,我們還可以任意增加PV到VG,或從VG減少PV。

VG相關指令:
1. vgcreate

語法:vgcreate  -s   PE大小    VG名稱    PV名稱

說明:
此指令用來建立VG。參數有三個,參數「-s  PE大小」用來設定PE 的大小,PE大小須為2的次方,單位可以是T、G、M(大小寫皆可),若無此參數,PE預設大小為4MB。參數「VG名稱」為使用者自己創建的VG名稱,可自由取名。參數「PV名稱」用來指定VG要使用的PV。

註1:
PE為VG的容量使用單位,如同真實檔案系統中的block一樣。VG會將PV畫分成數個PE,然後使用PE。
註2:
不一定要兩個以上的PV才能建立VG,其實一個PV也能建立成VG。

範例:建立並觀察VG

使用/dev/sdb{1,2}此兩個PV建立VG,VG名稱為vg01,PE大小為32MB。
[root@CentOS6NEW ~]# vgcreate   -s   32M    vg01    /dev/sdb{1,2}
  Volume group "vg01" successfully created


使用「pvscan」觀察此兩個pv,可發現/dev/sdb{1,2}己規劃到VG裡頭。
 [root@CentOS6NEW ~]# pvscan
  PV /dev/sdb1   VG vg01   lvm2 [1.00 GiB / 1.00 GiB free]
  PV /dev/sdb2   VG vg01   lvm2 [992.00 MiB / 992.00 MiB free]
  Total: 2 [1.97 GiB] / in use: 2 [1.97 GiB] / in no VG: 0 [0   ]

2.   vgremove

語法: vgremove   VG名稱

說明:
此指令用來移除 VG。

範例:移除vg01此VG。
[root@CentOS6NEW ~]# vgremove  vg01
  Volume group "vg01" successfully removed

3.  vgextend

語法:  vgextend    VG名稱    PV名稱

說明:
新增PV到VG中,可加大VG的空間,相當於加大虛擬磁碟的空間。

範例: 新增 /dev/sdc1 (PV)到 vg01(VG)中。
[root@CentOS6NEW ~]# vgextend   vg01   /dev/sdc1
  Volume group "vg01" successfully extended

4.  vgreduce

語法: vgreduce    VG名稱     PV名稱

說明:
從VG中移除PV。會縮小VG的空間,相當於縮小虛擬磁碟的空間。雖然PV從VG中移出,但不代表移除的PV就會變成實體分割區。

範例:從vg01 (VG)移除 /dev/sdc1 (PV)。
[root@CentOS6NEW ~]# vgreduce  vg01  /dev/sdc1
  Removed "/dev/sdc1" from volume group "vg01"

5.  vgchange

語法:vgchange   -a   n|y     VG名稱

說明:
啟動或停用VG。當啟動VG,會將VG中的所有LV啟動;若停用VG,會將VG中的所有LV停用。

範例:測試啟用及停用vg01(VG),並觀察所有LV。

目前LV工作狀態:
[root@CentOS6NEW ~]#  lvscan
  ACTIVE            '/dev/vg01/lv01' [1.56 GiB] inherit
  ACTIVE            '/dev/vg01/lv02' [1.41 GiB] inherit

停用vg01,並觀察LV:
[root@CentOS6NEW ~]#  vgchange   -a   n    vg01
  0 logical volume(s) in volume group "vg01" now active

[root@CentOS6NEW ~]# lvscan
  inactive          '/dev/vg01/lv01' [1.56 GiB] inherit
  inactive          '/dev/vg01/lv02' [1.41 GiB] inherit

啟用vg01,並觀察LV:
[root@CentOS6NEW ~]#  vgchange   -a   y    vg01
  2 logical volume(s) in volume group "vg01" now active

[root@CentOS6NEW ~]# lvscan
  ACTIVE            '/dev/vg01/lv01' [1.56 GiB] inherit
  ACTIVE            '/dev/vg01/lv02' [1.41 GiB] inherit


6.  vgscan

語法:vgscan

說明:
搜尋VG並顯示。其運作過程為,搜尋系統上所有的PV,以PV上的metadata資訊來知道目前系統上有那些VG並顯示。

範例:搜尋VG並顯示。
[root@CentOS6NEW ~]# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "vg02" using metadata type lvm2
  Found volume group "vg01" using metadata type lvm2
上面結果表示,目前系統上有兩個VG,分別是vg01、vg02。


7.  vgdisplay

語法:vgdisplay   VG名稱

說明:
顯示VG詳細資訊。參數「VG名稱」用來指定要顯示那個VG的資訊,若沒有參數「VG名稱」,則顯示所有的VG資訊,即若有10個VG,就顯示10個VG的資訊。
筆者通常利用此指令來知道VG中的PE使用情況。

範例:顯示所有的VG詳細資訊
[root@CentOS6NEW ~]# vgdisplay
  --- Volume group ---
  VG Name               vg01         <== VG名稱
  System ID           
  Format                   lvm2
  Metadata Areas        3
  Metadata Sequence No  2
  VG Access             read/write            <==此VG可讀可寫
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               2.97 GiB
  PE Size               32.00 MiB
  Total PE                95                                    <==此VG的全部PE
  Alloc PE / Size       50 / 1.56 GiB                 <==已使用PE
  Free  PE / Size       45 / 1.41 GiB                 <==未使用PE
  VG UUID               GHwRAP-2yYp-uOPA-QY4k-Dj5Y-sh8P-fQ29vo



(三)LV,Logical Volume  邏輯捲軸
LV相當於虛擬分割區,由一到多個PE所組成。在建立LV之後,我們可以任意增加PE到LV,或減少PE,使LV彈性調整容量。一個VG可以包含多個LV,就像一個實體磁碟可以建立多個分割區一樣。

LV相關指令:
1.  lvcreate

語法1: lvcreate   -l   PE數量      -n    LV名稱         VG名稱

語法2: lvcreate   -L      容量      -n    LV名稱         VG名稱

說明:
此指令用來建立LV,語法1與語法2的差別在於設定此LV容量之方式不同而已,語法1使用「PE數量」決定LV容量,而語法2直接使用「數字加T、G、M」來決定LV容量。由於LV的使用單位為PE,所以語法2的容量值需為PE的倍數,若非 PE倍數,LVM會自動以相近PE倍數值來決定LV容量。

範例1: 在vg01(VG)中建立lv01(LV),lv01容量為50個PE。
[root@CentOS6NEW ~]# lvcreate   -l   50     -n   lv01      vg01
  Logical volume "lv01" created

註:雖然lvcreate指令中之LV名稱為lv01,但在建立後LV後,實際之LV名稱為 /dev/vg01/lv01 ,以後要指定LV,就是使用 /dev/vg01/lv01。此 /dev/vg01/lv01為連結檔,連結到/dev/dm-0;另/dev/mapper/vg01-lv01連結檔也是連結到/dev/dm-0,所以/dev/vg01/lv01、/dev/mapper/vg01-lv01、/dev/dm-0皆為相同檔案。很多應用程式都使用/dev/mapper/vg01-lv01此連結檔來指定LV。

範例2:在 vg01 (VG) 中建立 lv02 (LV),lv01 容量為1GB。
[root@CentOS6NEW ~]# lvcreate   -L   1G      -n    lv02     vg01
  Logical volume "lv02" created

2.  lvremove

語法: lvremove   LV名稱

說明:
移除 LV。

範例:移除 /dev/vg01/lv02 (LV)。
[root@CentOS6NEW dev]# lvremove   /dev/vg01/lv02
  Logical volume "lv02" successfully removed


3.  lvresize

語法:lvresize    -l     PE數量     LV名稱

說明:
調整LV容量大小。參數「PE數量」值須加上+、-號,如「+30」、「-60」來代表要增加PE或減少PE。「-l   PE數量」也可換成 「-L  容量」的指定方法,和lvcreate指令相同。

註:另有「lvextend」和「lvreduce」指令可以來增加或減少LV容量,不過可以由lvresize取代。簡單說明一下「lvextend、lvreduce」指令用法:假設要增加20個PE,則使用lvextend指令為 「 lvextend    -l   +20    LV名稱」;減少20個PE,使用lvreduce指令為「lvreduce    -l   -20     LV名稱 」。lvextend只能用來增加PE,lvreduce只能用來減少PE,如此看來,不如統一使用lvresize指令來的簡單。 所以,筆者建議使用lvresize來調整LV的容量大小。

範例1:將 /dev/vg01/lv01 (VG) 增加20個PE的容量。
[root@CentOS6NEW ~]# lvresize    -l    +20     /dev/vg01/lv01
  Extending logical volume lv01 to 2.19 GiB
  Logical volume lv01 successfully resized
註:可先使用 「vgdisplay   vg01」指令了解VG還有多少個PE未使用。

範例2 :將 /dev/vg01/lv01 (VG) 減少50個PE的容量。
[root@CentOS6NEW ~]# lvresize   -l    -50    /dev/vg01/lv01
  WARNING: Reducing active logical volume to 640.00 MiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv01? [y/n]: y           <==使用者須鍵入 y 。
  Reducing logical volume lv01 to 640.00 MiB
  Logical volume lv01 successfully resized



4.  lvchange

語法: lvchange   -a   n|y     LV名稱

說明:
啟用或停用LV。當LV為啟用時,應用程式才能使用此LV,如建立檔案系統或掛載等。

範例:啟用或停用/dev/vg01/lv01(LV)。

先觀察目前的 lv01工作狀態:
[root@CentOS6NEW mnt]#  lvscan
  ACTIVE            '/dev/vg01/lv01'   [640.00 MiB] inherit      <==啟用狀態
  ACTIVE            '/dev/vg01/lv02'   [1.56 GiB] inherit

停用 /dev/vg01/lv01,並觀察是否停用成功:
[root@CentOS6NEW mnt]# lvchange   -a   n      /dev/vg01/lv01    <==停用LV
[root@CentOS6NEW mnt]# lvscan
  inactive               '/dev/vg01/lv01'       [640.00 MiB] inherit       <== 目前停用
  ACTIVE            '/dev/vg01/lv02'       [1.56 GiB] inherit

現在啟用 /dev/vg01/lv01,並觀察是否啟用成功:
[root@CentOS6NEW mnt]# lvchange -a y /dev/vg01/lv01
[root@CentOS6NEW mnt]# lvscan
  ACTIVE            '/dev/vg01/lv01' [640.00 MiB] inherit             <==目前啟用
  ACTIVE            '/dev/vg01/lv02' [1.56 GiB] inherit


5.  lvscan

語法: lvscan

說明:
搜尋系統上存在的LV並顯示。

範例:搜尋系統上存在的LV並顯示
[root@CentOS6NEW ~]# lvscan
  ACTIVE            '/dev/vg01/lv01' [640.00 MiB] inherit


6.  lvdisplay

語法: lvdisplay   LV名稱

說明:
顯示指定的LV之資訊。若沒有「 LV名稱」參數,則顯示所有的LV之資訊。

範例:顯示 /dev/vg01/lv02(LV) 之資訊
[root@CentOS6NEW ~]# lvdisplay /dev/vg01/lv02
  --- Logical volume ---
  LV Name                  /dev/vg01/lv02
  VG Name                  vg01                       <==此LV屬於vg01(VG)
  LV UUID                  hnQn5M-prIz-FsOo-oiFI-Mj88-xLSc-lBBP5S
  LV Write Access        read/write               <==此LV可讀與寫
  LV Status                   available                  <==工作狀態為啟用(可使用)
  # open                        0
  LV Size                      1.56 GiB                 <==此LV容量為1.5GB
  Current LE                  50                          <==此LV有50個PE
  Segments                     2
  Allocation                   inherit
  Read ahead sectors     auto
  - currently set to          256
  Block device                253:1



(四)  PE,Physical  Extend 實體延伸區塊

PE為LVM的儲存單位。一個VG最多只能含有65534個PE,不過每個PE的大小可以由使用者決定,一個PE的大小可以數個MB、數個GB或數個TB大。因此可知,一個VG的最大容量,跟PE的大小有關係。

PV會記載PV中的每個PE隸屬那個LV。要記得,LV是由PE組成,不是由PV組成。一個PV中的PE可能分散隸屬於多個LV。例如,假設有一個PV含有50個PE,則其中20個PE可能屬於第一個LV,其中20個PE可能屬於第二個LV,剩下的10個PE可能屬於第三個LV。

在一開始時,PE是由vgcreate指令規畫出來,vgcreate指令依指定的PE大小在PV上劃分成一到多個PE。例如,假設有一個PV容量為1GB,PE為4MB,則此PV可劃分成256個PE。

每個PE可以視為一個獨立的個體,就算是屬於同一個PV的PE,它們不一定會隸屬於同一個LV。

註:PE的觀念很重要,如果不清楚的話,可能就無法正確使用「pvmove」這個指令。


PE相關指令:(PE只有一個指令---> pvmove)


1.  pvmove

語法: pvmove    來源PV       [ 目的PV]

說明:
此指令為搬移「使用中的PE」 到 「未使用的PE」。「目的PV」需有足夠的「未使用PE數」才能做搬移動作,若不足夠的話,將無法執行此指令。參數「目的PV」可以為多個PV,只要這些PV中「未使用PE數」加起來的PE總數足夠讓來源PV中的「使用中的PE」來置放,指令都允許。

此指令通常使用在此情況下:我們要移除某個PV,可是這個PV被LV所使用,就需要此pvmove指令先做搬移PE動作。

我們要了解,當一個PV有使用中的PE時,是不能直接移除的,否則使用這些PE的LV將會出問題,建立在此LV上的檔案系統中的檔案也會損毀。因此要移除此種PV時,一定要先搬移裡面使用中的PE才行。(註:使用中的PE,指的是分配給LV的PE,這些PE裡面不一定都會包含資料,也有可能不包含資料。)
在此指令中,「目的PV」需有足夠的未使用PE供置放,為了彈性的達到這個需求,「目的PV」數量可以多個,但「來源PV」只能一個。

這個pvmove指令名稱中的「pv」兩個字可能會把人搞糊塗,此指令明明搬移的是PE,但是指令名稱會讓人以為搬移的是PV,也可能認為PV中的全部PE是完全屬於某一LV,因此把PV當成是隸屬於LV而做搬移動作,此搬移動作就是將整個PV搬移到另一個PV上。這是很大的誤解。

前面提過,同一個PV中的PE可能分散隸屬於不同LV,每個PE為獨立個體,有自已的metadata與data。所以在搬移PE時,應該看成是,pvmove將「來源PV中每個PE的data與meatadata」搬移到其它的PE上(metadata記錄此PE隸屬於那個LV)。筆者認為,使用pvmove指令時,最好省略「目的PV名稱」選項,因為省略時,LVM會將PE搬移到同個VG中未使用的PE上,而這些未使用的PE可能分別位於不同的PV中,這有助於釐清觀念及了解LVM運作方式。雖然觀念有點複雜,但還是得搞懂才行。

當使用lvcreate指令「建立LV」時,才是真正分配使用PE的時候,此時可從pvdisplay指令知道PV中的PE使用情況。比較可惜的是,我們只能知道PV中有幾個PE是在使用中或不在使用中,無法明確的知道那些PE是給那個LV使用的。你只要知道,LVM會很聰明的管理分配這些PE給LV使用就是了。


範例:
假設有一個vg01(VG),含有四個PV,分別是/dev/sdb1、/dev/sdc{1,2,3},其中/ dev/sdb1有20個PE在使用中,/dev/sdc1有32個PE未使用,dev/sdc2、/dev/sdc3各有12個PE未使用。現在我們要移除 /dev/sdb1(PV),由於此/dev/sdb1中有PE在使用中,所以我們必須先把這些PE搬移到其它PE才行。

我們有三種方式來進行搬移動作:

第1種方式:將/dev/sdb1上有使用的PE 全部搬移到 /dev/sdc1中未使用PE中。
[root@CentOS6NEW ~]# pvmove   /dev/sdb1  /dev/sdc1
  /dev/sdb1: Moved: 0.0%
  /dev/sdb1: Moved: 30.0%
  /dev/sdb1: Moved: 100.0%

第2種方式:將/dev/sdb1上有使用的PE全部 搬移到 /dev/sdc2、/dev/sdc3中未使用的PE中。
[root@CentOS6NEW ~]# pvmove   /dev/sdb1    /dev/sdc2   /dev/sdc3  /dev/sdb1: Moved: 0.0%
  /dev/sdb1: Moved: 20.0%
  /dev/sdb1: Moved: 60.0%
  /dev/sdb1: Moved: 100.0%
若指令中有三個以上的PV名稱,pvmove會把第一個PV名稱視為「來源PV」,第二個以後的名稱視為「目的PV」。

第3種方式:搬移到VG未使用的PE。
[root@CentOS6NEW ~]# pvmove   /dev/sdb1
  /dev/sdb1: Moved: 0.0%
  /dev/sdb1: Moved: 25.0%
  /dev/sdb1: Moved: 100.0%
若沒有「目的PV」參數,pvmove會把PE搬移到VG中未使用的PE中。

不管使用上面那一種方式,都需要確定「 目的PV」有足夠的未使用PE可供置放。若不足夠時,就需要再新增PV到VG中以補足空間。



(五)檔案系統 resize2fs 指令

resize2fs指令可調整檔案系統大小,剛好可以與LVM配合。

若要將檔案系統「變大」,檔案系統可以不用卸載,直接就可線上調整;
若將檔案系統縮小,則須先卸載並且須先執行「e2fsck   -f    檔案系統」指令後才能成功執行resize2fs。如果不先執行「e2fsck」指令,而直接執行resize2fs的話,會出現請你先執行e2fsck的訊息,所以你還是得先執行e2fsck指令。

若要將檔案系統縮小,必須縮小後還有足夠的空間給原來的資料存放,否則資料(檔案)會不見。
先調整檔案系統大小還是先調整分割區的大小?
當要加大容量時,須先調整分割區(LV)容量,再調整檔案系統。
當要縮小容量時,須先調整檔案系統,再調整分割區(LV)容量。「縮小的檔案系統」須小於「縮小的分割區容量」。

筆者建議,若要縮小容量,最好按照三個步驟執行:
步驟一:縮小檔案系統。    (使用 resize2fs 指令)
步驟二:縮小分割區(LV)。(使用lvresize 指令)
步驟三:加大檔案系統。  (使用resize2fs指令)
需要第三個步驟的原因是,resize2fs指令調整的容量單位為GB、MB,而lvresize指令調整的容量單位為PE,兩者無法剛好指定為相同容量,因此,為了讓檔案系統能夠等於分割區的大小,所以必須變成三個步驟來縮小容量。首先,在步驟一時,先將檔案系統的大小調整成比「步驟二縮小後的分割區容量」再小一點,最好縮小的差距為2、3個PE大小,等lvresize把分割區縮小後,我們再使用resize2fs加大一次檔案系統,使得檔案系統可以使用到所有的分割區空間,這樣,檔案系統就可以和分割區大小一樣了。

resize2fs 指令只可使用於ext2、ext3檔案系統,當檔案系統為掛載狀態時,ext3檔案系統可線上擴充空間(ext2檔案系統不行);若檔案系統要縮小,須先卸載才能調整。


語法:  resize2fs   檔案系統     [ 容量值 ]

參數「容量值」指的是要將檔案系統調整成多大容量。若省略「容量值」參數,表示要將檔案系統調整成與分割區一樣大(或者可以說是,調整成檔案系統可以使用到所有的分割區空間),不過省略「容量值」參數時,只能適用於分割區比檔案系統大的情況。


範例一:加大容量

LVM環境:
1. 只有一個VG,PE=32MB,VG總共有150個PE,使用中的PE有100個,未使用的PE有50個。
2. 此VG只有一個LV,名稱為/dev/vg01/lv01,有100個PE容量,相當於32*100=3200MB大小。
3.  /dev/vg01/lv01格式化為ext3的檔案系統,掛載到 /mnt/vg01/lv01目錄上。

規劃如下:
1. 將/dev/vg01/lv01(LV)加大10個PE大小。
2. 加大檔案系統,讓檔案系統能使用到全部分割區(LV)的空間。

實作:
由於是加大容量,所以不需要卸載檔案系統,可以直接線上調整容量。
1.   lvresize    -l   +10   /dev/vg01/lv01
      加大分割區(LV)空間。

2.   resize2fs    /dev/vg01/lv01
     將檔案系統調整成與分割區一樣大。

完成。



範例二:縮小容量

LVM環境:
1. 只有一個VG,PE=32MB,VG總共有150個PE,使用中的PE有100個,未使用的有500個。
2. 此VG只有一個LV,名稱為/dev/vg01/lv01,有100個PE容量,相當於32*100=3200MB大小。
3. /dev/vg01/lv01格式化為ext3的檔案系統,掛載到 /mnt/vg01/lv01目錄上。

規劃如下:
1. 將/dev/vg01/lv01(LV)縮小20個PE。
2. 縮小檔案系統,使檔案系統能使用到全部分割區的空間。

實作:
1.   umount    /dev/vg01/lv01
     須先卸載檔案系統。

2.   e2fsck   -f   /dev/vg01/lv01
     須先檢查檔案系統

3.   resize2fs   /dev/vg01/lv01   2400M 
     LV要縮小20個PE,相當於是縮小20x32=640MB容量,因此縮小後的LV為3200-640=2560MB。前面說過,縮小的檔案系統須比縮小的分割區(LV)還小個至少2、3個PE,筆者這邊直接把檔案系統縮小為2400MB。

4.   lvresize   -l   -20   /dev/vg01/lv01
      縮小分割區(LV)。

5.   resize2fs   /dev/vg01/lv01
      再執行一次resize2fs來使得檔案系統剛好符合分割區大小。
      完成。

留言

這個網誌中的熱門文章

c語言-關於#define用法

CMD常用網管指令

PHP 與 JavaScript 之間傳值利用 json