在上一篇随筆裡面 Linux學習之CentOS(二十六)--Linux磁盤管理:LVM邏輯卷的建立及使用 詳細講解了LVM邏輯卷的建立及使用,我們知道建立邏輯卷的步驟是先格式化實體硬碟位PV,然後建立一個VG,再将多個PV加入到VG中,最後基于VG建立我們的LV。在這篇随筆裡,我們将繼續學習LVM邏輯卷的知識,包括邏輯卷的拉伸及縮減...
一、拉伸一個邏輯卷
我們知道相比于傳統磁盤管理方式的各種問題,使用LVM邏輯卷來管理我們的磁盤,我們可以對其進行動态的管理。在傳統的磁盤管理方式中,我們如果出現分區大小不足的情況下,我們此時隻能通過加入一塊實體硬碟,然後對其進行分區,因為加入的硬碟作為獨立的檔案系統存在,是以對原有分區并沒有影響,如果此時我們需要擴大分區,就隻能先将之前的分區先解除安裝掉,然後将所有的資訊轉移到新的分區下,最後再将新的分區挂載上去,如果是在生産環境下,這樣是不可想象的,正因為如此,我們才出現了LVM的磁盤管理方式,可以動态的對我們的磁盤進行管理。
我們首先來看下動态拉伸一個邏輯卷的示意圖:

