LVM組成
LVM:logic volume manager .LVM即邏輯卷管理,現(xiàn)在使用版本為第二版,即version2
邏輯卷:pv,physical volume,即計(jì)算機(jī)上的磁盤設(shè)備,例如我的計(jì)算機(jī)上的/dev/sda3,/dev/sda5.
卷組:vg,volume group。一般由多個(gè)pv組成。
邏輯卷:lv,logical volume是在vg上是劃分好可以直接使用分區(qū)
pe:physical extend,是在pv加入vg后vg把所有pv劃分成的很多的小塊,是LVM最小的分區(qū)單位,我的計(jì)算機(jī)上pe大小為4M,這個(gè)大小可以在創(chuàng)建vg時(shí)根據(jù)需要制定。
LVM原理
vg可以由多個(gè)pv在組成,如果隨著時(shí)間的推移vg不夠用了,就可增加一些pv到vg里面。如果vg太大,感覺用不完浪費(fèi)掉了,就可以減少一些pv,并保證里面數(shù)據(jù)不會受到影響。
Vg和lv:vg可以近似看成計(jì)算機(jī)上的一個(gè)完整的硬盤,把vg劃分成多個(gè)lv的過程類似于把計(jì)算機(jī)的一個(gè)硬盤劃分成多個(gè)分區(qū)的過程,同樣lv也像硬盤分區(qū)那樣格式化后才能使用。
如果非要拿硬盤和LVM作比較的話,拿我的計(jì)算機(jī)來說,vg相當(dāng)于硬盤/dev/sda,lv相當(dāng)于/dev/sda1,/dev/sda2,/dev/sda3等,lv一般也要格式化后才能使用。
Lv:如果lv里的數(shù)據(jù)增多,lv的空間不夠用了,vg就可以增加一些空間給lv,如果空間太多就給lv縮減空間。前面提到的pe,就是lv的基本組成單元,假如一個(gè)pe大小為4M,如果要創(chuàng)建一個(gè)4G的lv,vg就會分1000個(gè)pe給lv。如果后來lv的空間最多使用量不足2G,為了節(jié)省磁盤,vg就從lv取下500個(gè)pe,這樣就可以節(jié)省2G空間了,并且不會損壞原有數(shù)據(jù)。
優(yōu)點(diǎn):調(diào)整分區(qū)十分快捷方便,隨意增減分區(qū)大小而對數(shù)據(jù)幾乎不產(chǎn)生影響.
缺點(diǎn):如果碰上百年不遇的霉運(yùn),數(shù)據(jù)損壞,想要找回?cái)?shù)據(jù)卻極為困難.
dm:device mapper將底層塊設(shè)備組織成一個(gè)邏輯設(shè)備模塊
像擴(kuò)展分區(qū),不能直接格式化使用,必須化分成lv才能格式化使用pe默認(rèn)4M,一個(gè)lv是一個(gè)文件系統(tǒng)
Lv設(shè)備路徑:
Lv設(shè)備路徑有兩種表達(dá)方式
/dev/mapper/VG_NAME-LV__NAME和 /dev/VG_ANME/LV_NAME
以我的電腦舉例就分別是:
/dev/mapper/testvg-testlv和/dev/testvg/testlv
testvg是我的電腦的一個(gè)vg名字,testlv是testvg上的一個(gè)lv,也是一個(gè)獨(dú)立文件系統(tǒng)。
命令詳解:
pv: physicalvolume物理卷
查看pv有哪些可用命令:先敲出字母pv,再連敲兩下TABpvs:查看pv簡要信息
pvscan:scan all disks for physical volumes瀏覽pv簡要信息和使用情況
pvdisplay:查看所有pv的詳細(xì)信息。后可加設(shè)備名查看某個(gè)pv的詳細(xì)信息
pvdisplay /dev/sda3
pvcreate:創(chuàng)建新的pv??梢淮蝿?chuàng)建一個(gè)或多個(gè)
pvcreate /dev/sda{5,6,7}—–注意,創(chuàng)建pv前事先用fdisk用t命令把分區(qū)格式調(diào)為8e
pvmove把pv上的pe數(shù)據(jù)移動到其他pv上去
pvmove /dev/sda5,如果有數(shù)據(jù)就自動找pv移動了,如果數(shù)據(jù)很多會移動很長時(shí)間pvremove:刪除物理卷
pvremove /dev/sda3pvck :check physical volume metadata
pvck /dev/sda5vg:volume group 卷組 vg按TAB查看所有vg相關(guān)命令
vgs 和vgscan:查看vg簡要信息
vgdisplay:查看vg詳所有細(xì)信息,后跟設(shè)備可查看某個(gè)vg信息
vgcreate:創(chuàng)建vg,-s指定PE大小
vgcreate testvg -s 16M /dev/sda{5,6,8}vgextend:擴(kuò)展vg,給vg增加pv。 vgextend myvg /dev/sda5
vgreduce:縮減vg,從vg去掉某個(gè)pv。myvg /dev/sda5
vgreduce –removemissing VG_NAME 移除未識別的pv -a 移除vg內(nèi)所有pv
vgremove:刪除vg
lv: logical volume 邏輯卷
lv敲TAB查看所有相關(guān)命令lvs和lvscan:查看所有l(wèi)v的簡要信息
lvdisplay:查看所有或某個(gè)lv的詳細(xì)信息
lvdisplay /dev/myvg/mylv
lvdisplay /dev/mapper/myvg-mylv
- lvcreate :創(chuàng)建lv
-L 指明空間大小
-n指定lv的名字
-l :指定pe數(shù)量
例:lvcreate -L 2G -n mylv myvg ——在myvg上創(chuàng)建名為mylv的lv
ls /dev/mapper ————查看lv是否創(chuàng)建成功
mke2fs -t ext4 -b 1024 -L mylv /dev/myvg/mylv —–格式化lv
- lvremove:刪除lv
擴(kuò)展邏輯卷:注意,要先擴(kuò)展物理邊界再擴(kuò)展邏輯邊界
lvextend -L 5G /dev/myvg/mylv
擴(kuò)展lv物理邊界為5G(給lv增加pe數(shù)量),+3G表示在原來基礎(chǔ)上增加3G
df –lh ————查看所有磁盤設(shè)備大小,可查看lv是否變大
resize2fs /dev/myvg/mylv 擴(kuò)展邏輯邊界到物理邊界,不需要卸載
df -lh
縮減邏輯卷lvreduce 注意,要先縮減邏輯邊界再縮減物理邊界
umount /dev/vg-name/lv-name ——先卸載lv
e2fsck -f /dev/vgname/lvname ——-強(qiáng)制檢測lv
resize2fs /dev/vg/lv -3G —————把lv的邏輯邊界在原來的基礎(chǔ)上減少3G
lvreduce -L -3G /dev/vg/lv ————-把lv的物理邊界減少3G,即減去一些pe塊
mount ——–重新掛載
df –lh ———–查看lv大小是否變化
- snapshot:快照卷
原理:
正常備份數(shù)據(jù)的時(shí)候數(shù)據(jù)不能發(fā)生變化,否則備份出來的數(shù)據(jù)的是不完整的。但對于1T的數(shù)據(jù)做備份需要半個(gè)小時(shí)以上,這期間數(shù)據(jù)很難保持不變,為了解決這個(gè)問題,快照卷應(yīng)運(yùn)而生。
快照是在一瞬間記錄下要備份的內(nèi)容的元數(shù)據(jù),然后監(jiān)控這些元數(shù)據(jù),如果元數(shù)據(jù)即將發(fā)生變化,就把將要變化的內(nèi)容備份到快照里面,這樣,快照里就存儲著變化前的數(shù)據(jù)的備份。
快照和原文件應(yīng)該屬于同一個(gè)卷組vg,通過快照訪問未變化的數(shù)據(jù)時(shí),就像通過一個(gè)硬鏈接直接進(jìn)入原文件訪問。所以創(chuàng)建快照卷時(shí)不用格式化。
lvcreate -s -L 512M -n mysnap -p r /dev/myvg/mylv ———-創(chuàng)建快照卷
-s指明創(chuàng)建的是快照卷,-L指明快照卷大小,-n指明快照卷的名字,-p權(quán)限 最后面指定是誰的快照
mount /dev/myvg/mylv-snap /mnt ——掛載快照卷
cp –a /mnt/* ~/ ————-然后把快照卷里的東西備份出來,就可卸磨殺豬了
umount /mnt
lvremove /dev/myvg/mylv-snap刪除
練習(xí):
1、創(chuàng)建一個(gè)至少有兩個(gè)pv組成的大小為20G的名為testvg,要求PE大小為16M
然后在卷組中創(chuàng)建大小為5G的邏輯卷testlv掛在至/users下
[root@yph6 ~]# pvcreate /dev/sda{5,6,8}
[root@yph6 ~]# vgcreate testvg -s 16M /dev/sda{5,6,8}
[root@yph6 ~]# lvcreate -L 2G -n testlv testvg ——–創(chuàng)建名為testlv的lv
[root@yph6 ~]# mke2fs -t ext4 -b 2048 -L testlv /dev/testvg/testlv —卷標(biāo)為testlv
[root@yph6 ~]# mount /dev/testvg/testlv /users
[root@yph6 ~]# cd /users
[root@yph6 users]# ll
total 16
drwx—— 2 root root 16384 Dec 18 23:22 lost+found ——出現(xiàn)lost+found說明掛載成功
2、新建用戶archlinux,要求家目錄為/users/archlinux,然后用archlinux用戶,復(fù)制/etc/pam.d至自己家目錄
[root@yph6 users]# useradd -d /users/archlinux archlinux -d制定家目錄
[root@yph6 users]# su – archlinux
[archlinux@yph6 ~]$ cp -R /etc/pam.d ~/
[archlinux@yph6 ~]$ ll
total 2
drwxr-xr-x 2 archlinux archlinux 2048 Dec 18 23:28 pam.d
[archlinux@yph6 ~]$ pwd
/users/archlinux
3、擴(kuò)展testlv至7G,要求archlinux用戶文件不能丟失
[root@yph6 ~]# pvcreate /dev/sda9
Physical volume "/dev/sda9" successfully created
[root@yph6 ~]# vgextend testvg /dev/sda9
Volume group "testvg" successfully extended
lvextend -L 7G /dev/testvg/testlv
Size of logical volume testvg/testlv changed from 2.00 GiB (128 extents) to 7.00 GiB (448 extents).
Logical volume testlv successfully resized
[root@yph6 ~]# resize2fs /dev/testvg/testlv ——–lv的邏輯邊界與物理邊界一樣大
4、收縮至3G,文件不能丟失
[root@yph6 ~]# umount /dev/testvg/testlv
umount: /users: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
[root@yph6 ~]# fuser -km /dev/testvg/testlv ——把占用的程序殺死
/dev/testvg/testlv: 4081c 5441c 5442c
[root@yph6 ~]# umount /dev/testvg/testlv
[root@yph6 ~]# e2fsck -f /dev/testvg/testlv —-強(qiáng)制檢測
[root@yph6 ~]# resize2fs /dev/testvg/testlv 3G ———-收縮邏輯邊界至3G
[root@yph6 ~]# lvreduce -L 3G /dev/testvg/testlv ———–收縮物理邊界至3G
[root@yph6 ~]# mount /dev/testvg/testlv /users
[root@yph6 ~]# su – archlinux
[archlinux@yph6 ~]$ ll
total 2
drwxr-xr-x 2 archlinux archlinux 2048 Dec 18 23:28 pam.d ——原來數(shù)據(jù)還在
5、對testlv創(chuàng)建快照,基于快照備份數(shù)據(jù),驗(yàn)證快照功能
[root@yph6 mnt]# umount /mnt
umount: /mnt: device is busy.
[root@yph6 mnt]# fuser -km /mnt ——–殺死占用的進(jìn)程
[root@yph6 ~]# umount /mnt
[root@yph6 ~]# lvcreate -s -L 100M -n snaplv -p r /dev/testvg/testlv —-對testlv做個(gè)快照卷
Rounding up size to full physical extent 112.00 MiB
Logical volume "snaplv" created.
~]# mount /dev/testvg/snaplv /mnt ——-快照卷不用格式化,直接掛載
mount: block device /dev/mapper/testvg-snaplv is write-protected, mounting read-only
[root@yph6 ~]# ll /mnt
total 13
drwx—— 5 archlinux archlinux 1024 Dec 19 11:30 archlinux -快照不負(fù)眾望,備份了數(shù)據(jù)
drwx—— 2 root root 12288 Dec 19 11:10 lost+found
[archlinux@yph6 ~]$ touch text ——archlinux在家目錄新建個(gè)文件
[archlinux@yph6 ~]$ ll
total 2
drwxr-xr-x 2 archlinux archlinux 2048 Dec 19 11:28 pam.d
-rw-rw-r– 1 archlinux archlinux 0 Dec 19 11:46 text
[archlinux@yph6 ~]$ cd /mnt/archlinux —–進(jìn)入快照卷
[archlinux@yph6 archlinux]$ ll —-快照里面沒有快照創(chuàng)建后新增文件
total 2
drwxr-xr-x 2 archlinux archlinux 2048 Dec 19 11:28 pam.d
[archlinux@yph6 archlinux]$ cp -aR /mnt/archlinux /tmp —-把快照里的數(shù)據(jù)備份出來
[archlinux@yph6 archlinux]$ cd /tmp/archlinux
[archlinux@yph6 archlinux]$ ll
total 4
drwxr-xr-x 2 archlinux archlinux 4096 Dec 19 11:28 pam.d —-看來已經(jīng)備份成功
[root@yph6 ~]# umount /mnt
[root@yph6 ~]# lvremove /dev/testvg/snaplv —–快照卷已經(jīng)發(fā)揮了自己的人生價(jià)值,
按社會慣例我們該卸磨殺豬了。
Do you really want to remove active logical volume snaplv? [y/n]: y
Logical volume "snaplv" successfully removed
附加一個(gè)小命令
dd命令:
if,input file ;of,outputfile
dd if=/etc/fstab of=/tmp/fstab.2 bs=1 count=100
bs,block size 字節(jié); count,復(fù)制次數(shù)
dd命令比較底層,比cp效率更高
用于磁盤拷貝:
dd if=/dev/sda of=/dev/sdb
備份MBR:
dd if=/dev/sda of=/tmp/mbr.bar bs=512 count=1
破壞MBR中的bootloader:
dd if=/dev/zero of=/dev/sda bs=256 count=1