概述
開發中用到虛擬機是必不可少的事情,但是很可能剛開始并沒給予虛擬機足夠的磁盤空間。到了后來就回出現磁盤空間不足的情況,這時候,我們不得不想辦法擴充虛擬機的磁盤空間
方式一:增加磁盤數,增加掛載點
VMware Fusion 中擴充虛擬機磁盤空間
要擴充虛擬機的磁盤空間,首先得在VMware Fusion 中操作,為虛擬機增加磁盤。注意操作之前請關閉需要擴容的虛擬機
-
VMware Fusion 選定需要擴容的虛擬機,點擊上方的扳手按鈕,進行設置,添加。
image -
再點擊【添加設備 】按鈕,點擊新硬盤
image - 設置好需要添加的硬盤信息,點擊【應用】添加磁盤。
到此 VMware Fusion 設置完成
centos 虛擬機設置(以下命令必須用root 權限執行)
- 打開虛擬機輸入命令,查看系統磁盤使用情況統計
df -h
顯示目前在Linux系統上的文件系統的磁盤使用情況統計。這個命令只能查看正在使用的磁盤,及相應掛載點
- 輸入以下命令,列出設備信息
lsblk
顯然 sda1、sda2、centos-root、centos-swap 都是sda 分出來的分區,而 sdb 就是我需要掛載的磁盤,它有10G的空間
- 初始化磁盤為linux 系統文件。注意:你的linux 文件系統是什么格式。我的是
ext4
mkfs -t ext4 /dev/sdb
初始化文件系統完成后,切換到根分支 新建文件夾 newdisk,命令如下
mkdir newdisk
將初始化的磁盤掛載到 newdisk下,命令如下。
mount /dev/sdb /newdisk
如果沒有任何提示,則表明成功了。(linux 系統相信,沒有消息就是好消息)執行如下命令查看系統掛載情況
df -h
很明顯 sdb 這個磁盤已經掛載到系統了,我們可以正常使用它了。但是如果重啟系統,需要重新掛載才能使用。那么最好我們設置一個自動掛載。
設置自動掛載
- 編輯 /etc/fstab 文件,,命令如下
vim /etc/fstab
- 在最下方添加如下一條記錄,后保存文件
/dev/sdb /newdisk auto defaults,nofail,comment=cloudconfig 0 2
其中 /dev/sdb
需要自動掛載的磁盤,/newdisk
掛載的文件夾。
- 執行自動掛載命令
mount -a
只要不報錯,那就說明設置成功。下次開機,sdb 也會自動掛載到 /newdisk 文件夾下了
總結:
總體來說分為兩步
- VMware Fusion 下增加磁盤
- Linux 虛擬機中掛載文件
方式二:增加根目錄空間
-
同樣要先關閉虛擬機點擊設置(小扳手圖標)更改虛擬機磁盤大小后應用即可,如下圖所示
image
image
查看磁盤空間變化
- 打開虛擬機命令行輸入命令:
fdisk -l
,就發現磁盤空間變大了,但沒有分區,還不能使用。/dev/sda已經擁有了擴大的空間。如下所示
- 也可以用
lsblk
命令查看,且顯示的更為清晰。顯示的磁盤空間大小和 VMware fusion 中設定空間大小一樣。 - image
磁盤分區
-
使用Linux的fdisk分區工具給磁盤/dev/sda分區,更可以根據提示輸入m查看幫助信息,再輸入n(表示增加分區),回車后輸入p(創建主分區),回車后partition number輸入4(因為上面已經有兩個分區sda1、sda2和sda3),回車會提示輸入分區的start值,end值。都默認即可(即當前能使用的所有空間),回車后輸入W進行保存,分區劃分完畢(增加了2G空間)。
image
更改新分區類型為 Linux LVM 類型。
- 可以看到/dev/sda4的Id號為83,我們要將其改成8e(LVM卷文件系統的Id),具體方法同上跟上一步中的磁盤分區大同小異,輸入
fdisk /dev/sda
,選擇t(change a partition's system id 改變一個分區的系統ID)
回車,然后選擇分區4回車,然后輸入L回車。然后輸入8e回車,然后輸入w,保存修改的分區信息。最后輸入fdisk -l ,查看ID是否修改成功。修改成功后必須重新啟動linux系統才能進行后面的操作。
image - 現在我們需要重啟虛擬機,命令行里提醒,我們需要重啟后才能進行下一步操作。
格式化新的分區為 ext4格式
- 輸入命令
fdisk -l
查看磁盤分區情況
image - 格式化新的分區為ext4格式。
mkfs.ext4 /dev/sda4
,如下圖所示。
image
格式化后,創建PV,將物理硬盤分區初始化為物理卷
-
首先用用命令
pvdisplay
查看當前的物理卷。顯然并沒有sda4
image 然后用pvcreate指令用于將物理硬盤分區初始化為物理卷,以便被LVM使用。
-
要創建物理卷必須首先對硬盤進行分區,并且將硬盤分區的類型設置為“8e”后,才能使用pvcreat指令將分區初始化為物理卷。執行命令
pvcreate /dev/sda4
image -
pvcreate /dev/sda4,創建完后,我們可以再用pvdisplay查看到新創建的物理卷。
image 可以看到老的物理卷是有
VG Name
的,而新的物理卷(也就是sda 4
),這里是centos
, 記住這個,后面要用到。
擴展卷組
- 要擴展VG需要知道當前
lvm
組名,也就是我們上面要記下來的VG Name
可以通過命令vgdisplay
查看。 - 通過命令
vgextend centos /dev/sda4
動態的擴展卷組,它通過向卷組中添加物理卷來增加卷組的容量。 - 再次執行命令
vgdisplay
再次查看,容量已經添加進去。
image
擴容空間到 root 下
- 查看需要擴容的路徑,執行命令
fdisk -l
命令,就可以發現,原來lv(root對應lv)的路徑是/dev/mapper/centos-root
, 那么之后的擴容路徑就為/dev/centos/root
image - 執行命令
lvextend -L+1.99G /dev/centos/root /dev/sda4
擴展空間到root下,擴容的空間要略小于VG的free
空間(上圖 Free PE / Size 522 / <2.04),因此這里只輸入了1.99G. - 然后通過df -h查看,root空間還是沒變,因為我們差最后最關鍵的一步。
image
擴大未掛載文件系統
-
resize2fs
命令,用于擴大或者縮小未掛載的ext2,ext3或者是ext4
文件系統。具體命令為:resize2fs -p /dev/mapper/centos-root 1.99G
。這個路徑,就是前面 root 對應 lv 的路徑。 - 發現報錯如下
resize2fs: Bad magic number in super-block 當嘗試打開 /dev/mapper/centos-root 時
找不到有效的文件系統超級塊
- 可能我們的系統是xfs 文件系統,執行命令
cat /etc/fstab |grep centos-root
確認下是不是 xfs 文件系統。結果如下
/dev/mapper/centos-root / xfs defaults 0 0
- xfs 文件系統應該用如下命令擴容
xfs_growfs /dev/mapper/centos-root
- 結果如下
meta-data=/dev/mapper/centos-root isize=512 agcount=7, agsize=1113856 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=7588864, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 7588864 to 8111104
- 執行命令
df -h
,根目錄的空間已經擴容。如下所示
image
借鑒文章
總結:
到此 Mac VMware Fusion
中修改centos7
虛擬機的磁盤空間、擴容 就完成了。windows 等其他平臺、其他 linux 虛擬機等等也類似,可能命令等有所不同,就不過多贅述了。