首頁 > 軟體

LVM 磁碟管理器的應用

2020-06-16 18:04:43

1、LVM簡介
LVM(LogicalVolume Manager),中文翻譯過來叫邏輯卷管理員,台灣的有些教材上翻譯成邏輯卷軸管理員。最初由IBM在AIX實現,後來由Mauelshagen在Linux上實現,現在已經是Linux的一部分。

LVM為系統中大容量分割區提供了一種更有彈性的解決方案。一般來說,我們在安裝系統的時候,會按照一定的比例,並結合自己的使用經驗,給各個分割區劃分恰當的容量。但是,隨著系統在實際生產環境中不斷執行,我們發現某些分割區的容量並不能滿足我們的需求。儘管我們可以通過某些方法解決這些問題(比如建立連線),但是這些方法還是不夠優雅。於是LVM就出現了。LVM是一種抽象化儲存技術,它在硬碟的分割區之上,又建立一個邏輯層,以方便對硬碟分割區系統進行管理。
 

2、LVM中經常會遇到的名詞
PV:物理卷,可以是獨立的磁碟分割區系統或者是RAID也可以。物理卷可以不依賴於LVM系統而獨立存在。
VG:捲組,LVM 上層的裝置把它當作物理裝置來使用,實際是一個邏輯上的抽象層,負責協調上層的邏輯卷與下層的物理塊。
LV:邏輯卷,類似於非LVM系統中的分割區的概念,在LVM系統中被當作獨立的分割區來使用。
PE:物理塊,是每一個邏輯卷被劃分的基本單元,也是LVM系統最小的定址單元。

3、如何實現LVM功能
第一步:建立pv,使用pvcreate命令。準備一塊硬碟,並將其任意分為幾個獨立的分割區,並將分割區的型別調整為8e。我已經在該物理磁碟上劃分了3塊大小為1G的分割區,效果如下(PS:至於如何劃分分割區,我在這裡不再贅述):
 
[root@localhost ~]# fdisk -l /dev/hda
 
Disk /dev/hda: 21.4 GB, 21474836480 bytes
15 heads, 63 sectors/track, 44384 cylinders
Units = cylinders of 945 * 512 = 483840 bytes
 
  Device Boot      Start        End      Blocks  Id  System
/dev/hda1              1        2068      977098+  8e  Linux LVM
/dev/hda2            2069        4136      977130  8e  Linux LVM
/dev/hda3            4137        6204      977130  8e  Linux LVM

接下來就開始建立物理卷:
[root@localhost ~]# pvcreate /dev/hda{1,2,3}
  Writing physical volume data to disk "/dev/hda1"
  Physical volume "/dev/hda1" successfully created
  Writing physical volume data to disk "/dev/hda2"
  Physical volume "/dev/hda2" successfully created
  Writing physical volume data to disk "/dev/hda3"
  Physical volume "/dev/hda3" successfully created

使用pvs命令可以檢視物理卷的詳細資訊,我這裡顯示的可用空間沒有達到原始大小是因為LVM需要儲存一些後設資料:
  [root@localhost ~]# pvs
  PV        VG        Fmt  Attr PSize  PFree 
  /dev/hda1            lvm2 a--  954.20M 954.20M
  /dev/hda2            lvm2 a--  954.23M 954.23M
  /dev/hda3            lvm2 a--  954.23M 954.23M
  /dev/sda2  VolGroup00 lvm2 a--  19.88G

另外,使用怕pvdisplay可以檢視物理捲的更詳細的資訊,使用pvscan可以檢視一共建立了多少個pv。
 
第二步:建立vg,使用vgcreate命令。
l        -s選項可以指定物理盤區的大小,預設為4M
 
[root@localhost ~]# vgcreate myvg /dev/hda{1,2,3}
  Volume group "myvg" successfully created

使用vgremove命令可以移除vg:
 
  [root@localhost ~]# vgremove myvg
  Volume group "myvg" successfully removed

