LVM的簡單學習

jolly10發表於2008-04-03

在網上看到一些LVM的配置,參考文件做了一些實驗。

這裡記錄一下,以後用到方便查詢。

[@more@]

在網上看到一些LVM的配置,參考文件做了一些實驗。

參考資料:

http://www.itpub.net/thread-964714-1-1.html


1,lvm它用來簡化分割槽管理,因為有時添減硬碟或增刪分割槽,利用fdisk,pq實為不便,故搞來一個lvm,用作os和分割槽的管理大管家.
2,概念:
pv ---相當於硬碟或硬碟某個分割槽
vg ---多個pv的集合.
lv ---構建於vg上,類似於檔案系統(我把它理解對應為windows下的目錄)

3,操作
pvcreate /dev/hda ----also can pvcreate /dev/hdb1
vgcreate vg1 /dev/hda
lvcreate -L 200m -n lv1 vg1
mke2fs /dev/vg1/lv1
mount /dev/vg1/lv1 /mnt ---/mnt可為其它的載入點 在每次自動載入檔案系統 在/etc/fstab新增 /dev/vg1/lv1
/mnt default 12
cd /mnt
do anything on it

--------查pv,vg,lv相應資訊
pvdisplay
vgdisplay
lvdisplay

vgchange -ay vg1 ---activate vg,do need reboot

vgextend vg1 /dev/hdc1 ---新增新的pv或新硬碟到vg
vgreduce vg1 /dev/hda1 --從vg中刪除pv,先查是否被lv使用.要在使用,先移資料.再delete
umount /dev/vg1/lv1 lvremove /dev/vg1/lv1 ----刪除一個lv,first umount,then delete
lvextend -L12g /dev/vg1/lv1 ---擴充套件lv容量.到12g
lvextend -L+12g /dev/vg1/lv1 ---lv容量增加12g
umount /dev/vg1/lv1 resize_reiserfs/dev/vg1/lv1 mount-treiserfs /dev/vg1/lv1 /mnt ---對lv擴容後,以使檔案使用它
umount /dev/vg1/lv1 resize_reiserfs-s-2g /dev/vg1/lv1 lvreduce -L -2g /dev/vg1/lv1
mount -treiserfs /dev/vg1/lv1 /mnt ----減少lv大小,對應filesystem.

以下附上lvm的概念:
LVM
LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,它是Linux環境下對磁碟分割槽進行管理的一種機制,LVM是建立在硬碟和分割槽之上的一個邏輯層,來提高磁碟分割槽管理的靈活性。前面談到,LVM是在磁碟分割槽和檔案系統之間新增的一個邏輯層,來為檔案系統遮蔽下層磁碟分割槽佈局,提供一個抽象的盤卷,在盤捲上建立檔案系統。物理卷(physical volume)物理卷就是指硬碟分割槽或從邏輯上與磁碟分割槽具有同樣功能的裝置(如RAID),是LVM的基本儲存邏輯塊,但和基本的物理儲存介質(如分割槽、磁碟等)比較,卻包含有與LVM相關的管理引數。

