如果發現檔案系統的容量不足了,可以通過 lvm 輕鬆的進行擴充套件(當然也可以進行縮減操作)。本文將緊接前文中的 demo 詳細的介紹擴充套件檔案系統的操作過程。說明:本文的演示環境為 ubuntu 16.04。
當我們收到可用磁碟空間不足的警報時,就需要去診斷磁碟空間相關的問題了。一般的結果是:增加磁碟容量(簡單有效,清理掉一些看似沒用的檔案是件風險極大的事情)!
df 命令可以幫助我們檢視檔案系統的容量:
上圖中的 lv nicklv00 的總容量為 15g,此時可用容量已經不足 1g了,我們接下來擴充套件這個 lv。
在動手擴充套件檔案系統的容量前,我們需要先搞清楚當前系統中磁碟的基本情況。lsblk 命令可以幫助我們檢視系統上的所有塊裝置列表(下面命令中筆者通過 -e 選項排除了 loop 裝置和光碟機):
我們比較關注掛載點 /home/doc 對應的檔案系統的情況:它的磁碟型別為 lvm,對應的 lv 名稱為 nicklv00,lv 在名稱為 nickvg 的 vg 中。其中磁碟的整個容量為 20g,而 lv 的容量只有 15g。我們先用 lvdisplay 命令來觀察下 lv 的詳細資訊:
這裡比較重要的兩點是 lv 的容量為 15g,它所屬的 vg 名稱為 nickvg。接下來用 vgdisplay 命令檢視名稱為 nickvg 的 vg 的詳細資訊:
通過 pvs 可以檢視 pv 與 vg 的組成關係:
vg nickvg 是由 pv /dev/sdd1 構成的,/dev/sdd1 的容量為 19.97g。要檢視 pv 的詳細資訊,可以使用 pvdisplay 命令:
至此我們已經搞清楚了系統當前的儲存系統(忽略了我們不太關心的磁碟),總結一下:硬碟裝置 /dev/sdd 的容量為 20g,其上建立了乙個 20g 的硬碟分割槽 /dev/sdd1,硬碟分割槽 /dev/sdd1 被建立為 lvm 的物理卷(pv,pv 的名稱依然是 /dev/sdd1),大小仍然為 20g。在物理卷 /dev/sdd1 上建立了容量為 20g 的捲組(vg) nickvg,在 nickvg 中有乙個 15g大小的邏輯卷(lv) nickvg/nicklv00。檔案系統就建立在 lv 上,掛載點為 /home/doc。
我們打算為 /home/doc 下掛載的檔案系統增加 50g 的容量,因此僅僅利用 vg 中剩餘的 4.97g 空間時不夠的。簡單起見,我們直接新增一塊容量為 50g 的硬碟(此處為虛擬磁碟),通過 lvm 新增到 vg 中,然後擴充套件 lv,並最終完成擴充套件檔案系統的任務。
在虛擬機器中新增虛擬磁碟並非難事,這裡不再細說,筆者新增的磁碟裝置檔案為 /dev/sde:
接下來請參照前文《lvm : 簡介》中的介紹建立磁碟分割槽,並用磁碟分割槽建立 lvm 物理卷(pv)。
筆者建立的磁碟分割槽為 /dev/sde1:
建立的物理卷如下所示:
接下來我們需要通過 vgextend 命令擴充套件捲組。vgextend 命令可以把乙個或多個物理卷(lv)加入到 vg 中:
$ sudo vgextend nickvg /dev/sde1檢查 vg nickvg 的詳細資訊:
此時 vg 的容量已經變成了 69.94g,可用的容量有 54.94g,擴充套件 vg 成功了!再看看 vg 與 pv 的關係:
vg nickvg 由 /dev/sdd1 和 /dev/sde1 兩個 pv 組成,當前總的可用空間為 4.97g + 49.97g。
lvm 最主要的功能就是能動態地調整分割槽的大小,其實也就是修改邏輯(lv)的容量。修改 lv 容量的命令有 lvextend(擴充套件邏輯卷)和 lvreduce(縮減邏輯卷),這兩個命令的用法差不多,這裡我們只介紹 lvextend 命令。lvextend 命令的格式如下:
lvextend [-l (+size) -l (+pe 數)] 邏輯卷名稱
-l 選項表示為 lv 增加指定 size 的容量。
-l 選項表示為 lv 增加指定數目的 pe。
我們通過下面的命令來擴充套件 lv:
$ sudo lvextend -l 65g nickvg/nicklv00或者:$
然後檢查下 lv 的詳細資訊:
nickvg/nicklv00 邏輯卷的大小已經變成了 65g。再看看 pv 的資訊:
哈哈,居然不是直接用光 /dev/sde1 上的空間,而是先用光 /dev/sdd1 上的空間,然後從 /dev/sde1 上分配剩餘的空間。
縮減邏輯卷的方式和擴充套件邏輯卷的方式差不多,只不過使用的是 lvreduce 命令。
resize2fs 命令用來擴充套件或收縮檔案系統的容量,但是這個命令只支援 ext2、ext3、ext4 格式的檔案系統。筆者的檔案系統為 ext4,所以可以使用 resize2fs 命令進行擴充套件。這個命令還有乙個特點,如果是擴充套件檔案系統的容量,那麼不管目標檔案系統是否處於掛載狀態都可以執行。如果是縮減檔案系統的容量,則只能先解除安裝檔案系統,縮減容量後再重新掛載檔案系統。下面的命令把檔案系統的容量擴充套件至 lv 的總容量:
$ sudo resize2fs /dev/nickvg/nicklv00再去檢視下檔案系統的資訊:目標檔案系統已經顯示被擴充套件到了 64g(各種開銷),至此我們完成了檔案系統的擴容任務。
使用 lvm 管理磁碟讓檔案系統的擴充套件/縮減變得非常容易,特別是可以自由的組合硬體磁碟為更大的容量單位(vg),使系統維護者的工作變得輕鬆不少。除此之外,lvm 還支援快照等特色功能,筆者將在接下來的文章中介紹如何使用 lvm 的快照。
參考:
在linux中擴充套件/縮減lvm(第二部分)
vgextend man page
resize2fs man page
LVM 縮減檔案系統的容量
有擴充套件就有縮減,我們在前文 lvm 擴充套件檔案系統的容量 中介紹了通過 lvm 擴充套件檔案系統的方法,本文我們接著前文的 demo 介紹通過 lvm 縮減檔案系統的方法。說明 本文的演示環境為 ubuntu 16.04。接下來我們再把它重新縮減為 15g,並移除新新增的磁碟 dev sde。...
lvm 擴充套件根目錄 Lvm擴充套件根目錄容量
新加一塊硬碟,我的是 sdb先建立物理卷 root redhat6 3 fdisk dev sdb command mfor help ncommand action eextended pprimary partition 1 4 ppartition number 1 4 first cylin...
Linux系統 檔案系統與LVM 邏輯
格式化命令 mkfs mkswap mkfs格式化資料磁碟 mkfs t ext4 dev sdb1 mkfs.ext4 dev sdb1 t 指定格式化檔案型別 b 指定 block 大小,單位位元組 i inode大小 u 設 uuid 號 q 執行不顯示資訊 mkswap格式化虛擬磁碟 swa...