Linux LVM 管理經驗

    版本為 12:40, 14 Nov 2024

    到這個版本。

    返回到 版本存檔.

    查閱目前版本

    檢查各個 PV 的資料儲存狀況

    #>pvdisplay -m

    [root@itview ~]# pvdisplay -m
      /dev/cdrom: open failed: No medium found
      --- Physical volume ---
      PV Name               /dev/sda3
      VG Name               dataVG
      PV Size               91.00 GB / not usable 1.71 MB
      Allocatable           yes
      PE Size (KByte)       4096
      Total PE              23295
      Free PE               2815
      Allocated PE          20480
      PV UUID               ThTI03-wsKW-kzU6-VrFa-1uVr-lN1h-yc3OCl
    
      --- Physical Segments ---
      Physical extent 0 to 12799:
        Logical volume      /dev/dataVG/homeLV
        Logical extents     0 to 12799
      Physical extent 12800 to 17919:
        Logical volume      /dev/dataVG/mysqlLV
        Logical extents     0 to 5119
      Physical extent 17920 to 20479:
        Logical volume      /dev/dataVG/backupLV
        Logical extents     0 to 2559
      Physical extent 20480 to 23294:
    FREE
    在現有LVM,新增實體磁碟

    要加入一顆新的實體磁碟至LVM前,雖然實體磁碟的磁區為 ext3、LVM或不新增任何磁區,均可以被加入LVM管理,但為避免該磁碟被誤用及維護作業的標準化,強烈建議先將全新的磁碟規劃為 LVM 磁區(type = 8e),再加入 LVM 管理

    如何決定 PE 的大小

    PE - Physical Extents 預設為 4096KB,簡單來說,當實體磁碟加入 LVM 後都會轉換成 PE 的數量來作整體空間的管理,雖然PE數量多寡不會影響 I/O 效能但數量太大時會影響 LVM 工具的執行效能。同一個 VG 裡有相同的 PE 定義,且更改 PE 會影響資料完整性。

    移除 VG 裡的某個 PV

    要移除現有 PV 前,需先確定所屬的 VG 還有足夠的可用空間,可利用 pvdisplay -m 來檢視該 PV 的資料狀況。
    #>pvchange -xn /dev/mypv ;先關閉PV的分配功能
    #>pvmove -i 10 /dev/mypv  ; -i 每10秒回報執行狀態,這個操作會依資料的實際容量來決定可能花費的時間。也可以使用 -b 參數,將程序以背景模式來執行,執行狀態可以從系統日誌來檢視。

    LV snapshot(快照) 的應用

    使用時機:
    當要作資料備份時,為避免在資料備份期間,影響資料的即時存取的操作,可以利用 snapshot 作即時複製一份,以用來作備份工作的來源資料。
    這個 snapshot 的資料與原始資料一模一樣,只是啟用快照後,這裡的資料將維持在快照啟用的那個時間點的當時資料,此時可對快照的資料進行備份工作,即使備份期間,來源資料有作任何異動,都不會影響快照的資料,當備份工作完畢後,在將快照刪除。這個對於資料庫類型的資料備份很實用,因為可以不用在備份前,將資料庫鎖定限制外部的連線,如此可確保即時備份順利完成,資料庫也可維持原本的運作狀態。

    參考文件:
    http://www.howtoforge.com/linux_lvm_snapshots
    http://www.linux.org/docs/ldp/howto/...ts_backup.html
    http://bbs.chinaunix.net/viewthread.php?tid=1194156
    http://andrew.sayya.org/blog/?p=294 (繁體中文)
    http://linux.chinaunix.net/bbs/viewt...e=1#pid6913557 (snapshot原理)

    無法停用(deactivate) LV

    要停用 LV 之前,需對 filesystem 作完卸載程序
    #> umount /dev/vg1/LV1
    #> lvchange -an /dev/vg1/LV1

    但是,對於一個線上運作的系統而言,可能在卸載這個 filesystem 過程裡,雖然已確定規避了所有會使用到這個 filesystem 的程序服務,但總是會出現 device is busy 的錯誤訊息,此時會可能用到強制卸載的程序,這樣雖然可以完成 filesystem 的卸載,不過,接著要停用或移除這個 LV 時,卻總是出現該 LV 使用中的錯誤訊息,如下所示。

    [root@gtnas02 td2]# lvchange -an /dev/vg1/td2_winLV
      LV vg1/td2_winLV in use: not deactivating

    // 如何檢查 LV 已被掛載使用中
    [root@gtnas02 ~]# lvdisplay vg1/td2_winLV
      --- Logical volume ---
      LV Name                /dev/vg1/td2_winLV
      VG Name                vg1
      LV UUID                U2Zcy0-AW0q-4Esf-7kpM-ny3U-bee3-S4HRDg
      LV Write Access        read/write
      LV Status              available
      # open                 1
      LV Size                200.00 GB
      Current LE             51200
      Segments               3
      Allocation             inherit
      Read ahead sectors     0
      Block device           253:2
     

    open 是 1,表示 LV 仍被掛載使用中,此時 LV 無法被移除或停用。
    反之,若為 0,表示 LV 已被卸載,此時 LV 可以被移除或停用。

    此例是說明,若強制卸載一個之前曾作線上服務的 filesystem 時,可能導致部份程序無法終止而殘留在系統上,這些殘留的程序將使 LV 呈現開啟狀態(open=1),以致該 LV 無法執行移除或停用指令。解決方法如下:

    1. 找出 LV 的裝置識別碼(Block device)
    使用指令 lvdisplay 找出 Block device。

    Block device       253:2

    裝置識別碼為 253:2

    2. 以裝置識別碼搜尋有無殘留的程序
    #> lsof | grep 253,2  ;注意,識別碼要使用逗號

    [root@gtnas02 ~]# lsof | grep 253,2
    smbd      11934    root   19r      DIR      253,2     4096    9112573 /TD2/rene/Realtek

    // 清除這個程序
    #> kill 11934

    3. 再次檢查 LV 的開啟狀態
    [root@gtnas02 ~]# lvdisplay vg1/td2_winLV
      --- Logical volume ---
      LV Name                /dev/vg1/td2_winLV
      VG Name                vg1
      LV UUID                U2Zcy0-AW0q-4Esf-7kpM-ny3U-bee3-S4HRDg
      LV Write Access        read/write
      LV Status              available
      # open                 0
      LV Size                200.00 GB
      Current LE             51200
      Segments               3
      Allocation             inherit
      Read ahead sectors     0
      Block device           253:2
     

    open 已經變成 0 了,表示 LV 已呈現關閉狀態。

    4. 執行 LV 的停用或移除指令
    [root@gtnas02 ~]# lvchange -an vg1/td2_winLV
    [root@gtnas02 ~]# lvdisplay vg1/td2_winLV
      --- Logical volume ---
      LV Name                /dev/vg1/td2_winLV
      VG Name                vg1
      LV UUID                U2Zcy0-AW0q-4Esf-7kpM-ny3U-bee3-S4HRDg
      LV Write Access        read/write
      LV Status              NOT available
      LV Size                200.00 GB
      Current LE             51200
      Segments               3
      Allocation             inherit
      Read ahead sectors     0

    完成!

     

     

    Powered by MindTouch Core