Linux使用者安裝Linux作業系統時遇到的一個最常見的難以決定的問題就是如何正確地給評估各分割槽大小,以分配合適的硬碟空間。而遇到出現 某個分割槽空間耗盡時,解決的方法通常是使用符號連結,或者使用調整分割槽大小的工具(比如PatitionMagic等),但這都只是暫時解決辦法,沒有根 本解決問題。隨著Linux的邏輯盤卷管理功能的出現,這些問題都迎刃而解,本文就深入討論LVM技術,使得使用者在無需停機的情況下方便地調整各個分割槽大 小。
  
  一、前言
  
  每個Linux使用者在安裝Linux時都會遇到這樣的困境:在為系統分割槽 時,如何精確評估和分配各個硬碟分割槽的容量,因為系統管理員不但要考慮到當前某個分割槽需要的容量,還要預見該分割槽以後可能需要的容量的最大值。因為如果估 計不準確,當遇到某個分割槽不夠用時管理員可能甚至要備份整個系統、清除硬碟、重新對硬碟分割槽,然後恢復資料到新分割槽。
  
  雖然現在有 很多動態調整磁碟的工具可以使用,例如PartationMagic等等,但是它並不能完全解決問題,因為某個分割槽可能會再次被耗盡;另外一個方面這需要 重新引導系統才能實現,對於很多關鍵的伺服器,停機是不可接受的,而且對於新增新硬碟,希望一個能跨越多個硬碟驅動器的檔案系統時,分割槽調整程式就不能解 決問題。
  
  因此完美的解決方法應該是在零停機前提下可以自如對檔案系統的大小進行調整,可以方便實現檔案系統跨越不同磁碟和分割槽。幸運的是Linux提供的邏輯盤卷管理(LVM,LogicalVolumeManager)機制就是一個完美的解決方案。
  
   LVM是邏輯盤卷管理(LogicalVolumeManager)的簡稱,它是Linux環境下對磁碟分割槽進行管理的一種機制,LVM是建立在硬碟和 分割槽之上的一個邏輯層,來提高磁碟分割槽管理的靈活性。透過LVM系統管理員可以輕鬆管理磁碟分割槽,如:將若干個磁碟分割槽連線為一個整塊的卷組 (volumegroup),形成一個儲存池。管理員可以在卷組上隨意建立邏輯卷組(logicalvolumes),並進一步在邏輯卷組上建立檔案系 統。管理員透過LVM可以方便的調整儲存卷組的大小,並且可以對磁碟儲存按照組的方式進行命名、管理和分配,例如按照使用用途進行定義: “development”和“sales”,而不是使用物理磁碟名“sda”和“sdb”。而且當系統新增了新的磁碟,透過LVM管理員就不必將磁碟的 檔案移動到新的磁碟上以充分利用新的儲存空間,而是直接擴充套件檔案系統跨越磁碟即可。
  
  二、LVM基本術語
  
  前面談到,LVM是在磁碟分割槽和檔案系統之間新增的一個邏輯層,來為檔案系統遮蔽下層磁碟分割槽佈局,提供一個抽象的盤卷,在盤捲上建立檔案系統。首先我們討論以下幾個LVM術語:
  
  *物理儲存介質(Thephysicalmedia)
  這裡指系統的儲存裝置:硬碟,如:/dev/hda1、/dev/sda等等,是儲存系統最低層的儲存單元。
  
  *物理卷(physicalvolume)
  物理卷就是指硬碟分割槽或從邏輯上與磁碟分割槽具有同樣功能的裝置(如RAID),是LVM的基本儲存邏輯塊,但和基本的物理儲存介質(如分割槽、磁碟等)比較,卻包含有與LVM相關的管理引數。
  
  *卷組(VolumeGroup)
  LVM卷組類似於非LVM系統中的物理硬碟,其由物理卷組成。可以在卷組上建立一個或多個“LVM分割槽”(邏輯卷),LVM卷組由一個或多個物理卷組成。
  
  *邏輯卷(logicalvolume)
  LVM的邏輯卷類似於非LVM系統中的硬碟分割槽,在邏輯卷之上可以建立檔案系統(比如/home或者/usr等)。
  
  *PE(physicalextent)
  每一個物理卷被劃分為稱為PE(PhysicalExtents)的基本單元,具有唯一編號的PE是可以被LVM定址的最小單元。PE的大小是可配置的,預設為4MB。
  
  *LE(logicalextent)
  邏輯卷也被劃分為被稱為LE(LogicalExtents)的可被定址的基本單位。在同一個卷組中,LE的大小和PE是相同的,並且一一對應。
  
   
  
  首先可以看到,物理卷(PV)被由大小等同的基本單元PE組成。
  
   
  
  一個卷組由一個或多個物理卷組成。
  
   
  
  從上圖可以看到,PE和LE有著一一對應的關係。邏輯卷建立在卷組上。邏輯卷就相當於非LVM系統的磁碟分割槽,可以在其上建立檔案系統。
  
  下圖是磁碟分割槽、卷組、邏輯卷和檔案系統之間的邏輯關係的示意圖:
  
   
  
  和非LVM系統將包含分割槽資訊的後設資料儲存在位於分割槽的起始位置的分割槽表中一樣,邏輯卷以及卷組相關的後設資料也是儲存在位於物理捲起始處的VGDA(卷組描述符區域)中。VGDA包括以下內容:PV描述符、VG描述符、LV描述符、和一些PE描述符。
  
  系統啟動LVM時啟用VG,並將VGDA載入至記憶體,來識別LV的實際物理儲存位置。當系統進行I/O操作時,就會根據VGDA建立的對映機制來訪問實際的物理位置。


