目錄

簡介

背景資訊

程式

第1部分 — 確定需要新增空間的位置並確定空間大小

第2部分 — 檢查卷組中是否有可用的未分配空間

第3部分 — 檢查資料儲存中是否有足夠的可用空間

第4部分 — 使用Datastore中的可用空間增加VM空間

第5部分 — 向分割槽新增新空間

第6部分 — 調整物理卷的大小

第7部分 — 擴展卷組的大小以使用新空間

第8部分 — 在邏輯卷上調整檔案系統大小以使用新空間

簡介

本文檔介紹如何向Linux虛擬機器(VM)新增磁碟空間。

背景資訊

Linux（和Linux VM）安裝在硬碟上，無論是真實硬碟還是虛擬硬碟。其頂部堆疊了一個卷管理器，後跟一個檔案系統，通常使用檔案系統。

對於Linux虛擬機器，需要執行以下步驟才能增加檔案系統的大小：

1. 確定需要在何處新增空間並確定空間大小。

2. 檢查卷組中是否有未分配的空間。

3. 檢查資料儲存中是否有可用空間。

4. 使用datastore中的可用空間增加VM空間。

5. 向分割槽新增新空間。

6. 調整物理卷的大小。

7. 擴展卷組的大小，使其使用新空間。

8. 在邏輯卷上調整檔案系統大小，以便它使用新空間。

附註：許多調整大小選項都存在風險，可能會使虛擬機器處於不可啟動的狀態或資料損壞。請小心。

附註：在增加磁碟空間之前，請確保已經清理了現有檔案系統。/tmp、/var/tmp、/var/tmp/broadhop和/var/log中通常有一些檔案是不需要的，可以刪除這些檔案而不是增加磁碟空間。

程式

第1部分 — 確定需要新增空間的位置並確定空間大小

1. 使用Disk Free(df)命令可查詢哪個分割槽需要更多空間以及它位於何處。記錄「檔案系統」和「裝載於」值。例如， Filesystem:  /dev/mapper/VolGroup00-LogVol03裝載於：  /data。
#df -h
檔案系統：_____________________________裝載於：_________________________
以下是df -h指令的輸出範例：

[root@sessionmgr02 ~]# df -h

Filesystem           Size Used Avail Use% Mounted on

/dev/mapper/VolGroup00-LogVol00

18G 2.4G   15G  15% /

/dev/mapper/VolGroup00-LogVol02

5.7G 140M  5.3G   3% /home

/dev/mapper/VolGroup00-LogVol03

30G  27G  1.5G  97% /data

/dev/sda1             99M  40M   55M  43% /boot

tmpfs                 16G   0    16G   0% /dev/shm

tmpfs                8.0G 1.1G  7.0G  13% /data/sessions.1

2. 使用Physical Volume Display命令(pvdisplay)檢視卷組所在的物理卷(PV)名稱。記錄PV Name值(例如「PV Name:  /dev/sda2')。
# pvdisplay
PV名稱：_____________________________________
以下是pvdisplay命令的輸出示例：

[root@sessionmgr02 ~]# pvdisplay

--- Physical volume ---

PV Name               /dev/sda2

VG Name               VolGroup00

PV Size               69.89 GB / not usable 18.64 MB

Allocatable           yes

PE Size (KByte)       32768

Total PE              2236

Free PE               320

Allocated PE          1916

PV UUID               HO3ICX-nRhO-FaBA-MvB3-Zlzv-JLG4-vNFQeU

附註：PV名稱(/dev/sda2)顯示兩件事。第一部分(/dev/sda)顯示裝置，第二部分(2)顯示分割槽號。

3. 寫下您希望（或需要）在此處新增的磁碟空間大小（例如，5 GB）。
要新增的磁碟空間<amount>:____________________________________

第2部分 — 檢查卷組中是否有可用的未分配空間

1. 輸入卷組顯示命令(vgdisplay)以檢查可用物理範圍(PE)大小。記錄「分配的PE/大小」和「可用的PE/大小」值。例如，分配PE/大小：  59.88免費PE/大小：  15.00.
# vgdisplay

Alloc PE / Size:________________________Free PE / Size:_________________________

以下顯示vgdisplay命令的輸出示例：

[root@sessionmgr02 ~]# vgdisplay

--- Volume group ---

VG Name               VolGroup00

System ID

Format                lvm2

Metadata Areas         1

Metadata Sequence No   9

VG Access              read/write

VG Status              resizable

MAX LV                 0

Cur LV                 4

Open LV                4

Max PV                 0

Cur PV                 1

Act PV                 1

VG Size                74.88 GB

PE Size                32.00 MB

Total PE               2396

Alloc PE / Size        1916 / 59.88 GB

Free PE / Size         480 / 15.00 GB

VG UUID                pPSNBU-FRWO-z3aC-iAxS-ewaw-jOFT-dTcBKd

2. 如果「可用的PE大小」空間大於需要新增的空間，請繼續執行本文檔的第7節。否則，請繼續第3節。

第3部分 — 檢查資料儲存中是否有足夠的可用空間

1. 以管理員身份登入vSphere客戶端（例如root）。

2. 選擇樹中的頂層專案（通常是系統的IP）。

3. 檢查Summary頁籤下Datastore上的Free space，以確保有足夠的空間來擴展分割槽。

附註：如果有足夠的可用空間用於此擴展，請繼續執行第4部分。如果沒有足夠的可用空間，請停止此過程並在繼續之前向資料儲存區新增磁碟空間。

第4部分 — 使用Datastore中的可用空間增加VM空間

1. 使用shutdown -h now命令登入到虛擬機器並關閉其電源。
# shutdown -h now

此範例顯示shutdown -h now命令的輸出：

[root@sessionmgr02 ~]# shutdown -h now

Broadcast message from root (pts/0) (Wed Dec 18 11:48:20 2013):

The system is going down for system halt NOW!

2. 在VMWare vSphere客戶端中，選擇/突出顯示「Virtual Machine（虛擬機器）」。然後在「Getting Started（入門）」頁籤中按一下「Edit virtual machine settings（編輯虛擬機器設定）」。

3. 在彈出視窗中，選擇Hard Disk 1。

4. 將硬碟的已布建大小增加您在第1部分步驟3中選擇的數量。  然後按一下OK。
附註：增加的數量必須小於資料儲存上的可用空間量。  請勿過度調配。

5. 在vShare中，按一下Green三角以開啟突出顯示的虛擬機器電源。

附註：等待5分鐘，等待VM完全載入。

6. 虛擬機器啟動後，以根使用者身份登入虛擬機器。
# ssh

此示例顯示ssh命令的輸出：

[root@pcrfclient01 ~]# ssh 172.10.1.30

\\Last login: Wed Dec 18 11:48:14 2013 from 172.10.1.9

Spacewalk kickstart on 2010-08-23

[root@sessionmgr02 ~]#

7. 使用Fixed Disk(fdisk)命令查詢您在第1部分步驟2中記下的PV Name的磁碟大小。記錄磁碟大小。例如，磁碟大小：  75.0 GB.
# fdisk -l /dev/sda

磁碟大小：_______________________________

此示例顯示fdisk -l /dev/sda命令的輸出：

[root@sessionmgr02 ~]# fdisk -l /dev/sda

Disk /dev/sda2: 75.0 GB, 75047454720 bytes

255 heads, 63 sectors/track, 9124 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

此示例輸出顯示/dev/sda2當前已為其分配了75G。

第5部分 — 向分割槽新增新空間

1. 要調整分割槽大小，請輸入fdisk命令，然後使用PV Name（來自第1部分，第2步），末尾不顯示數字。
# fdisk

此示例顯示fdisk /dev/sda命令的輸出：

[root@sessionmgr02 ~]# fdisk /dev/sda

The number of cylinders for this disk is set to 9137.

There is nothing wrong with that, but this is larger than 1024,

and could in certain setups cause problems with:

1) software that runs at boot time (e.g., old versions of LILO)

2) booting and partitioning software from other OSs

(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):

2. 在命令提示符下，輸入p並按Enter可檢視分割槽表。
Command (m for help): p

此範例顯示輸入字母「p」後顯示分割槽表的輸出：

Command (m for help): p

Disk /dev/sda: 75.1 GB, 75161927680 bytes

255 heads, 63 sectors/track, 9137 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot    Start     End     Blocks      Id System

/dev/sda1 *      1       13       104391     83 Linux

/dev/sda2        14      9137     73288530   8e Linux LVM

Command (m for help):

3. 記錄要調整大小的分割槽的開始和ID值。例如，在步驟2的示例輸出中，開始：  14 Id:  8e。
開始：_______________________Id:_________________________

4. 刪除要調整大小的裝置的分割槽條目。在命令提示符下輸入d。
Command (m for help): d

此範例顯示輸入d後的結果：

Disk /dev/sda: 75.1 GB, 75161927680 bytes

255 heads, 63 sectors/track, 9137 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot     Start      End      Blocks      Id System

/dev/sda1 *      1          13      104391      83 Linux

/dev/sda2       14         9137     73288530    8e Linux LVM

Command (m for help): d

Partition number (1-4):

5. 在Partition number提示符下，輸入要刪除的分割槽編號，然後按Enter。（裝置名稱末尾的編號是分割槽編號。）
Partition number (1-4): <number>

此示例顯示輸入分割槽編號後的結果：

Disk /dev/sda: 75.1 GB, 75161927680 bytes

255 heads, 63 sectors/track, 9137 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        9137    73288530   8e  Linux LVM

Command (m for help): d

Partition number (1-4): 2

Command (m for help):

6. 在命令提示符下，輸入n以建立新分割槽。
Command (m for help): n

此範例顯示輸入n後的結果：

Disk /dev/sda: 75.1 GB, 75161927680 bytes

255 heads, 63 sectors/track, 5221 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        9137    73288530   8e  Linux LVM

Command (m for help): d

Partition number (1-4): 2

Command (m for help): n

Command action

e   extended

p   primary partition (1-4)

Command (m for help): n

7. 為主分割槽輸入p。
Command (m for help): p

此範例顯示輸入p後的輸出：

Disk /dev/sda: 75.1 GB, 75161927680 bytes

255 heads, 63 sectors/track, 5221 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        9137    73288530   8e  Linux LVM

Command (m for help): d

Partition number (1-4): 2

Command (m for help): n

Command action

e   extended

p   primary partition (1-4)

p

Partition number (1-4):

8. 在Partition number提示符下，輸入分割槽編號，然後按Enter（與已刪除的分割槽編號相同）。 在本例中，數字為2。
Partition number (1-4): 2

此示例顯示輸入分割槽編號後的結果：

Disk /dev/sda: 75.1 GB, 75161927680 bytes

255 heads, 63 sectors/track, 5221 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        9137    73288530   8e  Linux LVM

Command (m for help): d

Partition number (1-4): 2

Command (m for help): n

Command action

e   extended

p   primary partition (1-4)

p

Partition number (1-4): 2

First cylinder (14-9137, default 14):

9. 確認第一個圓柱體編號的預設值與本節步驟3中的起始值匹配。如果是，請按Enter鍵接受預設值。  如果不匹配，請確保它與任何現有分割槽不重疊，然後手動輸入值，然後按Enter。
此範例顯示接受預設值並按Enter鍵後的結果：

Disk /dev/sda: 75.1 GB, 75161927680 bytes

255 heads, 63 sectors/track, 5221 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        9137    73288530   8e  Linux LVM

Command (m for help): d

Partition number (1-4): 2

Command (m for help): n

Command action

e   extended

p   primary partition (1-4)

p

Partition number (1-4): 2

First cylinder (14-9790, default 14):

Using default value 14

Last cylinder or +size or +sizeM or +sizeK (14-9790, default 9790):

10. 對於「最後圓柱面」值，請按Enter以使用預設值。
此示例顯示接受預設值並按Enter鍵後的結果：

Disk /dev/sda: 75.1 GB, 75161927680 bytes

255 heads, 63 sectors/track, 5221 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        9137    73288530   8e  Linux LVM

Command (m for help): d

Partition number (1-4): 2

Command (m for help): n

Command action

e   extended

p   primary partition (1-4)

p

Partition number (1-4): 2

First cylinder (14-9790, default 14):

Using default value 14

Last cylinder or +size or +sizeM or +sizeK (14-9790, default 9790):

Using default value 9790

Command (m for help):

11. 在命令提示符下，輸入t並按Enter。
Command (m for help): t

