Linux文件系統擴容


起因:文件系統/DATA僅有60G,目前只剩2%的空間,因為機器是公司總部統一管理的,沒辦法,舔着臉找總部要資源吧。

然后:如圖所示

結果:自己想辦法搞吧,博客上看看,眼花繚亂(可能沒找到正確的那個),最終翻到了“鳥哥”的一篇,問題解決,感謝“鳥哥”。

一、linux磁盤分區

查看未掛載的的硬盤:fdisk -l

創建分區:fdisk /dev/sdc

輸入w保存,q退出。

查看分區:fdisk -l | grep /dev/sdc

 

根據上述步驟我們可以創建磁盤分區,但是如果在創建過程中搞錯了,需要將創建的分區刪掉重新創建,此時可以按照下面的步驟進行刪除操作,以上述為例,但不真的刪除(畢竟已經搞好了),只列步驟。

1)fdisk /dev/sdc進入

    Command (m for help):

2)輸入d表示刪除分區,若有多個分區,則會需要選擇分區號

    Command (m for help):d

      選擇分區號

3)輸入w,保存退出。

 二、磁盤掛載與卸載

1)格式化分區

mkfs.ext4 /dev/sdc2

2)創建掛載目錄

mkdir -p /DATA/app

3)掛載分區

mount /dev/sdc2 /DATA/app

4)卸載分區

umount /dev/sdc2 /DATA/app

三、文件系統擴容

首先看一下LVM( Logical Volume Manager)中文可以翻譯作邏輯卷軸管理員。之所以稱為『卷軸』可能是因為可以將 filesystem 像卷軸一樣伸長或縮短之故吧!LVM 的作法是將幾個實體的 partitions (或 disk) 透過軟件組合成為一塊看起來是獨立的大磁碟 (VG) ,然后將這塊大磁碟再經過分割成為可使用分割槽 (LV), 最終就能夠掛載使用了。

1)Physical Volume, PV, 實體卷軸

我們實際的 partition 需要調整系統識別碼 (system ID) 成為 8e (LVM 的識別碼),然后再經過 pvcreate 的命令將他轉成 LVM 最底層的實體卷軸 (PV) ,之后才能夠將這些 PV 加以利用! 調整 system ID 的方是就是通過 fdisk ,上述有記載過!

2)Volume Group, VG, 卷軸群組

所謂的 LVM 大磁碟就是將許多 PV 整合成這個 VG ,所以 VG 就是 LVM 組合起來的大磁碟!這么想就好了。 那么這個大磁碟最大可以到多少容量呢?這與底下要說明的 PE 有關,因為每個 VG 最多僅能包含 65534 個 PE 而已。 如果使用 LVM 默認的參數,則一個 VG 最大可達 256GB 的容量!(參考底下的 PE 說明)

3)Physical Extend, PE, 實體延伸區塊

LVM 默認使用 4MB 的 PE 區塊,而 LVM 的 VG 最多僅能含有 65534 個 PE ,因此默認的 LVM VG 會有 4M*65534/(1024M/G)=256G。 這個 PE 很有趣喔!他是整個 LVM 最小的儲存區塊,也就是說,其實我們的文件數據都是藉由寫入 PE 來處理的。 簡單的說,這個 PE 就有點像文件系統里面的 block 大小。 所以調整 PE 會影響到 VG 的最大容量!

4)Logical Volume, LV, 邏輯卷軸

最終的 VG 還會被切成 LV,這個 LV 就是最后可以被格式化使用的類似分割槽的東西!那么 LV 是否可以隨意指定大小呢? 當然不可以!既然 PE 是整個 LVM 的最小儲存單位,那么 LV 的大小就與在此 LV 內的 PE 總數有關。 為了方便使用者利用 LVM 來管理其系統,因此 LV 的裝置檔名通常指定為『 /dev/vgname/lvname 』的樣式!