我們從上圖可以看到,我們在對邏輯卷進行拉伸時,其實際就是向邏輯卷中增加PE的數量,而PE的數量是由VG中剩餘PE的數量所決定的。
【注意:】邏輯卷的拉伸操作可以線上進行,不需要解除安裝掉我們的邏輯卷
這樣的好處就是當我們的邏輯卷的大小不夠用時,我們不需要對其進行解除安裝,就可以動态的增加我們的邏輯卷的大小,并不會對我們的系統産生任何影響。例如如果我們的伺服器上運作着一個重要的服務或者資料庫,并要求我們7*24小時不間斷保持線上,那麼這樣的動态增加邏輯卷的大小就非常的有必要了。
接下來我們來看看拉伸邏輯卷的步驟:
因為我們的邏輯卷的拉伸操作是可以線上進行的,是以這裡我們先将邏輯卷挂載上,并在使用情況下動态的拉伸我們的邏輯卷
①檢視目前VG的資訊,保證VG中有足夠的空閑空間 通過 vgdisplay 或者 vgs 指令
在我們的VG中還有足夠的空閑空間時,我們就可以動态的對邏輯卷進行拉伸操作了
②擴充邏輯卷 通過 lvextend 指令
比如我這裡要對 mylv 邏輯卷擴充1G的大小,此時我們就可以使用 lvextend -L +1G /dev/xiaoluo/mylv 指令來執行操作
③檢視完擴充後LV大小 擴充完後我們可以使用 lvdisplay 或者 lvs 指令來檢視一下目前lv的資訊
這個時候我們發現拉伸以後我們的邏輯卷大小變成了3G了,此時我們正在使用我的邏輯卷,并沒有解除安裝掉該邏輯卷,同時我們檢視邏輯卷裡面的内容,發現其裡面的檔案還在,并且沒有受到一點損害
④更新檔案系統 通過 resize2fs 指令
我們在對邏輯卷進行拉伸以後,我們通過 df -h 指令可以檢視一下目前的檔案系統資訊
我們發現我們目前的挂載的邏輯卷的檔案系統大小還是2G,并沒有變成3G,其原因就是我們的檔案系統是在建立完LV以後就馬上格式化的,此後我們對邏輯卷進行拉伸以後,其并不會改變目前的檔案系統,是以我們這個時候必須更新我們的檔案系統,通過使用 resize2fs 指令
此時我們發現,我們這時的檔案系統也已經更新了,大小變成了3G.
我們通過上面的步驟可以發現,拉伸一個邏輯卷的其實是非常簡單的,首先就是保持VG中有足夠的空閑空間,其次就是對我們的邏輯卷進行動态的拉伸,最後在拉伸完邏輯卷以後我們還必須要更新我們的檔案系統。同時我們可以發現,在對邏輯卷進行拉伸時我們并不需要先解除安裝掉邏輯卷,可以線上進行,并且邏輯卷裡面的檔案内容都不會發生變化。
二、拉伸一個卷組
上面介紹了如何拉伸一個邏輯卷,如果說此時我們的VG中PE的數量已經不足了,此時我們如果需要拉伸我們的邏輯卷,發現卷組中的空間已經不夠用了,這個時候我們就必須對我們的卷組進行拉伸,使得卷組中有足夠的空閑空間,最後再來拉伸我們的邏輯卷。我們知道卷組其實就是将多塊PV加入到VG當中,是以卷組的拉伸也非常的簡單,我們隻需要增加一塊實體硬碟,将其格式化成PV,然後再将這個PV加入到該卷組中即可。
這裡我們首先模拟一下将VG中的剩餘空間全部拉伸到我們的邏輯卷當中,然後我們通過增加一塊實體硬碟,來對我們的卷組進行拉伸操作
這個時候我們如果還要對邏輯卷進行擴充,但是此時我們的VG中空閑空間的大小已經不太夠用了,我們這個時候就需要對我們的卷組進行動态的拉伸了
①将要添加到VG的硬碟格式化成PV 通過 pvcreate 指令
②将新的PV添加到指定的VG當中 通過 vgextend 指令
③檢視目前VG的資訊 通過 vgdisplay 或者 vgs 指令
三、縮小一個邏輯卷
上面講的都是如何對邏輯卷進行拉伸以及對卷組進行拉伸,其實邏輯卷還可以動态的對其進行縮小,雖然在實際情況中,我們幾乎不會遇到縮小一個邏輯卷的這種情況,不過還是有必要學習一下如何縮小一個邏輯卷,首先我們也是先來看看縮小邏輯卷的一個示意圖
我們看到縮小邏輯卷其實就是從目前的LV中拿出指定的PE數量放回到VG當中。
【注意:】邏輯卷的縮小操作必須離線執行,要先解除安裝掉邏輯卷才可以
上面在講的邏輯卷的拉伸操作時我們可以線上執行,不需要解除安裝掉邏輯卷,但是在進行邏輯卷的縮小操作時,我們必須要先解除安裝掉邏輯卷才行,否則就可能造成邏輯卷裡的檔案發生損害。接下來我們來看一下對邏輯卷進行縮小操作的步驟
①解除安裝已經挂載的邏輯卷 通過 umount 指令
②縮小檔案系統(會提示需要運作fsck來檢查檔案系統) 通過 resize2fs 指令
我們在講到對邏輯卷進行拉伸的時候,其順序是先對邏輯卷進行拉伸操作,然後再更新我們的檔案系統,但是在對邏輯卷進行縮小操作時,我們必須先執行縮小檔案系統這個操作!!!這個順序必須要記清楚!!!
這個時候我們的邏輯卷的檔案系統已經被縮小為10G了,接下來我們就可以縮小我們的邏輯卷的大小了
③縮小LV 通過 lvreduce 指令
因為我們之前的LV大小為14G,我們通過縮小檔案系統将其縮減為10G,是以此時我們需要縮小4G大小的邏輯卷
縮小邏輯卷的操作是個危險的操作,稍不注意就可能損壞我們的邏輯卷,造成檔案的丢失或損害,是以我們一般不要對邏輯卷進行縮減操作!!!
縮小完邏輯卷以後,我們再将邏輯卷挂載到 /mnt 下,看看裡面的檔案是否還在
我們發現,我們之前建立的檔案,以及檔案裡的内容都沒有發生改變。
最後再強調一點:縮小邏輯卷的操作必須要先解除安裝掉邏輯卷,然後先縮小檔案系統,最後再來縮小我們的邏輯卷才行!!
四、縮小卷組
我們既然可以動态的拉伸邏輯卷、拉伸卷組以及縮小邏輯卷,那麼我們當然也可以縮小我們的卷組。什麼時候我們需要來縮小我們的卷組呢?比如說我有一塊硬碟,這個時候我們需要将這塊硬碟拆下來,或者說不想将這塊硬碟再作為邏輯卷了,這個時候我們就需要執行縮小卷組的操作了,縮小卷組的操作可以通過下面這個示意圖來展示:
比如說我們這裡需要将實體卷/sdd這塊硬碟拿走,那麼縮小卷組的步驟如下:
①首先必須也要解除安裝掉我們的邏輯卷 通過 umount 指令
②将一個PV從指定卷組中移除掉 通過 vgreduce 指令
③檢視目前卷組的資訊 通過 vgdisplay 或者 vgs 指令
④将PV删除掉 通過 pvremove 指令
至此,本篇随筆就已經告一段落了,在本篇随筆裡詳細講解了如何動态的對我們的邏輯卷進行拉伸以及縮小操作,同時對LVM的基本概念、基本原理(Linux學習之CentOS(二十五)--Linux磁盤管理:LVM邏輯卷基本概念及LVM的工作原理)以及LVM的配置使用(Linux學習之CentOS(二十六)--Linux磁盤管理:LVM邏輯卷的建立及使用)等知識的總結也全部結束了!!!
在以後學習Linux當中,将繼續記錄自己學習Linux的心得、體會!!!
本文轉自sandshell部落格51CTO部落格,原文連結http://blog.51cto.com/sandshell/1947770如需轉載請自行聯系原作者
sandshell