VMware虛擬機器Linux系統根目錄空間擴充操作

myamor發表於2014-12-28
 VMWare虛擬機器安裝的應用多了,導致根目錄空間不足,有沒有辦法可以將根目錄空間進行擴充呢?
經過蒐集各各資料,順利解決問題,把伺服器的空間由6G擴成8G。現將執行全過程總結如下,以供分享。
首先,介紹下大體的解決思路,要想擴充,必須要有一塊新的空間來供使用。而對於VMWare虛擬機器,我們只需要使用vmware自帶的軟體擴充下磁碟大小。
擴充磁碟,只意味著硬體條件得到滿足。接下來就需要對新的磁碟空格進行合理的操作,來擴充我們需要的分割槽。
值得注意的是,這裡我們基於LVM來操作的。如果您的環境不是LVM的,可以考慮改成LVM的,否則後文無需再讀。具體執行過程將細細道來。
第一步、使用VMware工具擴容分配的硬碟空間

1、vmware 提供一個功能,在虛擬機器配置裡面硬碟中可以擴充套件,點選【擴充套件】按鍵,按照提示操作。

還可以用命令列的方式:在 windows 下執行 CMD , 轉到 vmware 的安裝目錄,可執行vmware-vdiskmanager.exe;在Linux下,直接敲入vmware-vdiskmanager ,可執行該指令擴充使用的指令: vmware-vdiskmanager -x 8Gb CentOS7.vmdk

說明:要擴容的系統這時不能在執行 ,引數 "-x" 表示要擴充套件虛擬機器硬碟空間,緊隨其後的數字是要擴充套件到的大小 ,而非增加量 (本例為擴充套件到 16GB ,這是一個磁碟總量,包含了原先的磁碟容量 ) 。 最後是指定要操作的虛擬機器磁碟的具體檔案,要是路徑名中有空格,必須以雙引號括起來。按Enter鍵開始執行,執行完畢,退出命令提示符視窗,重啟 VMware ,會發現虛擬機器硬碟空間已變成 8GB 了。

2、我們重啟虛擬機器後,發現虛擬機器的硬碟是變成 16GB 了,但進入 linux 系統後,用 "df -h"檢視發現硬碟空間還是原先那麼大。 雖然已經擴大了磁碟,但是由於還沒有經過分割槽,指定文件系統,所以 linux 作業系統無法識別。其實就相當於你的硬碟雖然大了,但是你並沒有對其進行分割槽是一個道理。

第二步、使用Linux下的fdisk工具進行分割槽

首先,需要以root身份登入系統。

fdisk 命令: fdisk -l : 列印當前的磁碟分割槽表,這時我們可以看到磁碟的總量的確增加到8GB 了,但是分割槽只有以前的那幾個原有的分割槽。

鍵入命令: fdisk /dev/sda   “sda 就是經過擴容的硬碟,為 SCSI 硬碟, IDE 型別硬碟對應為 hda ,是對該硬碟進行操作 ” 
鍵入 :    m    “ 列出 fdisk 的幫助 ” 
我們在這裡是要新增一個新分割槽,即將擴容出來的那部分做成一個新分割槽,這樣才能被作業系統
掛載識別。 
鍵入:     n    ” 命令 n 用於新增新分割槽 " 
此時, fdisk 會讓你選擇新增為邏輯分割槽呢(編號從 5 開始)還是主分割槽(編號 1 到 4 )。

選擇主分割槽吧,則鍵入 p ;選擇邏輯分割槽鍵入 l 。 
我們選擇主分割槽於是: 
鍵入:    p               " 選擇建立主分割槽 "

此時, fdisk 會讓你選擇主分割槽的編號,如果已經有了主分割槽 sda1 , sda2 ,那麼編號就選3 ,即要建立的該分割槽為 sda3. 
鍵入:     3 
此時, fdisk 又會讓你選擇該分割槽的開始值這個就是分割槽的 Start 值( start cylinder );
這裡最好直接按回車, 如果您輸入了一個非預設的數字,可能會造成空間浪費;

對於分割槽的 End 值(end cylinder),同樣直接按回車。這時候會顯示出你新建分割槽的柱面範圍和空間大小。

此時鍵入: w    表示" 儲存所有並退出,分割槽劃分完畢 "

我們的新建分割槽/dev/sda3,卻不是LVM的。所以,接下來使用fdisk將其改成LVM的。

[root@CNGI-SIP6-BUPT ~]# fdisk /dev/sda
Command (m for help): m 
Command (m for help): t //改變分割槽系統id      
Partition number (1-4): 3 //指定分割槽號
Hex code (type L to list codes): 8e //指定要改成的id號,8e代表LVM。
Command (m for help): w

我們現在還不能用這個分割槽 , 因為我們沒格式化。這時要重啟系統就能夠在 dev 下面看到 sda3 ,如果不重啟不能進行下面操作。

重啟後,在此檢視fdisk -l
  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    12582911     5778432   8e  Linux LVM
/dev/sda3        12582912    16777215     2097152   8e  Linux LVM

可以看到/dev/sda3已支援LVM。

第三步,使用工具partprobe讓kernel讀取分割槽資訊 
[root@CentOS7 ~]#  partprobe
使用fdisk工具只是將分割槽資訊寫到磁碟,如果需要mkfs磁碟分割槽則需要重啟系統,
而使用partprobe則可以使kernel重新讀取分割槽 資訊,從而避免重啟系統

第四步、格式化該新新增的分割槽