此外,我們剛剛有談到 LVM 可彈性的變更 filesystem 的容量,那是如何辦到的?其實他就是透過『交換 PE 』來進行數據轉換, 將原本 LV 內的 PE 移轉到其他裝置中以降低 LV 容量,或將其他裝置的 PE 加到此 LV 中以加大容量! VG、LV 與 PE 的關系有點像下圖:

 如上圖所示,VG 內的 PE 會分給虛線部分的 LV,如果未來這個 VG 要擴充的話,加上其他的 PV 即可。 而最重要的 LV 如果要擴充的話,也是透過加入 VG 內沒有使用到的 PE 來擴充的!

5)LVM操作流程

LVM 必需要核心有支持且需要安裝 lvm2 這個軟件,好在的是, CentOS 與其他較新的 distributions 已經默認將 lvm 的支持與軟件都安裝妥當了!所以不需要擔心這方面的問題!

首先創建磁盤分區,詳見一。

1、PV 階段

要創建 PV 其實很簡單,只要直接使用 pvcreate 即可。pvcreate /dev/sdc1

  • pvcreate :將實體 partition 創建成為 PV ;
  • pvscan :搜尋目前系統里面任何具有 PV 的磁碟;
  • pvdisplay :顯示出目前系統上面的 PV 狀態;
  • pvremove :將 PV 屬性移除,讓該 partition 不具有 PV 屬性。

 更詳細的列出系統上每個PV的信息:pvdisplay

這樣就將 PV 創建了。

2、VG 階段

創建 VG 及 VG 相關的命令也不少,我們來看看:

  • vgcreate :就是主要創建 VG 的命令!
  • vgscan :搜尋系統上面是否有 VG 存在?
  • vgdisplay :顯示目前系統上面的 VG 狀態;
  • vgextend :在 VG 內添加額外的 PV ;
  • vgreduce :在 VG 內移除 PV;
  • vgchange :配置 VG 是否啟動 (active);
  • vgremove :刪除一個 VG !

與 PV 不同的是, VG 的名稱是自訂的!我們知道 PV 的名稱其實就是 partition 的裝置檔名, 但是這個 VG 名稱則可以隨便自己取!在底下的例子當中,我將 VG 名稱取名為 vbirdvg 。創建這個 VG 的流程是這樣的:

vgcreate -s 16M vbirdvg /dev/sdc1

查看vgscan

因為要擴容的是/DATA,而在此之前已經做好了VG,名稱為vg_app,上述創建的vg只是為了演示,刪除操作:vgremove vbirdvg

這樣就創建一個 VG 了!我們要添加這個 VG 的容量,因為我們已經有了/dev/sdc1 ,此時你可以這樣做:vgextend vg_app /dev/sdc1

 

3、LV 階段

創造出 VG 這個大磁碟之后,再來就是要創建分割區!這個分割區就是所謂的 LV !假設我要將剛剛那個 vbirdvg 磁碟,分割成為 vbirdlv ,整個 VG 的容量都被分配到 vbirdlv 里面去!先來看看能使用的命令:

  • lvcreate :創建 LV !
  • lvscan :查詢系統上面的 LV ;
  • lvdisplay :顯示系統上面的 LV 狀態!
  • lvextend :在 LV 里面添加容量!
  • lvreduce :在 LV 里面減少容量;
  • lvremove :刪除一個 LV !
  • lvresize :對 LV 進行容量大小的調整!

lvcreate -L +29.996G -n lv_app vg_app

 

 所要擴容的/DATA之前已經創建過LV,上述為演示,刪除LV命令為:lvremove /dev/vg_app/lv_app,之前創建過的LV名稱為:lv_DATA

 

 4、放大 LV 容量

1)利用 lvresize 將新加入的 PV 內的 PE 加入 lv_DATA中

2)通過 resize2fs 將文件系統的容量確實添加!

 lvresize -l +7679 /dev/vg_app/lv_DATA

這樣就添加了 LV 了,lvresize 的語法很簡單,基本上同樣通過 -l 或 -L 來添加!若要添加則使用 + ,若要減少則使用 - !詳細的選項請參考 man lvresize !

結果顯示LV已經擴到90G,但是文件系統卻沒有相對添加!執行命令:resize2fs /dev/vg_app/lv_DATA,然后查看:df -h /DATA

 

最終完成,做個筆記,以后方便查看!

 

【參考資料:http://cn.linux.vbird.org/linux_basic/0420quota_3.php


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM