天天看點

LVM的配置與管理

邏輯卷 LVM: logical volume management

邏輯意義上将多塊塊裝置組織起來當做一個裝置來使用。

Abstract layer 抽象層:隐藏了底層的硬體細節,而輸出給使用者更高意義上的邏輯裝置。

動态地擴大或者縮小磁盤空間。

版本:lvm  lvm2普遍使用

PV  Pysical Volume 實體卷,就是我們的實體磁盤或者分區 ,類似于/dev/sda2, /dev/sda3等等,由PE  Physical Extends(實體磁盤塊,類似于chunk)組成。多個PV可以組合起來形成一個VG(卷組  Volume Group)。

PE (Physical Extend)  建立VG的時候指定的block塊大小,預設是4MB。一個VG最大可以容許65534個PE。

VG (Volume Group 卷組) 将一個或者多個PV組合起來形成一個大的磁盤。最大容量與PE有關,預設最大的LVM可達到256G。

在卷組的層次上,把多個底層不同的分區或者硬碟輸出給使用者空間,使得使用者看起來就像一個裝置一樣,卷組可以增大或者縮減。

卷組類似于擴充分區,不能直接使用。需要在卷組的基礎上繼續建構一個層次,稱之為LV

(Logical Volume 邏輯卷)

LV (Logical Volume 邏輯卷) 由VG分割出來,可以被系統使用。f

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_12989616179ze4.png"></a>

         PE,VG,LV的關系

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_12989616199KqR.png"></a>

                                LV建立過程

常用指令:

顯示:pvdisplay  vgdisplay lvdisplay

掃描:pvscan vgscan lvscan

建立:pvcreate vgcreate lvcreate

移除:pvremvoe  vgremove  lvremove

擴充:vgextend lvextend

縮減:vgreduce lgreduce

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961621ziUO.png"></a>

建立一個LV的過程:

建立兩個分區:/dev/sda14  /dev/sda15

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961624oGHR.png"></a>

建立實體卷:

[root@server27 ~]# pvcreate /dev/sda14

    Physical volume "/dev/sda14" successfully created

[root@server27 ~]# pvcreate /dev/sda15

   Physical volume "/dev/sda15" successfully created

[root@server27 ~]# pvdisplay

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_12989616252pJl.png"></a>

建立卷組:

[root@server27 ~]# vgcreate myvg /dev/sda14

  Volume group "myvg" successfully created

[root@server27 ~]# vgdisplay

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961626BOPo.png"></a>

建立邏輯卷

[root@server27 ~]# lvcreate -L 100M -n lv1 myvg

  Logical volume "lv1" created

-L  建立邏輯卷的大小

-n  邏輯卷的名字

myvg  在哪個卷組中建立

[root@server27 ~]# lvdisplay myvg

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961627I0Tm.png"></a>

下面就可以格式化,正常挂載使用了。

[root@server27 ~]# mkfs -t ext3 /dev/myvg/lv1

[root@server27 ~]# mount /dev/myvg/lv1 /lvm

[root@server27 ~]# cd /lvm

[root@server27 lvm]# ls

lost+found

[root@server27 lvm]# cp /etc/fstab ./

fstab  lost+found

擴充邏輯卷:

PS: lvcreate -L 200M  /dev/myvg/lv1   擴充到200M

     lvcreate -L +200M /dev/myvg/lv1    在原有的基礎上再擴充200M

     -l 指定PE的個數

[root@server27 lvm]# lvextend -l +25 /dev/myvg/lv1

  Extending logical volume lv1 to 200.00 MB

  Logical volume lv1 successfully resized

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961628xFpF.png"></a>

沒有增大,怎麼回事?

邏輯卷的增大要分兩個步驟。預設情況下,剛建立完一個分區并格式化後,邏輯邊界和實體邊界一樣大,當使用lvextend隻是将實體邊界給擴大了,邏輯邊界依然沒有變。此時需要将邏輯邊界也擴大一下,使用resizefs指令。

[root@server27 ~]# resize2fs -p /dev/myvg/lv1

resize2fs 1.39 (29-May-2006)

Filesystem at /dev/myvg/lv1 is mounted on /lvm; on-line resizing required

Performing an on-line resize of /dev/myvg/lv1 to 204800 (1k) blocks.

The filesystem on /dev/myvg/lv1 is now 204800 blocks long.

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961629GQo0.png"></a>

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961629oPYM.png"></a>

檔案正常,不受影響。

先擴充VG,再擴充LV的操作:

[root@server27 lvm]# vgextend myvg /dev/sda15

  Volume group "myvg" successfully extended