下面是測試過程,首先安裝了rhel4,建立了4個lvm的分割槽

[root@localhost ~]# fdisk -l

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 382 3068383+ 83 Linux
/dev/sda2 383 509 1020127+ 83 Linux
/dev/sda3 510 636 1020127+ 82 Linux swap
/dev/sda4 637 1305 5373742+ 5 Extended
/dev/sda5 637 763 1020096 8e Linux LVM
/dev/sda6 764 890 1020096 8e Linux LVM
/dev/sda7 891 1017 1020096 8e Linux LVM
/dev/sda8 1018 1292 2208906 83 Linux
/dev/sda9 1293 1305 104391 8e Linux LVM

現在建立物理卷(PV)
[root@localhost ~]# pvcreate /dev/sda5
Physical volume "/dev/sda5" successfully created
[root@localhost ~]# pvcreate /dev/sda6
Physical volume "/dev/sda6" successfully created

建立卷組(VG)
[root@localhost ~]# vgcreate test /dev/sda5 /dev/sda6
/dev/cdrom: open failed: No medium found
Volume group "test" successfully created

現在我們有一個空的卷組(VG),讓我們來檢查一下:

[root@localhost ~]# vgdisplay -v test
Using volume group(s) on command line
Finding volume group "test"
--- Volume group ---
VG Name test
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 1.94 GB
PE Size 4.00 MB
Total PE 496
Alloc PE / Size 0 / 0
Free PE / Size 496 / 1.94 GB
VG UUID ohVPAF-N3xI-XOFF-JHKz-sFBr-zSI1-WfzL2n

--- Physical volumes ---
PV Name /dev/sda5
PV UUID ms81Pu-R67P-Pse4-ZTwg-tGjS-tTNR-FyrCVj
PV Status allocatable
Total PE / Free PE 248 / 248

PV Name /dev/sda6
PV UUID xLGaAZ-eGZ6-H2Js-ii8E-3A2p-jjnf-v4P4FT
PV Status allocatable
Total PE / Free PE 248 / 248

建立邏輯卷(LV),在test卷組中建立一個100M的MYLV。
[root@localhost ~]# lvcreate -L 100M -n MYLV test
Logical volume "MYLV" created

我們建立一個檔案系統
[root@localhost /]# mke2fs /dev/test/MYLV
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

再來看看卷組的資訊,已加入的LV的資訊
[root@localhost /]# vgdisplay -v test
Using volume group(s) on command line
Finding volume group "test"
--- Volume group ---
VG Name test
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 1.94 GB
PE Size 4.00 MB
Total PE 496
Alloc PE / Size 25 / 100.00 MB
Free PE / Size 471 / 1.84 GB
VG UUID ohVPAF-N3xI-XOFF-JHKz-sFBr-zSI1-WfzL2n

--- Logical volume ---
LV Name /dev/test/MYLV
VG Name test
LV UUID qIFQpY-erDT-qZrx-johZ-Yr4M-9j7e-S5iSXG
LV Write Access read/write
LV Status available
# open 0
LV Size 100.00 MB
Current LE 25
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0

--- Physical volumes ---
PV Name /dev/sda5
PV UUID ms81Pu-R67P-Pse4-ZTwg-tGjS-tTNR-FyrCVj
PV Status allocatable
Total PE / Free PE 248 / 223