此範例顯示輸入t後的結果：

Disk /dev/sda: 75.1 GB, 75161927680 bytes

255 heads, 63 sectors/track, 5221 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        9137    73288530   8e  Linux LVM

Command (m for help): d

Partition number (1-4): 2

Command (m for help): n

Command action

e   extended

p   primary partition (1-4)

p

Partition number (1-4): 2

First cylinder (14-9790, default 14):

Using default value 14

Last cylinder or +size or +sizeM or +sizeK (14-9790, default 9790):

Using default value 9790

Command (m for help): t

Partition number (1-4):

12. 在分割槽編號提示符下，輸入要調整大小的分割槽編號，然後按Enter。

Partition number (1-4): 2

此示例顯示輸入分割槽編號後的結果：

Disk /dev/sda: 75.1 GB, 75161927680 bytes

255 heads, 63 sectors/track, 5221 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        9137    73288530   8e  Linux LVM

Command (m for help): d

Partition number (1-4): 2

Command (m for help): n

Command action

e   extended

p   primary partition (1-4)

p

Partition number (1-4): 2

First cylinder (14-9790, default 14):

Using default value 14

Last cylinder or +size or +sizeM or +sizeK (14-9790, default 9790):

Using default value 9790

Command (m for help): t

Partition number (1-4): 2

Hex code (type L to list codes):

13. 在十六進位制代碼提示符下，鍵入十六進位制代碼。這是本節中步驟3的Id值。按Enter鍵。
Hex code (type L to list codes): 8e

此示例顯示輸入十六進位制代碼後的結果：

Disk /dev/sda: 75.1 GB, 75161927680 bytes

255 heads, 63 sectors/track, 5221 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        9137    73288530   8e  Linux LVM

Command (m for help): d

Partition number (1-4): 2

Command (m for help): n

Command action

e   extended

p   primary partition (1-4)

p

Partition number (1-4): 2

First cylinder (14-9790, default 14):

Using default value 14

Last cylinder or +size or +sizeM or +sizeK (14-9790, default 9790):

Using default value 9790

Command (m for help): t

Partition number (1-4): 2

Hex code (type L to list codes): 8e

Changed system type of partition 2 to 8e (Linux LVM)

Command (m for help):

14. 在命令提示符下，輸入w將分割槽寫入磁碟。
Command (m for help): w

此範例顯示您在提示中輸入w後的結果：

Disk /dev/sda: 75.1 GB, 75161927680 bytes

255 heads, 63 sectors/track, 5221 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        9137    73288530   8e  Linux LVM

Command (m for help): d

Partition number (1-4): 2

Command (m for help): n

Command action

e   extended

p   primary partition (1-4)

p

Partition number (1-4): 2

First cylinder (14-9790, default 14):

Using default value 14

Last cylinder or +size or +sizeM or +sizeK (14-9790, default 9790):

Using default value 9790

Command (m for help): t

Partition number (1-4): 2

Hex code (type L to list codes): 8e

Changed system type of partition 2 to 8e (Linux LVM)

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

The kernel still uses the old table.

The new table will be used at the next reboot.

Syncing disks.

[root@sessionmgr02 ~]#

這會退出fdisk並進入根提示。

15. 重新啟動VM以確保新設定與核心匹配。
# init 6

16. 在VM完成重新啟動（約5分鐘）後，以根使用者身份登入(ssh)VM。

17. 使用fdisk -l <PV Name>命令檢視新的分割槽大小（PV Name來自第1部分第2步），以確保現在磁碟大小更大。
[root@sessionmgr02 ~]# fdisk -l /dev/sda

Disk /dev/sda2: 80.4 GB, 80418562560 bytes

255 heads, 63 sectors/track, 9777 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

此示例輸出顯示/dev/sda現在已為其分配了80GB。

第6部分 — 調整物理卷的大小

警告：這個過程有點危險。  請小心。

1. 輸入Physical Volume Resize(pvresize)命令，後跟PV Name以調整分割槽大小以適應當前分配的磁碟空間。
# pvresize /dev/sda2

此範例顯示輸入pvresize命令後的結果：

[root@sessionmgr02 ~]# pvresize /dev/sda2

Physical volume "/dev/sda2" changed

1 physical volume(s) resized / 0 physical volume(s) not resized

