有時候會遇到這樣的情況:剛開始給VMWare分配了一個虛擬硬碟,安裝Linux後,隨著工作中使用得越來越多,虛擬硬碟容量逐漸層得不夠用,需要擴充空間。下面說明如何在VMWare中增加Linux的檔案系統空間。
我的VMWare中安裝的是Fedora 9,不過其它Linux應該大同小異。
首先在VMWare中調整虛擬硬碟的大小(在“Virtual Machine Settings”的Hardware選項卡裡選擇“Hard Disk(SCSI)”,在右側的Utilities裡選擇Expand進行擴充),也可以直接Add一塊新的虛擬硬碟。
啟動Linux,鍵入df -h查看磁碟資訊:
[root@localhost ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup00-LogVol00 29G 26G 2.3G 92% //dev/sda1 190M 13M 168M 7% /boottmpfs 506M 48K 506M 1% /dev/shmgvfs-fuse-daemon 29G 26G 2.3G 92% /root/.gvfs
可以看到新增加的硬碟容量並沒有體現在Linux中。使用fdisk -l查看分區表資訊。我的資訊是:
[root@localhost ~]# fdisk -lDisk /dev/sda: 42.9 GB, 42949672960 bytes255 heads, 63 sectors/track, 5221 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk identifier: 0x000f1526 Device Boot Start End Blocks Id System/dev/sda1 * 1 25 200781 83 Linux/dev/sda2 26 3916 31254457+ 8e Linux LVM
注意Disk /Dev/sda有40多G空間(剛剛通過VMWare擴充的),但兩個Device /dev/sda1和/dev/sda2加起來只有30多G,有10G空間沒有被使用。
從調整分區表入手,調整分區表用fdisk。這個過程需要人機互動,我在需要輸入的地方加註釋來說明
[root@localhost ~]# fdisk /dev/sdaThe number of cylinders for this disk is set to 5221.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): n //選擇n表示建立分區Command action e extended p primary partition (1-4)e //選擇e表示建立擴充分區Partition number (1-4): 3 //選擇3是因為1和2都被佔了(/dev/dsa1和/dev/dsa2)First cylinder (3917-5221, default 3917): //此分區起始柱面,直接按斷行符號,使用預設值Using default value 3917Last cylinder or +size or +sizeM or +sizeK (3917-5221, default 5221): //此分區大小,直接按斷行符號,使用預設值(表明包含所有剩餘空間)Using default value 5221Command (m for help): n //在擴充分區基礎上建立邏輯分區Command action l logical (5 or over) p primary partition (1-4)l //選擇l表示建立邏輯分區First cylinder (3917-5221, default 3917): //直接按斷行符號Using default value 3917Last cylinder or +size or +sizeM or +sizeK (3917-5221, default 5221): //直接按斷行符號Using default value 5221Command (m for help): p //選擇p查看新的分區表,發現已經建立成功Disk /dev/sda: 42.9 GB, 42949672960 bytes255 heads, 63 sectors/track, 5221 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk identifier: 0x000f1526 Device Boot Start End Blocks Id System/dev/sda1 * 1 25 200781 83 Linux/dev/sda2 26 3916 31254457+ 8e Linux LVM/dev/sda3 3917 5221 10482412+ 5 Extended/dev/sda5 3917 5221 10482381 83 LinuxCommand (m for help): w //選擇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.
可以看到新增了/dev/sda3擴充分區和/dev/sda5邏輯分區。如果是新增了一塊硬碟,也可以直接建立一個主要磁碟分割,步驟更簡單些。
鍵入partprobe命令,這個命令用於在硬碟分區發生改變時,更新Linux核心中讀取的硬碟分區表資料。
[root@localhost ~]# partprobe
我們使用ext3格式化/dev/sda5這個新的分區
[root@localhost ~]# mkfs -t ext3 /dev/sda5mke2fs 1.40.8 (13-Mar-2008)Warning: 256-byte inodes not usable on older systemsFilesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)655360 inodes, 2620595 blocks131029 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=268435456080 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632Writing inode tables: done Creating journal (32768 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 32 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.
格式化完畢後,要將新的分區加入到LVM(Logical Volume Manager)以便以後管理。
我們先用pvdisplay命令查看LVM的物理卷資訊
[root@localhost ~]# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name VolGroup00 PV Size 29.81 GB / not usable 25.93 MB Allocatable yes PE Size (KByte) 32768 Total PE 953 Free PE 1 Allocated PE 952 PV UUID gjFDfY-J0vK-7YKm-uo32-eiQZ-YO3D-PFbp1A
可以看到,只有/dev/sda2加入了LVM的VolGroup00卷組。
使用我們新的/dev/sda5建立LVM物理卷,命令是pvcreate
[root@localhost ~]# pvcreate /dev/sda5 Physical volume "/dev/sda5" successfully created
建立成功,再鍵入pvdisplay查看
[root@localhost ~]# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name VolGroup00 PV Size 29.81 GB / not usable 25.93 MB Allocatable yes PE Size (KByte) 32768 Total PE 953 Free PE 1 Allocated PE 952 PV UUID gjFDfY-J0vK-7YKm-uo32-eiQZ-YO3D-PFbp1A "/dev/sda5" is a new physical volume of "10.00 GB" --- NEW Physical volume --- PV Name /dev/sda5 VG Name PV Size 10.00 GB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID WiG7f0-jGuq-HCUR-3MCZ-d8V0-rwV9-rEF2wg
新的物理卷已經建立,但是沒有加入任何卷組。現在我們把它加入VolGroup00卷組
[root@localhost ~]# vgextend VolGroup00 /dev/sda5 Volume group "VolGroup00" successfully extended
加入成功。鍵入lvdisplay查看我們當前的邏輯卷資訊
[root@localhost ~]# lvdisplay --- Logical volume --- LV Name /dev/VolGroup00/LogVol00 VG Name VolGroup00 LV UUID nvo0P1-8kmf-f9jJ-X4ii-RHUD-VvwK-AvIm36 LV Write Access read/write LV Status available # open 1 LV Size 29.25 GB Current LE 936 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Name /dev/VolGroup00/LogVol01 VG Name VolGroup00 LV UUID 2hi7f1-SPdo-FQdX-s4gE-Y74F-rgzQ-KAO55X LV Write Access read/write LV Status available # open 1 LV Size 512.00 MB Current LE 16 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1
我們要擴充的是名為/dev/VolGroup00/LogVol00的邏輯卷,使用lvextend命令
[root@localhost ~]# lvextend /dev/VolGroup00/LogVol00 /dev/sda5 Extending logical volume LogVol01 to 10.47 GB Logical volume LogVol01 successfully resized
擴充成功,此時再鍵入lvdisplay查看資訊,顯示如下
[root@localhost ~]# lvdisplay --- Logical volume --- LV Name /dev/VolGroup00/LogVol00 VG Name VolGroup00 LV UUID nvo0P1-8kmf-f9jJ-X4ii-RHUD-VvwK-AvIm36 LV Write Access read/write LV Status available # open 1 LV Size 39.22 GB Current LE 1255 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Name /dev/VolGroup00/LogVol01 VG Name VolGroup00 LV UUID 2hi7f1-SPdo-FQdX-s4gE-Y74F-rgzQ-KAO55X LV Write Access read/write LV Status available # open 1 LV Size 32.00 MB Current LE 1 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1
LogVol00擴大了10G。但此時鍵入df -h,會發現我們的空間還是不能用
[root@localhost ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup00-LogVol00 29G 26G 2.3G 92% //dev/sda1 190M 13M 168M 7% /boottmpfs 506M 48K 506M 1% /dev/shmgvfs-fuse-daemon 29G 26G 2.3G 92% /root/.gvfs
需要用resize2fs工具調整Linux檔案系統大小。如果你的Linux核心是2.6及以上版本,可以直接調整,否則需要先umount相關的裝置後進行調整。Fedora 9的核心版本是2.6.25。OK,我們直接調整df命令中列出的/dev/mapper/VolGroup00-LogVol00檔案系統
[root@localhost ~]# resize2fs /dev/mapper/VolGroup00-LogVol00resize2fs 1.40.8 (13-Mar-2008)Filesystem at /dev/mapper/VolGroup00-LogVol00 is mounted on /; on-line resizing requiredold desc_blocks = 2, new_desc_blocks = 3Performing an on-line resize of /dev/mapper/VolGroup00-LogVol00 to 10280960 (4k) blocks.The filesystem on /dev/mapper/VolGroup00-LogVol00 is now 10280960 blocks long.
此時再鍵入df -h命令查看
[root@localhost ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup00-LogVol00 39G 26G 12G 69% //dev/sda1 190M 13M 168M 7% /boottmpfs 506M 48K 506M 1% /dev/shmgvfs-fuse-daemon 39G 26G 12G 69% /root/.gvfs
至此,我們的檔案系統擴充完畢。