PV Name /dev/sda6
PV UUID xLGaAZ-eGZ6-H2Js-ii8E-3A2p-jjnf-v4P4FT
PV Status allocatable
Total PE / Free PE 248 / 248

可以看到/dev/sda6完全沒有用,而/dev/sda5用掉了25個物理卷

下面擴充套件LV
[root@localhost /]# lvextend -L 200M /dev/test/MYLV
Extending logical volume MYLV to 200.00 MB
Logical volume MYLV successfully resized

[root@localhost /]# vgdisplay -v test
Using volume group(s) on command line
Finding volume group "test"
--- Volume group ---
VG Name test
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 1.94 GB
PE Size 4.00 MB
Total PE 496
Alloc PE / Size 50 / 200.00 MB
Free PE / Size 446 / 1.74 GB
VG UUID ohVPAF-N3xI-XOFF-JHKz-sFBr-zSI1-WfzL2n

--- Logical volume ---
LV Name /dev/test/MYLV
VG Name test
LV UUID qIFQpY-erDT-qZrx-johZ-Yr4M-9j7e-S5iSXG
LV Write Access read/write
LV Status available
# open 0
LV Size 200.00 MB
Current LE 50
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0

--- Physical volumes ---
PV Name /dev/sda5
PV UUID ms81Pu-R67P-Pse4-ZTwg-tGjS-tTNR-FyrCVj
PV Status allocatable
Total PE / Free PE 248 / 198

PV Name /dev/sda6
PV UUID xLGaAZ-eGZ6-H2Js-ii8E-3A2p-jjnf-v4P4FT
PV Status allocatable
Total PE / Free PE 248 / 248

看到/dev/sda5已被使用了50個PV了

也可以用+號來擴大LV,

[root@localhost /]# lvextend -L +20M /dev/test/MYLV
Extending logical volume MYLV to 220.00 MB
Logical volume MYLV successfully resized

但為LV擴容的一個前提是:LV所在的VG有足夠的空閒儲存空間可用。
[root@localhost /]# lvextend -L 5000M /dev/test/MYLV
Extending logical volume MYLV to 4.88 GB
Insufficient suitable allocatable extents for logical volume MYLV: 754 more required

在為LV擴容之後,應同時為LV之上的檔案系統擴容,使二者相匹配。對不同的檔案系統有相對應的擴容方法
下面透過resize2fs來改變
[root@localhost dev]# resize2fs /dev/test/MYLV
resize2fs 1.35 (28-Feb-2004)
Resizing the filesystem on /dev/test/MYLV to 225280 (1k) blocks.
The filesystem on /dev/test/MYLV is now 225280 blocks long.

在LVM發行包中有一個稱為e2fsadm的工具,它同時包含了lvextend與resize2fs的功能
# e2fsadm -L+1G /dev/testvg/testlv
等價於下面兩條命令:
# lvextend -L+1G /dev/testvg/testlv
# resize2fs /dev/testvg/testlv
但使用者仍需首先解除安裝檔案系統。

但我的系統沒有這個工具,我的系統是rhel5的。

縮小LV
[root@localhost other]# lvreduce -L -100M /dev/test/MYLV
WARNING: Reducing active logical volume to 120.00 MB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce MYLV? [y/n]: y
Reducing logical volume MYLV to 120.00 MB
Logical volume MYLV successfully resized

[root@localhost other]# vgdisplay -v test
Using volume group(s) on command line
Finding volume group "test"
--- Volume group ---
VG Name test
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 1.94 GB
PE Size 4.00 MB
Total PE 496
Alloc PE / Size 30 / 120.00 MB
Free PE / Size 466 / 1.82 GB
VG UUID ohVPAF-N3xI-XOFF-JHKz-sFBr-zSI1-WfzL2n

--- Logical volume ---
LV Name /dev/test/MYLV
VG Name test
LV UUID qIFQpY-erDT-qZrx-johZ-Yr4M-9j7e-S5iSXG
LV Write Access read/write
LV Status available
# open 0
LV Size 120.00 MB
Current LE 30
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0

