LVM管理全面總結

tonyzhou_cn發表於2012-06-19

總結:

1、檢視rpm -qa |grep lvm  檢視系統所安裝的LVM版本,因為RHEL 各個版本的LVM的版本也不一樣。因為各個版本建立的VG,都可以查到,所以涉及到版本轉換的問題,

vgconvert -M2 vg00  轉換為LVM2.0版本  具體可以man vgconvert 來研究。

2、Lvm的層次結構

最底層是pv -----vg-------lv-----檔案系統------使用,(一般的軟體必須在檔案系統上使用,也就是需要格式化成ext2/3等格式,但oracle可以使用LV的裸裝置)

3、建立lvm

思路:首先分割槽要建立PVPV之前要有檔案系統,接著建立VG, LV

Pvcreate /dev/sdb  ----&gt  vgcreate vg00 /dev/sdb /dev/sdc (-s  指定32M 指定VG支援的大小64M 支援4T ,32M 好像夠用了) ----&gtlvcreate -L 500M -n lv00 vg00 (500M)-------&gtmkfs -t ext3 /dev/vg00/lv00  格式化-----midir /data , mount 掛載完成--編輯/etc/fstab,完成

4、新增新硬碟

思路:首先對硬碟格式化 fdisk ,然後建立PV建立PV時注意格式化後硬碟的名字 ),接著將PV加入VG。增加兩個硬碟sdb sdc

操作:fdisk /dev/sdb/c 分別輸入引數np1,回車,格式化mke2fs /dev/sdb/c-------&gtpvcreate /dev/sdb/c , vgextend vg00 /dev/sdb /dev/sdc 增加之後,vgdisplay 確認,

如果出現錯誤“Couldn't find device with uuid ”  vgreduce –removemissing vg00這個命令解決

5、增加LV空間

思路先增加LV空間,然後再更新檔案系統,

Lvextend -L +500M /dev/vg00/lv00 增加之後,然後resize2fs /dev/vg00/lg00 

6、減少LV空間(生產系統慎重,且很少)

 思路:先減少檔案系統空間,然後減少LV空間

操作:先umount /data ,檢查檔案系統e2fsck -f /dev/vg00/lv00, resize2fs /dev/vg00/lv00 剩餘的空間 ,掛載系統上mount /dev/vg00/lv00 確認是否減少系統無誤,df檢視,最後減少邏輯卷  lvreduce -L 500M /dev/vg00/lv00 減少之後。

7、減少硬碟

  思路:用pvdisplay檢視刪除的硬碟的空間佔用情況, 如果有檔案佔用硬碟,就用pvmove命令來操作,然後用vgreduce 減少物理卷

操作:pvmove /dev/sda2   將資料移到剩餘的LV空間裡,然後 vgreduce vg00 /dev/sdb。將sdb移除空間。

8、lvm不提供容錯,生產系統中,所以LVM一般都是應用在做好了raid0/1/5等磁碟陣列上,如果沒有這些,也需要做軟raid(md0,軟raid硬碟),或者做硬raid 也就是伺服器上的raid(陣列)卡

9、Lvm back 配置檔案備份和恢復

a) vgchange -A y --refresh vg00 ( 檢視VG自動備份是否開啟,預設是開啟的,-A 自動備份,表示“是”)  具體檢視  man vgchage

b) Vgcfgbakup -f /tmp/aaa.backup vg00

c) vgcfgrestore -f /tmp/aaa.bakup vg00

d) vgchange -a n vg00 VG置為不可用。代表可用。

10、LVM快照功能 snap

冷備,系統停下來備份,熱備,系統執行中備份,

思路:首先檢視要備份的LVM佔用的空間大小,然後建立一個快照LV來備份
操作如下:lvdispaly  ====  lvcreate -L XXXM -s -n lvbakup /dev/vg00/lv00 (為lv00建立的).====== mount /dev/vg00/lvbakup /mnt   完成了

snapshot是一種特殊的邏輯卷,它就是對邏輯卷快照

建立快照使用lvcreate

一個例子

lvcreate    -L   50M   - s     -p    r   -n  lvmsnap     /dev/myvol/mylv1

注:-L 50M  是指定快照卷變化的大小

        -s  說明建立的是快照卷

        -p    r 建立的快照卷是隻讀的,防止使用者在快照卷建立檔案,快照可以卷僅僅是讓我們獲得一個備份路徑

        -n   lvmsnap   給快照捲起的名字

        /dev/myvol/mylv1   對哪個邏輯卷建立快照卷,此處在卷組myvol下的邏輯卷mylv1建立