[root@CentOS7 ~]#鍵入:  
mkfs -t xfs /dev/sda3    :注意我的系統是CENTOS,使用的是XFS格式(也可以是ext3),最好與原有的保持格式一樣。
或者 
mkfs.
xfs /dev/sda3

來格式化指定的分割槽,依次類推,現在的系統大部分都是 xfs格式,如果你需要其它的,可以檢視mkfs 的幫助。

到此為止,我們就新建了一個分割槽/dev/sda3,此時我們已經可以通過掛載,來使用這個新的空間。但是對於我,這並不能滿足我的需求,因為伺服器的服務程式是在根目錄上的,目前根目錄空間已經使用完畢,所以能把新建的分割槽使用在更目錄上,分擔根目錄的空間,才能解決問題。

下面用到的理論是基於LVM的,如果不知道的話,建議稍微查些資料有助於理解。當然,一步步的跟我做,應該也沒有問題。

第五步、擴充根分割槽

接著,使用vgextend 命令加到lvm組裡面去,做如下操作:

[root@CentOS7 ~]# lvs
  LV   VG             Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  root centos_centos7 -wi-ao----   6.90g       (我已經擴容後的顯示的,原顯示在4.9)                                     
  swap centos_centos7 -wi-ao---- 616.00m                                          
[root@CentOS7 ~]#  pvcreate /dev/sda3      (刪除使用:pvremove)
Physical volume "/dev/sda3" successfully created
[root@CentOS7 ~]#  vgextend centos_centos7 /dev/sda3 (其中是當前需要擴充的lvm組名,可以通過df -h檢視,例如我的是: /dev/mapper/centos_centos7-root) 

Volume group "centos_centos7" successfully extended

[root@CentOS7 ~]# vgdisplay

 --- Volume group ---
  VG Name               centos_centos7
  System ID            
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               7.50 GiB
  PE Size               4.00 MiB
  Total PE              1921
  Alloc PE / Size       1921 / 7.50 GiB
  Free  PE / Size       0 / 0  
  VG UUID               zGtlQ0-Fh5X-Sblw-GSdw-qbmg-pc8X-SeJde4
   
第六步、擴充邏輯分割槽

下一步是擴充套件邏輯卷(Logic Volume)到新的捲上,先用“lvdisplay”指令看看目前已有的邏輯卷(Logic Volume)的情況

--- Logical Volume ---
  LV Path                /dev/centos_centos7/swap
  LV Name                swap
  VG Name                centos_centos7
  LV UUID                bHrQHE-Vm07-o0NZ-VUbv-c0nN-QM0L-R4IAF3

......
......

--- Logical Volume ---
  LV Path                /dev/centos_centos7/root
  LV Name                root
  VG Name                centos_centos7
  LV UUID                TS0f36-DuAH-y3XE-RLPW-7N39-EDAu-yzmpYK
......

可以看到我的硬碟目前只有2個邏輯卷,swap分割槽當然不用擴充套件

[root@CentOS7 ~]# lvextend /dev/centos_centos7/root /dev/sda3

第七步、擴充邏輯分割槽

最後將檔案系統resize到新的邏輯捲上來,執行

 xfs_growfs /dev/centos_centos7/root   (注意:CentOS和其他作業系統不一樣,其他作業系統是resize2fs


然後reboot系統,用fdisk -l /dev/sda就能看到擴充套件的分割槽。


附錄:xfs檔案系統特性及Ext2/3/4和xfs的檔案系統操作命令列表

由於Redhat7中預設的檔案系統開始使用xfs,總結下xfs的一些內容:

一、特性:

1、資料完全性

採用XFS檔案系統,當意想不到的當機發生後,首先,由於檔案系統開啟了日誌功能,所以你磁碟上的檔案不再會意外當機而遭到破壞了。不論目前檔案系統上儲存的檔案與資料有多少,檔案系統都可以根據所記錄的日誌在很短的時間內迅速恢復磁碟檔案內容。
2、傳輸特性
XFS檔案系統採用優化演算法,日誌記錄對整體檔案操作影響非常小。XFS查詢與分配儲存空間非常快。xfs檔案系統能連續提供快速的反應時間。筆者曾經對XFS、JFS、Ext3、ReiserFS檔案系統進行過測試,XFS檔案檔案系統的效能表現相當出眾。
3、可擴充套件性
XFS 是一個全64-bit的檔案系統,它可以支援上百萬T位元組的儲存空間。對特大檔案及小尺寸檔案的支援都表現出眾,支援特大數量的目錄。最大可支援的檔案大 小為263 = 9 x 1018 = 9 exabytes,最大檔案系統尺寸為18 exabytes。
XFS使用高的表結構(B+樹),保證了檔案系統可以快速搜尋與快速空間分配。XFS能夠持續提供高速操作,檔案系統的效能不受目錄中目錄及檔案數量的限制。
4、傳輸頻寬
XFS 能以接近裸裝置I/O的效能儲存資料。在單個檔案系統的測試中,其吞吐量最高可達7GB每秒,對單個檔案的讀寫操作,其吞吐量可達4GB每秒。

二、 ext3/4 和XFS操作命令對比

Task ext3/4 XFS
Create a file system mkfs.ext4 or mkfs.ext3 mkfs.xfs
File system check e2fsck xfs_repair
Resizing a file system resize2fs xfs_growfs
Save an image of a file system e2image xfs_metadump and xfs_mdrestore
Label or tune a file system tune2fs xfs_admin
Backup a file system dump and restore xfsdump and xfsrestore  



Task ext4 XFS
Quota quota xfs_quota
File mapping filefrag xfs_bmap


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/177006/viewspace-1382842/,如需轉載,請註明出處,否則將追究法律責任。

相關文章