--- Physical volumes ---
PV Name /dev/sda5
PV UUID ms81Pu-R67P-Pse4-ZTwg-tGjS-tTNR-FyrCVj
PV Status allocatable
Total PE / Free PE 248 / 218

PV Name /dev/sda6
PV UUID xLGaAZ-eGZ6-H2Js-ii8E-3A2p-jjnf-v4P4FT
PV Status allocatable
Total PE / Free PE 248 / 248

因為LV沒有被掛載,所以可以直接減小。如果被掛載的話應該要先umount下來

下面試著在PV間轉移資料
若要把一個PV從VG中移除,應首先把其上所有活動PE中的資料轉移到其它PV上,而新的PV必須是本VG的一部分,有足夠的空間。
將/dev/sda5的PV都轉到/dev/sda6上,用pvmove命令
[root@localhost other]# pvmove /dev/sda5 /dev/sda6
test-pvmove0: device not found
/dev/sda5: Moved: 100.0%
[root@localhost other]# vgdisplay -v test
Using volume group(s) on command line
Finding volume group "test"
--- Volume group ---
VG Name test
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 8
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 1.94 GB
PE Size 4.00 MB
Total PE 496
Alloc PE / Size 30 / 120.00 MB
Free PE / Size 466 / 1.82 GB
VG UUID ohVPAF-N3xI-XOFF-JHKz-sFBr-zSI1-WfzL2n

--- Logical volume ---
LV Name /dev/test/MYLV
VG Name test
LV UUID qIFQpY-erDT-qZrx-johZ-Yr4M-9j7e-S5iSXG
LV Write Access read/write
LV Status available
# open 0
LV Size 120.00 MB
Current LE 30
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0

--- Physical volumes ---
PV Name /dev/sda5
PV UUID ms81Pu-R67P-Pse4-ZTwg-tGjS-tTNR-FyrCVj
PV Status allocatable
Total PE / Free PE 248 / 248

PV Name /dev/sda6
PV UUID xLGaAZ-eGZ6-H2Js-ii8E-3A2p-jjnf-v4P4FT
PV Status allocatable
Total PE / Free PE 248 / 218

如果我們發現/dev/sda5已損失,想用/dev/sda7來替換。應該先象上面一樣將sda5的資料備份一下或移到共它
分割槽。如果LV的掛載的,要先解除安裝。

[root@localhost /]# pvcreate /dev/sda7
Physical volume "/dev/sda7" successfully created

[root@localhost /]# vgextend test /dev/sda7
Volume group "test" successfully extended

[root@localhost /]# vgreduce test /dev/sda5
Removed "/dev/sda5" from volume group "test"

[root@localhost /]# vgdisplay -v test
Using volume group(s) on command line
Finding volume group "test"
--- Volume group ---
VG Name test
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 10
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 1.94 GB
PE Size 4.00 MB
Total PE 496
Alloc PE / Size 30 / 120.00 MB
Free PE / Size 466 / 1.82 GB
VG UUID ohVPAF-N3xI-XOFF-JHKz-sFBr-zSI1-WfzL2n

--- Logical volume ---
LV Name /dev/test/MYLV
VG Name test
LV UUID qIFQpY-erDT-qZrx-johZ-Yr4M-9j7e-S5iSXG
LV Write Access read/write
LV Status available
# open 0
LV Size 120.00 MB
Current LE 30
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0

--- Physical volumes ---
PV Name /dev/sda6
PV UUID xLGaAZ-eGZ6-H2Js-ii8E-3A2p-jjnf-v4P4FT
PV Status allocatable
Total PE / Free PE 248 / 218

PV Name /dev/sda7
PV UUID 0yEaqD-WFlm-IE4m-eIS7-J8dE-7LyN-5B62FH
PV Status allocatable
Total PE / Free PE 248 / 248

看到/dev/sda5也不見了,將/dev/sda7加了進來。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-1001822/,如需轉載,請註明出處,否則將追究法律責任。

相關文章