建立完就可以掛載了

mkdir    /snap

mount    -o   ro    /dev/myvol/lvmsnap   /snap

注:快照卷和邏輯卷在同一個目錄下

     -o   ro指定只讀方式掛載

cd   /snap

拷過來一個檔案rc.sysinit做實驗,wc  -l  rc.sysinit看到他有980

然後修改一下

vim   /lvm/rc.sysinit 刪除它的前10

此時 wc  -l  /lvm/rc.sysinit  可以看到他有970

再看當前目錄下wc  -l   rc.sysinit 仍然是980

此時head  rc.sysinit可以看到刪除的10行出現在/snap下面

使用tar備份tar  jcf  /root/lvm.tar.bz2  /snap/*

建立完成後解除安裝

umount /snap

刪除快照卷 lvremove   /dev/myvol/lvmsnap

cd  /lvm    注:/lvm/dev/myvol/mylv1掛載的位置

rm  -f  rc.sysinit

tar   jxf  /root/lvm.tar.bz2   -C  /lvm

mv  /snap/*    ./

例子2

問題:1、備份一個非常繁忙的伺服器,需要停止大量的程式。否則,你將以資料不一致告終。
      
      
      2、儲存資料庫或目錄。如果一個檔案在使用狀態,我們就沒有任何線索了,除非我們給應用程式時間做一個清
         除的關閉。
      
這樣我們不得不關閉程式,做備份,然後重新啟動他們。時間的長短。。影響我們的工作。。
解決:使用LVM,我們可以做一個LV瞬間的快照,然後mount它,再備份它。
步驟:
# mount /dev/test/HOWTO /mnt
# echo > /mnt/a.test.file
# ls /mnt/  
a.test.file  lost+found
# ls -l /mnt/
total 13
-rw-r--r--    1 root     root            1 Apr  2 00:28 a.test.file
drwxr-xr-x    2 root     root        12288 Apr  2 00:28 lost+found
Ok,我們現在有些事情要用它一起做。讓我們產生這個快照:
# lvcreate --size 16m --snapshot --name snap /dev/test/HOWTO
lvcreate -- WARNING: all snapshots will be disabled if more than 16 MB are changed
lvcreate -- INFO: using default snapshot chunk size of 64 KB
lvcreate -- doing automatic backup of "test"
lvcreate -- logical volume "/dev/test/HOWTO" successfully created
# mount /dev/test/snap /snap
# ls /snap
total 13
-rw-r--r--    1 root     root            1 Apr  2 00:28 a.test.file
drwxr-xr-x    2 root     root        12288 Apr  2 00:28 lost+found
現在我們從原處刪除a.test.file,並且檢查它是否仍然在快照裡:
# rm /mnt/a.test.file
# ls /snap
total 13
-rw-r--r--    1 root     root            1 Apr  2 00:28 a.test.file
drwxr-xr-x    2 root     root        12288 Apr  2 00:28 lost+found
原理:
記得我們不得不設定“--size”引數嗎?真正發生的事情是,“snap”卷需要有那些當LVM呼叫時,在原處要被改變的所有塊的一個複製。
當我們刪除a.test.file時,它的i節點被刪除。這引起64KB要被標註成髒的”--同時原始資料的一個複製被寫到“snap”卷。這個例子中,我們分配了16MB給快照,因此如果多於16MB的塊要被修改,快照就會無效了。
要決定一個快照分割槽的正確大小,你將不得不推測基於主LV的使用模式、快照要啟用的總時間。例如,在午夜,當無人使用系統的情況下,一個幾小時的備份可能要求很小的空間。
請注意,快照不是永久的。如果你卸下LVM或重啟,它們就丟失了,需要重新建立。
經過我的實驗:快照的目的是保持瞬間的資料,而不影響系統的執行。。。(靜態備份某一時刻的資料)
相關命令:  lvremove--刪除lv
          lvcreate --size 1000M --snapshot --name varsnap /dev/(邏輯卷)
---------------------------------------
應用探討:
透過 lvm 為一致性備份做快照
假如你的資料在/usr/mysql/var下。。而你的/usr是一個lvm。。
可以透過lvm做一致性快照備份資料。。
lvcreate --size 1000M --snapshot --name varsnap /dev/(邏輯卷)
mkdir /bakfile
mount /dev/vgX/varsnap /bakfile
tar -czvf mysql.tar.gz /bakfile
注:不影響mysql的執行。。。

 

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

相關文章