摘要:【原創】轉載請注明作者Johnthegreat和本文鏈接
由於虛擬機空間不足,為了避免重裝虛擬機,做了一次無損擴容。
過程中的報錯如下:
[root@localhost ~]# pvcreate PV /dev/sda3 Device PV not found. Device /dev/sda3 not found.
[root@localhost ~]# 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 --resize 10000
這里注意紅色字代表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
好了,以上就是擴展磁盤容量的所有內容,如果你有疑問,或者有更好的解決方案,歡迎留言交流,謝謝!