1. 程式人生 > WINDOWS開發 >Windows下虛擬機器Linux(CentOS8)擴容設定 - 磁碟擴容中的坑和解決方法

Windows下虛擬機器Linux(CentOS8)擴容設定 - 磁碟擴容中的坑和解決方法

摘要:【原創】轉載請註明作者Johnthegreat和本文連結

由於虛擬機器空間不足,為了避免重灌虛擬機器,做了一次無損擴容。

過程中的報錯如下:

[[email protected] ~]# pvcreate PV /dev/sda3
  Device PV not found.
  Device /dev/sda3 not found.

[[email protected] ~]# resize2fs /dev/cl/root
resize2fs 1.44.6 (5-Mar-2019)
resize2fs: Bad magic number in super-block while trying to open /dev/cl/root
Couldn‘t find valid filesystem superblock.

為了詳細記錄,這裡將整個過程詳述如下:

一、問題和需求

1. 碰到的問題:虛擬機器之前設定的空間太小,安裝軟體過多導致無法使用;

2. 需求:需要增加虛擬機器根目錄的容量,事實上,這樣的需求和解決問題的方法應該也適用於物理硬碟,注意謹慎操作。

3. 系統和軟體情況:

1)虛擬機器管理器:VirtualBox 6.1

2)虛擬機器:Redhat的社群版CentOS 8

3)作業系統:Windows 10

4)CentOS操作使用者身份:root,如果你的不是root身份,注意sudo

二、操作步驟概覽

1. 首先在VirtualBox層增加虛擬機器的容量,我這裡展示的是增加2G,也就是虛擬機器從原來整體8G,增加為10G;

2. 然後啟動CentOS,使用LVM(Logic Volume Manager),即邏輯卷管理進行掛載和擴充套件。坑都在這裡。

3. 操作成功前後的對比圖,可以看到root下的容量從原來的6.2G增加到8G:

操作前:

技術分享圖片

操作後:

技術分享圖片

三、具體操作命令/截圖

退出虛擬機器,然後開始一步一步如下操作:

1. 首先找到你的CentOS系統所在位置,如果是預設的話,應該在使用者目錄的C:\Users\(使用者,這裡替換成你自己的)\VirtualBox VMs\CentOS8這個資料夾下,如下:

技術分享圖片

發現虛擬機器磁碟檔案是vdi格式的,所以在當前位址列敲入cmd,進入windows下的cmd命令列,並且在當前目錄下,然後敲入如下命令:

VBoxManage modifyhd centos.vdi --resize10000


這裡注意紅色字代表10G,我是從原來8G擴充套件到10G,這裡的單位是Mb。

2. 開啟VirtualBox,啟動虛擬機器,如果VirtualBox檢測到硬碟容量變化,要求你確認,那就確認一下;

3. 啟動後,進入命令列,然後檢視裝置資訊,使用命令lsblk(list block),即列出裝置資訊:
技術分享圖片

會發現,已經有sda1和sda2,這個時候,想當然認為增加的空間是sda3,使用pvcreate(physical volume create)建立物理卷:

技術分享圖片

這裡出現文章開頭的錯誤資訊。

我們仔細觀察上面的裝置資訊,會發現新增加的容量並沒有在列表中出現,儘管sda有10G,但是sda1和sda2加起來只有8G,所以另外2G應該是沒有發現,我們需要先對磁碟進行操作。fdisk是Linux下的一個建立和維護分割槽表的命令,接下來我們使用它。

4. 敲入fdisk /dev/sda命令,我們可以進入到fdisk的互動介面,注意確認自己操作正確前,不要按下w,有疑問按下q先退出搞清楚再重新進入繼續操作:

技術分享圖片

5. 在互動介面,輸入n(建立新的分割槽),然後回車,接下去,都可以直接4次回車,分別都是表示使用預設設定,注意這裡預設的分割槽數字是3,即sda3。

技術分享圖片

6. 上面建立好後,我們在互動介面繼續輸入p(列印準備好的分割槽表),確認無誤後,輸入w(寫入分割槽);

技術分享圖片

7. 至此,我們已經建立好了分割槽表,也可以看到sda3了,所以重新從上面出錯的地方繼續執行,即可建立成功:

pvcreate PV /dev/sda3

技術分享圖片

8. 擴充套件到卷組,我們vgdisplay命令檢視一下自己所在的卷組:

技術分享圖片

看到VG Name是cl,所以進一步擴充套件到卷組:

vgextend cl /dev/sda3

技術分享圖片

9. 擴充套件到邏輯分割槽,使用lvextend(logical volume extend邏輯卷擴充套件)

lvextend /dev/cl/root /dev/sda3

技術分享圖片

10. 我們df -h檢視一下檔案系統的磁碟空間佔用情況:

技術分享圖片

這裡我們發現磁碟沒有按照預期的擴容,因為我們沒有重新整理邏輯分割槽的容量。

11. 於是,重新整理邏輯分割槽的容量,按照慣例使用resize2fs(調整ext2\\ext3\\ext4檔案系統的大小,它可以放大或者縮小沒有掛載的檔案系統的大小),如下命令:

resize2fs /dev/cl/root
技術分享圖片

發現找不到可用的超級系統塊,這是什麼鬼?

我們使用df -Th檢視,發現檔案系統是xfs,原來,CentOS7開始,預設的檔案系統就由原本的EXT4變成XFS檔案系統了,所以resize2fs命令設定無效。

技術分享圖片

12. 由於是xfs增量檔案系統,所以我們使用xfs_growfs命令,注意上面的Mounted on是掛載點,這裡我們的掛載點就是根目錄:

xfs_growfs /

技術分享圖片

13. 大功告成!我們使用df命令檢視一下最終結果:

df -h

技術分享圖片

好了,以上就是擴充套件磁碟容量的所有內容,如果你有疑問,或者有更好的解決方案,歡迎留言交流,謝謝!