一、LVM簡介
LVM:logical Volume Manager,Version 2
他們的驅動剛好相反
raid用的核心子產品是:md
lvm用的是dm:device mapper 裝置映射,将一個或多個底層快裝置組織成一個邏輯裝置的子產品
dm:也能實作raid
pv--vg(pe,pe,,,,)-lv
PE:phsical Extent //預設是4M
//把PV所擁有的存儲空間劃分為n個存儲塊,
//PV建立後,并沒有pe,隻有加入到vg後,才會具有pe,每個vg對pe的大小定義是不同的
//pe的大小取決于vg的定義
lv //就是指定多少個pe組成一個fs的過程
//少了可以加,多了可以減去(不損壞已經存在檔案)
//預設centos就是使用的lv
LE //一旦PE被配置設定給某個lv後,pe就變成了logical extent
//可以動态伸縮,但是使用軟體實作,一旦資料發生損壞,修複困難,因為檔案不是直接存儲在硬碟上的,而是在軟體上組織的
/dev/mapper/VG_NAME-LV_NAME //例如vg0-root,vg0上一個叫root的vg
/dev/VG_NAME-LV_NAME // /dev/vol0/root 也是可以的,一個連結檔案,便于識别
ls -l /dev/mapper/* //都是連結檔案,到/dev/dm0.*檔案
二、建立和使用邏輯卷
fdisk /dev/sdb (10g,5g,8g) 8e
partx -a /dev/sdb
pv相關指令:
pvck
pvcreate
-f 強制
-v verbose
-u 指定uuid
pvcreate /dev/sdb3
pvdisplay //顯示詳細資訊
pvmove //移動pv上的pe資料,為了移除該pv
pvremove
pvresize
pvs //簡要顯示pv
pvscan
vg相關指令
vgs
vgdisplay
vgremove
vgextend
vgreduce
vgsplit
vgcreate
-s 指定pe大小,bBsSkKmMgGtTpPeE
vgcreate -s 4M myvg /dev/sdb3
//縮減操作,需要先移動資料,然後操作
vgextend myvg /dev/sdb5 //添加一個新的硬碟
vgdisplay myvg
pvmove /dev/sdb5 //移動pv,sdb5上的資料
vgreduce myvg /dev/sdb5 //先從vg移除
//移除的話,pvmove移動資料,vgreduce,最後pvremove
lv相關指令
lvcreate
-L lv的大小
-n name
-l 指定邏輯盤區的數量pe的數量,-L和-l使用一個就可以
lv的大小必須小于将要使用的vg的大小
lv的大小未必精确,取決于pe的大小,pe預設為4M
lvcreate -L 4G -n lv0 myvg
ls -l /dev/mapper/myvg-lv0
mke2fs -t ext4 -b 1024 -L MYLV /dev/myvg/lv0
mount /dev/myvg/lv0 /tmp/test2
擴充邏輯卷://問題不大
lvextend -L [+][mMgGtT] /dev/VG_name/LV_name
//增加了,和增加到,使用+ 和不使用+
lvextend -L 5G /dev/myvg/lv0
df -h //仍然是4G,已經挂載了,改變lv大小後,不會直接改變
resize2fs /dev/myvg/lv0 //重新計算大小,不需要解除安裝
//resize2fs修改lv的邏輯邊界,lvextend修改的是實體邊界
縮減邏輯卷://必須umount
先縮減邏輯邊界,然後縮減實體邊界
umount /dev/myvg/lv0
e2fsck -f /dev/myvg/lv0 //強制檢查
resize2fs /dev/myvg/lv0 3G
lvreduce -L [-][mMgGtT] /dev/VG_NAME/LV_NAME
邏輯{_____} resize2fs
實體{_____________} lvreduce,lvextend
lvs
lvdisplay
lvextend
lvremove
lvmove
lvconf //設定lv的配置檔案
lvreduce
lvresize
三、快照
找了一張照片,例如把fs上的所有的中繼資料備份了一份(不精确)
然後始終監控着中繼資料,
建立一個快照:意味着建立了一個螢幕,監視着中繼資料
//快照卷是通路源檔案的另外一個入口一樣,源檔案上的資料發生改變的話,相應也會變化
//任何時刻當中繼資料要發生變化的時候,先複制一份到快照卷上,
//再次通路的時候,沒有發生改變的,找原卷,發生改變的,檢視快照卷上的複制的那一份
//快照卷上存儲的是發生變化的檔案
//螢幕,監視資料的改變
//快照卷的大小,最好根據
//建立快照卷後,新增加的資料不會需要做增量備份
//同一卷組中,不能跨fs
-p r|rw //快照卷隻能是隻讀的,一般建議
-n|--name 原卷 -s|--snapshot 目标卷
lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name
lvcreate -s -L 512M -n mylv_snap -p r /dev/myvg/lv0
mount /dev/myvg/mylv_snap /mnt/test2
在源卷中修改檔案,在這裡看是否發生改變
快照卷是在原有vg的基礎上建立的,不用格式化
umount /mnt/test2
lvremove /dev/myvg/mylv_snap -y
四、檔案系統挂載使用
挂載CD光牒裝置
CD光牒裝置檔案:/dev/cdrom,sr0,dvd,sr1,cdrw
mount -r /dev/cdrom /media/cdrom
fdisk -l //檢視CD光牒驅動
五、dd指令
dd if=/PATH/TO/FROM/SRC of=/PATH/TO/DEST
bs=# :block size ,複制單元大小
count=# 複制多少個bs
dd if=/etc/fstab of=/tmp/fstab bs=1 count=100 //1位元組,複制前100個位元組
磁盤拷貝:
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
dd if=/dev/zero of=/dev/sda bs=512 count=1 //清除mbr
六、LVM裝置驗證
1.ls /dev/mapper
<a href="https://s3.51cto.com/oss/201711/14/44b5e5fa1bebfec8b6066895d7d18f5f.png" target="_blank"></a>
<a href="https://s2.51cto.com/oss/201711/14/42bd4e42b57ad24bfb3a003deb7fcfb4.png-wh_500x0-wm_3-wmp_4-s_2293615180.png" target="_blank"></a>
//這兩種類都是lvm
<a href="https://s3.51cto.com/oss/201711/14/9a7635d7f7404a807ed83cd94c8935da.png-wh_500x0-wm_3-wmp_4-s_3181954482.png" target="_blank"></a>
//其中252是主裝置好,2,1分别是此裝置号
sar -d 1 2 //也可以看到裝置号
練習題
1.建立一個至少有兩個pv組成的大小為20g的名為testvg的vg,要求PE大小為16MB,而後在卷組中建立大小為5G的邏輯卷testlv,挂載到/usr目錄
2.建立使用者archlinux,要求其家目錄為/users/archlinux,而後su到archlinux使用者,複制/etc/pam.d目錄至自己的家目錄
3.擴充testlv至7G,要求archlinux使用者的檔案不能丢失
4.收縮testlv至3g,要求archlinux使用者的檔案不能丢失
5.對testlv建立快照,并嘗試基于快照備份資料,驗證快照的功能
本文轉自MT_IT51CTO部落格,原文連結:http://blog.51cto.com/hmtk520/1950136,如需轉載請自行聯系原作者