擴充套件vg,首先準備好一個pv分割區:
12345 [root@localhost ~]# pvcreate /dev/hda5
  Writing physical volume data to disk "/dev/hda5"
  Physical volume "/dev/hda5" successfully created
  [root@localhost ~]# vgextend myvg /dev/hda5
  Volume group "myvg" successfully extended

移除一塊底層的磁碟的做法:首先要使用pvmove命令,作資料遷移的操作:
 [root@localhost ~]# pvmove /dev/hda3
  No data to move for myvg

然後使用vgreduce命令移除邏輯卷:
 [root@localhost ~]# vgreduce myvg /dev/hda3
  Removed "/dev/hda3" from volume group "myvg"

最後使用pvremove命令移除物理卷:
[root@localhost ~]# pvremove /dev/hda3
  Labels on physical volume "/dev/hda3" successfully wiped

第三步:建立lv,使用lvcreate命令。
 
[root@localhost ~]# lvcreate -L 50M -n test0 myvg
  Rounding up size to full physical extent 56.00 MB
  Logical volume "test0" creat

檢視效果可以使用lvs命令或者lvdisplay命令:
 
[root@localhost ~]# lvs
  LV      VG        Attr  LSize  Origin Snap%  Move Log Copy%  Convert
  LogVol00 VolGroup00 -wi-ao 17.88G                                     
  LogVol01 VolGroup00 -wi-ao  2.00G                                     
  test0    myvg      -wi-a- 56.00M

使用LVM的方法也很簡單,直接格式化,掛載即可:
 
[root@localhost ~]# mke2fs -j /dev/myvg/test0
[root@localhost ~]# mount /dev/myvg/test0 /mnt/LVM

4、擴充套件邏輯卷和縮減邏輯卷
l        擴充套件:
擴充套件邏輯卷使用lvextend命令 
[root@localhost ~]# lvextend -L +50M /dev/myvg/test0 
  Rounding up size to full physical extent 56.00 MB
  Extending logical volume test0 to 112.00 MB
  Logical volume test0 successfully resized
  [root@localhost ~]# resize2fs /dev/myvg/test0

l        縮減邏輯卷
注意事項:
i)              不要線上縮減,必須先解除安裝原有的檔案系統;
ii)            確保縮減以後的空間大小依然能夠容放下所有的資料;
iii)            在縮減之前應該先進行檔案系統檢查,以確保檔案系統處於一致性狀態。
現在示範如下:
 [root@localhost ~]# e2fsck -f /dev/myvg/test0
 [root@localhost ~]# lvreduce -L 50M /dev/myvg/test0
 [root@localhost ~]# resize2fs /dev/myvg/test0

5、建立快照捲(snapshot)
首先把需要建立快照的分割區掛載到系統相應的目錄:
[root@localhost mnt]# mount /dev/myvg/newlv /mnt/newlv/

然後執行建立快照捲的命令:
[root@localhost /]# lvcreate -L 50M -s -n newlv_snap /dev/myvg/newlv 
Rounding up size to full physical extent 56.00 MB
Logical volume "newlv_snap" created

掛載快照:
[root@localhost /]# mount /dev/myvg/newlv /snap

檢視效果:
[root@localhost newlv]# touch a b c
[root@localhost newlv]# ls /snap
a  b  c  lost+found

更多LLVM的資訊

LLVM 和 GCC 編譯器開發者將開始展開合作 http://www.linuxidc.com/Linux/2014-02/96366.htm

LLVM 基金會成立 http://www.linuxidc.com/Linux/2014-04/99454.htm

LLVM 編譯器架構獲得 ACM 軟體系統獎 http://www.linuxidc.com/Linux/2013-04/82660.htm

如何建立原生的LLVM SVN映象庫 http://www.linuxidc.com/Linux/2013-03/80162.htm

RMS 談 GCC、LLVM 和 Copyleft http://www.linuxidc.com/Linux/2014-01/95828.htm


IT145.com E-mail:sddin#qq.com