[root@server27 lvm]# vgdisplay

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961630Wbs3.png"></a>

縮減邏輯卷:在不影響檔案使用的前提下,對邏輯卷空間的縮減。

先縮減邏輯邊界 再縮減實體邊界

fsck   file system check 檔案系統一緻性檢查

先解除安裝:

[root@server27 lvm]# umount /lvm

umount: /lvm: device is busy

[root@server27 ~]# fuser -km /dev/myvg/lv1

/dev/myvg/lv1:       10854c

[root@server27 ~]# umount /lvm

檔案系統一緻性檢查

[root@server27 ~]# e2fsck -f /dev/myvg/lv1

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961631X2M1.png"></a>

縮減邏輯邊界

[root@server27 ~]# resize2fs /dev/myvg/lv1 100M

Resizing the filesystem on /dev/myvg/lv1 to 102400 (1k) blocks.

The filesystem on /dev/myvg/lv1 is now 102400 blocks long.

[root@server27 ~]# lvreduce -L 100M /dev/myvg/lv1

  WARNING: Reducing active logical volume to 100.00 MB

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce lv1? [y/n]: y

  Reducing logical volume lv1 to 100.00 MB

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961634U8Kk.png"></a>

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_12989616351enb.png"></a>

資料未受影響

Q:如果删除的PV上有資料呢?

pvmove  移動資料到其他實體卷中

PS:pvrmove 移除實體卷

[root@server27 ~]# pvmove /dev/sda14

  /dev/sda14: Moved: 60.0%

  /dev/sda14: Moved: 100.0%

[root@server27 ~]# vgreduce myvg /dev/sda14

  Removed "/dev/sda14" from volume group "myvg"

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961635FnrD.png"></a>

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961636EvWA.png"></a>

資料正常,未受影響

将/dev/sda14移除,再顯示一下PV已經看不到了。

[root@server27 lvm]# pvremove /dev/sda14

  Labels on physical volume "/dev/sda14" successfully wiped

[root@server27 lvm]# pvdisplay

Snapshot 快照

快照就是将當時的系統資訊記錄下來,就好像照相記錄一般! 未來若有任何資料更動了,則原始資料會被搬移到快照區,沒有被更動的區域則由快照區與檔案系統共享。

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961638MWmU.png"></a>

左圖為最初建置系統快照區的狀況,LVM 會預留一個區域 (左圖的左側三個 PE 區塊) 作為資料存放處。 此時快照區内并沒有任何資料,而快照區與系統區共享所有的 PE 資料, 是以你會看到快照區的内容與檔案系統是一模一樣的。 等到系統運作一陣子後,假設 A 區域的資料被更動了 (上面右圖所示),則更動前系統會将該區域的資料移動到快照區, 是以在右圖的快照區被占用了一塊 PE 成為 A,而其他 B 到 I 的區塊則還是與檔案系統共享!

快照區與被快照的 LV 必須要在同一個 VG 上頭。

備份工具:dump  - ext2/3 filesystem backup

-level#  指定備份級别 0---9  0完全備份   1---9 增量備份:隻備份上一次比此次級别低的到這一刻為止的内容

-f  把備份的結果儲存到的位置

-u  在每次成功備份之後,将備份資訊更新到/etc/dumpdates 檔案中。

恢複工具:

restore

     -r 重建檔案系統

     -f file 從檔案中恢複,可以是一個特殊裝置例如 /dev/st0(錄音帶裝置)或者/dev/sda1或者是一個普通檔案

建立一個快照卷:

[root@server27 lvm]# lvcreate -L 10M -s -n snap_lv1 /dev/myvg/lv1

  Rounding up size to full physical extent 12.00 MB

  Logical volume "snap_lv1" created

[root@server27 lvm]# lvdisplay

<a href="http://lyp0909.blog.51cto.com/attachment/201103/1/508999_1298961640LlXt.png"></a>

建立之後就可以挂載了

[root@server27 lvm]# mkdir /snap

[root@server27 lvm]# mount -o ro /dev/myvg/snap_lv1 /snap

[root@server27 lvm]# cd /snap/

[root@server27 snap]# ls

PS:當改變的資料超過10M時,快照就會發生崩潰的情況。

對快照備份:

[root@server27 snap]# dump -0u -f /tmp/lv1.backuo /snap

恢複

[root@server27 lvm]# restore -rf /tmp/lv1.backuo

fstab  lost+found  restoresymtable

PS:redo 重做日志,undo 撤銷重做

事務:把多個語句放在一起當做整體來執行。

undo.log保證資料永遠處于一緻。

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

繼續閱讀