天天看點

lvm原理與使用

 lvm主要功能之一可以按需要調整檔案系統的大小。 将多個分區組合成一個大的分區,可以線上調整它們的大小。如果要縮小的話就先解除安裝再縮小。

1,實作步驟:lvm(邏輯滾動條管理者)将幾個實體的分區或磁盤通過軟體組合成為一塊看起來是一個獨立的大磁盤(VG),再将這塊大磁盤分割可以被使用的分區(LV),最終經過格式化與挂載才可以被使用。

physical volume (pv)--->vg(volume group)--->lv(logical volume)

(1)pv(實體卷):将實體的分區調整成lvm能識别的分區,也就是修改分區辨別,修改成8e。然後經過pvcreate指令将分區轉換成lvm最底成的實體卷,之後才能加以利用。

(2)vg(卷組):由pv組合而成。可以在卷組上建立一個或多個LV(邏輯卷),LV由一個或多個實體卷組成。

(3)lv(邏輯卷):在vg上進行分區,類似于系統中普通分區,也需要在lv上建立檔案系統。

(4)pe(physical extend):每一個實體卷被劃分為稱為pe(擴充卷)的基本單元,具有唯一編号的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,預設為4MB。

(5)le(logical extend):邏輯卷也被劃分為被稱為le(擴充卷)的可被尋址的基本機關。在同一個卷組中,le的大小和pe是相同的,并且一一對應。、

2,實驗流程:在主機上分出4個100M的分區,并将id改成8e。

(1)建立 pv:pvcreate(将實體分區建立成pv),pvscan(掃描目前系統上的pv磁盤),pvdisplay(顯示目前系統pv狀态),pvremove(将pv屬性移除,讓該分區不具有pv屬性),pvmove(移動pe)

pvcreate /dev/sda5,pvcreate /dev/sda6(或者pvcreate /dev/sda{5,6}

(2)建立vg: vgcreate(建立vg),vgscan(掃描系統上面的vg),vgdisplay(顯示目前系統上面的vg狀态),vgextend(在vg内增加pv),vgreduce(在vg内移pv),vgchange(設定vg是否啟動active),vgremove(删除vg)

vgcreate bingovg /dev/sda{5,6}(bingovg自己定義vg的名稱,這裡也可以指定pe的大小,加-s 後面跟大小,預設pe是4M)

(3)建立lv: lvcreate(建立lv),lvscan(掃描系統上面的lv), lvdisplay(顯示目前系統上的lv狀态),lvextend(在lv内增加容量),lvreduce(在lv内縮小容量),lvremove(删除一個lv),lvresize(對lv大小進行調整)

lvcreate  -L 100M -n bingolv bingovg(-L指定容量,也可以換成-l指定pe的數量)

(4)格式化與挂載:

mke2fs -j /dev/bingovg/bingolv(注意/dev/bingovg/bingolv是/dev/mapper/bingovg-bingolv的軟連結)

mount /dev/bingovg/bingolv  /mnt(到這裡已經完成基本的lv建立)

(5)增加lv容量,如果vg還有剩餘容量,則可以直接增加

 lvextend -L +100M /dev/bingovg/bingolv(或者lvresize -L +100M /dev/bingovg/bingolv兩個指令效果一樣,這一步是實體邊界擴大)

resize2fs /dev/bingovg/bingolv(這一步調整檔案系統的邊界,經過這一步之後,被擴大的才會被檔案系統所識别)

如果vg沒有剩餘的容量,則需要先擴大vg的容量才能擴大lv,如下

pvcreate /dev/sda{7,8}

vgextend bingovg /dev/sda{7,8}

lvextend -L +200M /dev/bingovg/bingolv

resize2fs /dev/bingovg/bingolv

(6)縮小lv容量,這需要解除安裝(把/dev/sda5拿掉)

umount /mnt

pvdisplay (查找/dev/sda5的pv大小)

e2fsck -f /dev/bingovg/bingolv 先執行這一步,強制檢查。否則會導緻資料丢失。

resize2fs /dev/bingovg/bingolv 100M 這是縮小檔案系統的容量

lvreduce -L 100M /dev/bingovg/bingolv(這是縮小實體邊界的容量,lvextend不支援縮小,縮減後實體邊界為100M,如果使用-L -100M表示在原來基礎上減去100M,檔案系統的容量終于要小于等于實體邊界的容量,當檔案系統邊界的容量比實體邊界的容量還大時,資料肯定已經出現混亂或者丢失。)

pvdisplay(檢視/dev/sda5的PE是否還在使用中)

如果/dev/sda5的free pe不是0,則需要執行下面的指令

pvmove /dev/sda5 /dev/sda8(隻有sda8 的free pe能夠容下sda5的pe)

pvmove bingovg /dev/sda5

這時/dev/sda5可以拿去用别的用途。

3,lvm還有一重要的功能是建立快照,快照的作用可以用來做備份之用。

<a href="http://blog.51cto.com/attachment/201206/153516318.jpg" target="_blank"></a>

如上圖所示,當對lv建立一個快照區之後,從這建立快照的時間之後,通過快照通路裡面的内容還是那個時刻之前的,在那個時刻之後所做的修改,并不影響快照中的内容。這樣做用處是,當我們要備份lv中的資料時,隻要備份快照中的資料就ok。

建立快照區需要在vg中有空餘的容量,當然快照建立大小由自己需要決定。也就是說,在這備份這段時間内資料發生更改的頻率太高,就建大一點。

建立快照之前先在往/dev/bingovg/bingolv裡複制資料,在/mnt下有/boot 和inittab

<a href="http://blog.51cto.com/attachment/201206/163329770.jpg" target="_blank"></a>

lvcreate -L 100M -s -n  bingosnap  -p r /dev/bingovg/bingolv(—L指定大小 -s表示建立快照, -n表示快照名,-p表示這個快照隻讀r)

挂載快照  mount /dev/bingovg/bingosnap /media

<a href="http://blog.51cto.com/attachment/201206/163709870.jpg" target="_blank"></a>

快照中的内容跟原檔案的内容一樣,這時,可以對快照做備份

tar -jcf /backups/lv.tar.bz2 /media

在/dev/bingovg/bingolv增加内容與删除并不影響之前那一刻的資料,做完備份之後可以删除快照。

umount /media

lvremove  /dev/bingovg/bingosnap

快照到此的使命也完成

本文轉自 deng304749970 51CTO部落格,原文連結:http://blog.51cto.com/damondeng/903554,如需轉載請自行聯系原作者

繼續閱讀