LVM管理全面總結
總結:
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
思路:首先分割槽要建立PV,PV之前要有檔案系統,接著建立VG, LV
Pvcreate /dev/sdb ----> vgcreate vg00 /dev/sdb /dev/sdc (-s 指定32M 指定VG支援的大小64M 支援4T ,32M 好像夠用了) ---->lvcreate -L 500M -n lv00 vg00 (500M)------->mkfs -t ext3 /dev/vg00/lv00 格式化-----》midir /data , mount 掛載完成--編輯/etc/fstab,完成
4、新增新硬碟
思路:首先對硬碟格式化 fdisk ,然後建立PV(建立PV時注意格式化後硬碟的名字 ),接著將PV加入VG。增加兩個硬碟sdb sdc
操作:fdisk /dev/sdb/c 分別輸入引數n、p、1,回車,格式化mke2fs /dev/sdb/c------->pvcreate /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 自動備份,y 表示“是”) 具體檢視 man vgchage
b) Vgcfgbakup -f /tmp/aaa.backup vg00
c) vgcfgrestore -f /tmp/aaa.bakup vg00
d) vgchange -a n vg00 將VG置為不可用。y 代表可用。
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- yield全面總結
- JNDI全面總結
- LVM管理LVM
- Flutter填坑全面總結Flutter
- LVM的知識總結和操作大全LVM
- 京東前端工程化和靜態資源管理全面總結前端
- AIX系統LVM管理PV/VG/LV常用命令總結與實戰AILVM
- LVM磁碟管理LVM
- LVM管理操作LVM
- aix lvm 管理AILVM
- SAP轉儲單全面總結
- Retrofit使用方法全面總結
- C語言全面總結-3C語言
- mysql函式全面總結KSVMMySql函式
- 很全面的vue面試題總結Vue面試題
- PHP超時處理全面總結PHP
- RAC管理總結
- cookie和session的區別(全面總結)CookieSession
- 超全面的vue.js使用總結Vue.js
- Java 容器相關知識全面總結Java
- android開發之svg全面總結AndroidSVG
- 最全面的JavaScript除錯技巧總結JavaScript除錯
- Android藍芽開發全面總結Android藍芽
- LVM 邏輯卷管理LVM
- AIX系統 LVM 管理AILVM
- HP-UX lvm管理UXLVM
- LVM 管理linux磁碟LVMLinux
- 邏輯卷管理-LVMLVM
- Linux_lvm管理LinuxLVM
- 微服務最全詳解(圖文全面總結)微服務
- 關於C++ const 的全面總結C++
- 非常全面的Linux知識點總結Linux
- Android Intent的幾種用法全面總結AndroidIntent
- LVM_邏輯卷管理LVM
- 全面總結: Golang 呼叫 C/C++,例子式教程GolangC++
- 負載均衡最全詳解(圖文全面總結)負載
- Hive常用效能優化方法實踐全面總結Hive優化
- 全面總結Android記憶體洩漏(下)Android記憶體