2. 輸入vgdisplay命令以檢查可用PE大小以檢視新增的額外空間。
此範例顯示輸入vgdisplay命令後的結果：

[root@sessionmgr02 ~]# vgdisplay

--- Volume group ---

VG Name                  VolGroup00

System ID

Format                    lvm2

Metadata Areas            1

Metadata Sequence No      9

VG Access                 read/write

VG Status                 resizable

MAX LV                    0

Cur LV                    4

Open LV                   4

Max PV                    0

Cur PV                    1

Act PV                    1

VG Size                   74.88 GB

PE Size                   32.00 MB

Total PE                  2396

Alloc PE / Size           1916 / 59.88 GB

Free PE / Size            480 / 15.00 GB

VG UUID                    pPSNBU-FRWO-z3aC-iAxS-ewaw-jOFT-dTcBKd

該示例顯示在上一節中新增的磁碟空間。

第7部分 — 擴展卷組的大小以使用新空間

1. 輸入df命令可再次定位需要更多空間的分割槽，以驗證最初在第1部分步驟1中記錄的資訊是否正確。
從df命令的輸出中記錄「檔案系統」和「已掛載」的值。

# df -h

檔案系統：_______________________裝載於：__________________________

[root@sessionmgr02 ~]# df -h

Filesystem              Size Used Avail Use% Mounted on

/dev/mapper/VolGroup00-LogVol00

18G 2.4G   15G  15% /

/dev/mapper/VolGroup00-LogVol02

5.7G 140M  5.3G   3% /home

/dev/mapper/VolGroup00-LogVol03

30G  27G  1.5G  97% /data

/dev/sda1                99M  40M   55M  43% /boot

tmpfs                    16G   0    16G   0% /dev/shm

tmpfs                   8.0G 1.1G  7.0G  13% /data/sessions.1

2. 寫下需要新增到分割槽的空間量（與第1部分第3步相同）。
要新增的磁碟空間<amount>:____________________________

3. 輸入Logical Volume Extend命令(lvextend -L+<amount>G <Filesystem>)以將新磁碟空間（<amount>從第1部分第2步）新增到需要的檔案系統（從第7部分第1步）。
# lvextend -L+5G /dev/mapper/VolGroup-LogVol-03

此範例顯示輸入lvextend命令後的結果：

[root@sessionmgr02 ~]# lvextend -L+5G /dev/mapper/VolGroup00-LogVol03

Extending logical volume LogVol03 to 45.00 GB

Logical volume LogVol03 successfully resized

[root@sessionmgr02 ~]#

這會將新新增的空間新增到邏輯卷。

第8部分 — 在邏輯卷上調整檔案系統大小以使用新空間

1. 輸入Resize Filesystem命令(resize2fs <Filesystem>)以調整檔案系統大小（來自第1部分步驟1）。 這使得額外的磁碟空間可供使用。
警告：完成此命令可能需要一些時間。

# resize2fs <filesystem>

此範例顯示輸入resize2fs命令後的結果：

[root@sessionmgr02 ~]# resize2fs /dev/mapper/VolGroup00-LogVol03

resize2fs 1.39 (29-May-2006)

Filesystem at /dev/mapper/VolGroup00-LogVol03 is

mounted on /data; on-line resizing required

Performing an on-line resize of /dev/mapper/VolGroup00-LogVol03

to 11796480 (4k) blocks.

The filesystem on /dev/mapper/VolGroup00-LogVol03 is now 11796480 blocks long.

[root@sessionmgr02 ~]#

2. 輸入df -h命令以檢視磁碟空間是否現在可用。
# df -h

輸入df -h命令得到的結果示例：

[root@sessionmgr02 ~]# df -h

Filesystem            Size Used Avail Use% Mounted on

/dev/mapper/VolGroup00-LogVol00

18G  2.4G   15G  15% /

/dev/mapper/VolGroup00-LogVol02

5.7G 140M  5.3G   3% /home

/dev/mapper/VolGroup00-LogVol03

44G  22G   21G  52% /data

/dev/sda1              99M  40M   55M  43% /boot

tmpfs                  16G   0    16G   0% /dev/shm

tmpfs                 8.0G 4.0K  8.0G   1% /data/sessions.1