轉載:http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/24/3097785.html html
在上一篇詳細講解了LVM邏輯卷的建立及使用,咱們知道建立邏輯卷的步驟是先格式化物理硬盤位PV,而後建立一個VG,再將多個PV加入到VG中,最後基於VG建立咱們的LV。在這篇隨筆裏,咱們將繼續學習LVM邏輯卷的知識,包括邏輯卷的拉伸及縮減...數據庫
1、拉伸一個邏輯卷服務器
咱們知道相比於傳統磁盤管理方式的各類問題,使用LVM邏輯捲來管理咱們的磁盤,咱們能夠對其進行動態的管理。在傳統的磁盤管理方式中,咱們若是出現分區大小不足的狀況下,咱們此時只能經過加入一塊物理硬盤,而後對其進行分區,由於加入的硬盤做爲獨立的文件系統存在,因此對原有分區並無影響,若是此時咱們須要擴大分區,就只能先將以前的分區先卸載掉,而後將全部的信息轉移到新的分區下,最後再將新的分區掛載上去,若是是在生產環境下,這樣是不可想象的,正由於如此,咱們纔出現了LVM的磁盤管理方式,能夠動態的對咱們的磁盤進行管理。app
咱們首先來看下動態拉伸一個邏輯卷的示意圖:學習
咱們從上圖能夠看到,咱們在對邏輯捲進行拉伸時,其實際就是向邏輯卷中增長PE的數量,而PE的數量是由VG中剩餘PE的數量所決定的。ui
【注意:】邏輯卷的拉伸操做能夠在線進行,不須要卸載掉咱們的邏輯卷spa
這樣的好處就是當咱們的邏輯卷的大小不夠用時,咱們不須要對其進行卸載,就能夠動態的增長咱們的邏輯卷的大小,並不會對咱們的系統產生任何影響。例如若是咱們的服務器上運行着一個重要的服務或者數據庫,並要求咱們7*24小時不間斷保持在線,那麼這樣的動態增長邏輯卷的大小就很是的有必要了。code
接下來咱們來看看拉伸邏輯卷的步驟:orm
由於咱們的邏輯卷的拉伸操做是能夠在線進行的,因此這裏咱們先將邏輯卷掛載上,並在使用狀況下動態的拉伸咱們的邏輯卷htm
[root@xiaoluo ~]# mount /dev/xiaoluo/mylv /mnt [root@xiaoluo ~]# cd /mnt [root@xiaoluo mnt]# vi xiaoluo.txt [root@xiaoluo mnt]# cat xiaoluo.txt I am xiaoluo [root@xiaoluo mnt]# lslost+found xiaoluo.txt
①查看當前VG的信息,保證VG中有足夠的空閒空間 經過 vgdisplay 或者 vgs 命令
[root@xiaoluo mnt--- Volume group ---// Size / / Size / -gkf0-pg3M-5ZpY-Wqx9-C3r2-vmtnpM
在咱們的VG中還有足夠的空閒空間時,咱們就能夠動態的對邏輯捲進行拉伸操做了
②擴充邏輯卷 經過 lvextend 命令
好比我這裏要對 mylv 邏輯卷擴充1G的大小,此時咱們就可使用 lvextend -L +1G /dev/xiaoluo/mylv 命令來執行操做
[root@xiaoluo mnt% Move Log Cpy%-wi-a---- .00g ]# GiB
③查看完擴充後LV大小 擴充完後咱們可使用 lvdisplay 或者 lvs 命令來查看一下當前lv的信息
[root@xiaoluo mnt]# lvdisplay --- Logical volume --- LV Path /dev/xiaoluo/mylv LV Name mylv VG Name xiaoluo LV UUID V8j32N-dTes-vADG-47gj-vSSk-LwdX-k3FPdd LV Write Access read/write LV Creation host, time xiaoluo, 2013-05-24 20:42:46 +0800 LV Status available # open 0 LV Size 3.00 GiB // 擴充之後咱們的 mylv 邏輯卷大小變成了3G了 Current LE 768 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
這個時候咱們發現拉伸之後咱們的邏輯卷大小變成了3G了,此時咱們正在使用個人邏輯卷,並無卸載掉該邏輯卷,同時咱們查看邏輯卷裏面的內容,發現其裏面的文件還在,而且沒有受到一點損害
[root@xiaoluo mnt]# lslost+found xiaoluo.txt [root@xiaoluo mnt]# cat xiaoluo.txt I am xiaoluo
④更新文件系統 經過 resize2fs 命令
咱們在對邏輯捲進行拉伸之後,咱們經過 df -h 命令能夠查看一下當前的文件系統信息
[root@xiaoluo mnt]# df -h Filesystem Size Used Avail Use% Mounted on/dev/sda2 16G 3.8G 12G 25% /tmpfs 249M 560K 248M 1% /dev/shm/dev/mapper/xiaoluo-mylv 2.0G 68M 1.9G 4% /mnt
咱們發現咱們當前的掛載的邏輯卷的文件系統大小仍是2G,並無變成3G,其緣由就是咱們的文件系統是在建立完LV之後就立刻格式化的,此後咱們對邏輯捲進行拉伸之後,其並不會改變當前的文件系統,因此咱們這個時候必須更新咱們的文件系統,經過使用 resize2fs 命令
[root@xiaoluo mnt]# resize2fs /dev/xiaoluo/mylv resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/xiaoluo/mylv is mounted on /mnt; on-line resizing required old desc_blocks = 1, new_desc_blocks = 1Performing an on-line resize of /dev/xiaoluo/mylv to 786432 (4k) blocks. The filesystem on /dev/xiaoluo/mylv is now 786432 blocks long. [root@xiaoluo mnt]# df -h Filesystem Size Used Avail Use% Mounted on/dev/sda2 16G 3.8G 12G 25% /tmpfs 249M 560K 248M 1% /dev/shm/dev/mapper/xiaoluo-mylv 3.0G 68M 2.8G 3% /mnt // 這個時候咱們的文件系統已經更新了,大小也變成了3G
此時咱們發現,咱們這時的文件系統也已經更新了,大小變成了3G.
咱們經過上面的步驟能夠發現,拉伸一個邏輯卷的實際上是很是簡單的,首先就是保持VG中有足夠的空閒空間,其次就是對咱們的邏輯捲進行動態的拉伸,最後在拉伸完邏輯卷之後咱們還必需要更新咱們的文件系統。同時咱們能夠發現,在對邏輯捲進行拉伸時咱們並不須要先卸載掉邏輯卷,能夠在線進行,而且邏輯卷裏面的文件內容都不會發生變化。
2、拉伸一個卷組
上面介紹瞭如何拉伸一個邏輯卷,若是說此時咱們的VG中PE的數量已經不足了,此時咱們若是須要拉伸咱們的邏輯卷,發現卷組中的空間已經不夠用了,這個時候咱們就必須對咱們的卷組進行拉伸,使得卷組中有足夠的空閒空間,最後再來拉伸咱們的邏輯卷。咱們知道卷組其實就是將多塊PV加入到VG當中,因此卷組的拉伸也很是的簡單,咱們只須要增長一塊物理硬盤,將其格式化成PV,而後再將這個PV加入到該卷組中便可。
這裏咱們首先模擬一下將VG中的剩餘空間所有拉伸到咱們的邏輯卷當中,而後咱們經過增長一塊物理硬盤,來對咱們的卷組進行拉伸操做
wz--n- .99g -L +11G /dev/xiaoluo//dev/xiaoluo/. (-May-/dev/xiaoluo/mylv is mounted on /mnt; on-= , new_desc_blocks = -line resize of /dev/xiaoluo/mylv to /dev/xiaoluo/mylv is now blocks -%/dev/sda2 16G .8G 12G % /% /dev//dev/mapper/xiaoluo-% /mnt
這個時候咱們若是還要對邏輯捲進行擴充,可是此時咱們的VG中空閒空間的大小已經不太夠用了,咱們這個時候就須要對咱們的卷組進行動態的拉伸了
①將要添加到VG的硬盤格式化成PV 經過 pvcreate 命令
[root@xiaoluo mnt]# pvcreate /dev/sdd Physical volume "/dev/sdd" successfully created [root@xiaoluo mnt]# pvs PV VG Fmt Attr PSize PFree /dev/sdb xiaoluo lvm2 a-- 8.00g 0 /dev/sdc xiaoluo lvm2 a-- 8.00g 1.99g /dev/sdd lvm2 a-- 8.00g 8.00g // 此時咱們新加入的一塊硬盤尚未添加到VG當中
②將新的PV添加到指定的VG當中 經過 vgextend 命令
[root@xiaoluo mnt]# /dev/sdb xiaoluo lvm2 a-- .00g /dev/sdc xiaoluo lvm2 a-- .00g /dev/sdd xiaoluo lvm2 a-- .00g
③查看當前VG的信息 經過 vgdisplay 或者 vgs 命令
[root@xiaoluo mnt]# vgdisplay --- Volume group --- VG Name xiaoluo System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 3 Act PV 3 VG Size 23.99 GiB PE Size 4.00 MiB Total PE 6141 Alloc PE / Size 3584 / 14.00 GiB Free PE / Size 2557 / 9.99 GiB // 此時咱們發現咱們VG的大小以及獲得拉伸了 VG UUID h5oPBH-24zo-hn4N-zevL-MQVw-4EiX-x9QAyb
3、縮小一個邏輯卷
上面講的都是如何對邏輯捲進行拉伸以及對卷組進行拉伸,其實邏輯卷還能夠動態的對其進行縮小,雖然在實際狀況中,咱們幾乎不會遇到縮小一個邏輯卷的這種狀況,不過仍是有必要學習一下如何縮小一個邏輯卷,首先咱們也是先來看看縮小邏輯卷的一個示意圖
咱們看到縮小邏輯卷其實就是從當前的LV中拿出指定的PE數量放回到VG當中。
【注意:】邏輯卷的縮小操做必須離線執行,要先卸載掉邏輯卷才能夠
上面在講的邏輯卷的拉伸操做時咱們能夠在線執行,不須要卸載掉邏輯卷,可是在進行邏輯卷的縮小操做時,咱們必需要先卸載掉邏輯卷才行,不然就可能形成邏輯卷裏的文件發生損害。接下來咱們來看一下對邏輯捲進行縮小操做的步驟
①卸載已經掛載的邏輯卷 經過 umount 命令
[root@xiaoluo mnt]# cd [root@xiaoluo ~]# umount /mnt // 先將咱們的邏輯卷卸載掉
②縮小文件系統(會提示須要運行fsck來檢查文件系統) 經過 resize2fs 命令
咱們在講到對邏輯捲進行拉伸的時候,其順序是先對邏輯捲進行拉伸操做,而後再更新咱們的文件系統,可是在對邏輯捲進行縮小操做時,咱們必須先執行縮小文件系統這個操做!!!這個順序必需要記清楚!!!
[root@xiaoluo ~% Move Log Cpy%-wi-a---- ~]# . (-May-~]# . (-May-/dev/xiaoluo/mylv: / files (% non-contiguous), /~]# . (-May-/dev/xiaoluo/mylv to /dev/xiaoluo/mylv is now blocks .
這個時候咱們的邏輯卷的文件系統已經被縮小爲10G了,接下來咱們就能夠縮小咱們的邏輯卷的大小了
③縮小LV 經過 lvreduce 命令
由於咱們以前的LV大小爲14G,咱們經過縮小文件系統將其縮減爲10G,因此此時咱們須要縮小4G大小的邏輯卷
[root@xiaoluo ~]# ? [y/~% Move Log Cpy%-wi-a---- .00g
縮小邏輯卷的操做是個危險的操做,稍不注意就可能損壞咱們的邏輯卷,形成文件的丟失或損害,因此咱們通常不要對邏輯捲進行縮減操做!!!
縮小完邏輯卷之後,咱們再將邏輯卷掛載到 /mnt 下,看看裏面的文件是否還在
[root@xiaoluo ~]# mount /dev/xiaoluo/mylv /mnt/[root@xiaoluo ~]# cd /mnt/[root@xiaoluo mnt]# lslost+found xiaoluo.txt [root@xiaoluo mnt]# cat xiaoluo.txt I am xiaoluo
咱們發現,咱們以前建立的文件,以及文件裏的內容都沒有發生改變。
最後再強調一點:縮小邏輯卷的操做必需要先卸載掉邏輯卷,而後先縮小文件系統,最後再來縮小咱們的邏輯卷才行!!
4、縮小卷組
咱們既然能夠動態的拉伸邏輯卷、拉伸卷組以及縮小邏輯卷,那麼咱們固然也能夠縮小咱們的卷組。何時咱們須要來縮小咱們的卷組呢?好比說我有一塊硬盤,這個時候咱們須要將這塊硬盤拆下來,或者說不想將這塊硬盤再做爲邏輯捲了,這個時候咱們就須要執行縮小卷組的操做了,縮小卷組的操做能夠經過下面這個示意圖來展現:
好比說咱們這裏須要將物理卷/sdd這塊硬盤拿走,那麼縮小卷組的步驟以下:
①首先必須也要卸載掉咱們的邏輯卷 經過 umount 命令
[root@xiaoluo mnt]# cd [root@xiaoluo ~]# umount /dev/xiaoluo/mylv
②將一個PV從指定卷組中移除掉 經過 vgreduce 命令
[root@xiaoluo ~]# pvs // 首先咱們須要看下咱們當前有哪些PV正在使用中,由於縮小一個卷組其實就是從卷組中移除一個PV,若是PV正在使用中,那麼PV就移除不了 PV VG Fmt Attr PSize PFree /dev/sdb xiaoluo lvm2 a-- 8.00g 0 /dev/sdc xiaoluo lvm2 a-- 8.00g 5.99g /dev/sdd xiaoluo lvm2 a-- 8.00g 8.00g // 當前只有 sdd 這個PV能夠移除掉 [root@xiaoluo ~]# vgreduce xiaoluo /dev/sdd // 咱們將 /dev/sdd 這個PV從指定卷組 xiaoluo 中移除掉 Removed "/dev/sdd" from volume group "xiaoluo"
③查看當前卷組的信息 經過 vgdisplay 或者 vgs 命令
[root@xiaoluo ~]# vgdisplay --- Volume group --- VG Name xiaoluo System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 7 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 2 // 當前PV也變成了2塊了 Act PV 2 VG Size 15.99 GiB // 咱們發現這時咱們的卷組大小隻有16G了 PE Size 4.00 MiB Total PE 4094 Alloc PE / Size 2560 / 10.00 GiB Free PE / Size 1534 / 5.99 GiB VG UUID h5oPBH-24zo-hn4N-zevL-MQVw-4EiX-x9QAyb [root@xiaoluo ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb xiaoluo lvm2 a-- 8.00g 0 /dev/sdc xiaoluo lvm2 a-- 8.00g 5.99g /dev/sdd lvm2 a-- 8.00g 8.00g // dev/sdd 這個PV已經從卷組中移除掉了
④將PV刪除掉 經過 pvremove 命令
[root@xiaoluo ~]# pvremove /dev/sdd Labels on physical volume "/dev/sdd" successfully wiped
至此,本篇隨筆就已經告一段落了,在本篇隨筆裏詳細講解了如何動態的對咱們的邏輯捲進行拉伸以及縮小操做,同時對LVM的基本概念、基本原理