#>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前,雖然實體磁碟的磁區為 ext3、LVM或不新增任何磁區,均可以被加入LVM管理,但為避免該磁碟被誤用及維護作業的標準化,強烈建議先將全新的磁碟規劃為 LVM 磁區(type = 8e),再加入 LVM 管理。
PE - Physical Extents 預設為 4096KB,簡單來說,當實體磁碟加入 LVM 後都會轉換成 PE 的數量來作整體空間的管理,雖然PE數量多寡不會影響 I/O 效能但數量太大時會影響 LVM 工具的執行效能。同一個 VG 裡有相同的 PE 定義,且更改 PE 會影響資料完整性。
要移除現有 PV 前,需先確定所屬的 VG 還有足夠的可用空間,可利用 pvdisplay -m 來檢視該 PV 的資料狀況。
#>pvchange -xn /dev/mypv ;先關閉PV的分配功能
#>pvmove -i 10 /dev/mypv ; -i 每10秒回報執行狀態,這個操作會依資料的實際容量來決定可能花費的時間。也可以使用 -b 參數,將程序以背景模式來執行,執行狀態可以從系統日誌來檢視。
使用時機:
當要作資料備份時,為避免在資料備份期間,影響資料的即時存取的操作,可以利用 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原理)
要停用 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
完成!