在VMWare中增加Linux文件系统空间

 

有时候会遇到这样的情况:刚开始给VMWare分配了一个虚拟硬盘,安装Linux后,随着工作中使用得越来越多,虚拟硬盘容量逐渐变得不够用,需要扩充空间。下面说明如何在VMWare中增加Linux的文件系统空间。

我的VMWare中安装的是Fedora 9,不过其它Linux应该大同小异。

首先在VMWare中调整虚拟硬盘的大小(在“Virtual Machine Settings”的Hardware选项卡里选择“Hard Disk(SCSI)”,在右侧的Utilities里选择Expand进行扩展),也可以直接Add一块新的虚拟硬盘。

启动Linux,键入df -h查看磁盘信息:

[plain] view plaincopy
  1. [root@localhost ~]# df -h  
  2. Filesystem            Size  Used Avail Use% Mounted on  
  3. /dev/mapper/VolGroup00-LogVol00  
  4.                        29G   26G  2.3G  92% /  
  5. /dev/sda1             190M   13M  168M   7% /boot  
  6. tmpfs                 506M   48K  506M   1% /dev/shm  
  7. gvfs-fuse-daemon       29G   26G  2.3G  92% /root/.gvfs  

可以看到新增加的硬盘容量并没有体现在Linux中。使用fdisk -l查看分区表信息。我的信息是:

[plain] view plaincopy
  1. [root@localhost ~]# fdisk -l  
  2.   
  3. Disk /dev/sda: 42.9 GB, 42949672960 bytes  
  4. 255 heads, 63 sectors/track, 5221 cylinders  
  5. Units = cylinders of 16065 * 512 = 8225280 bytes  
  6. Disk identifier: 0x000f1526  
  7.   
  8.    Device Boot      Start         End      Blocks   Id  System  
  9. /dev/sda1   *           1          25      200781   83  Linux  
  10. /dev/sda2              26        3916    31254457+  8e  Linux LVM  

注意Disk /Dev/sda有40多G空间(刚刚通过VMWare扩展的),但两个Device /dev/sda1和/dev/sda2加起来只有30多G,有10G空间没有被使用。

从调整分区表入手,调整分区表用fdisk。这个过程需要人机交互,我在需要输入的地方加注释来说明

[plain] view plaincopy
  1. [root@localhost ~]# fdisk /dev/sda  
  2.   
  3. The number of cylinders for this disk is set to 5221.  
  4. There is nothing wrong with that, but this is larger than 1024,  
  5. and could in certain setups cause problems with:  
  6. 1) software that runs at boot time (e.g., old versions of LILO)  
  7. 2) booting and partitioning software from other OSs  
  8.    (e.g., DOS FDISK, OS/2 FDISK)  
  9.   
  10. Command (m for help): n       //选择n表示新建分区  
  11. Command action  
  12.    e   extended  
  13.    p   primary partition (1-4)  
  14. e                             //选择e表示建立扩展分区  
  15. Partition number (1-4): 3     //选择3是因为1和2都被占了(/dev/dsa1和/dev/dsa2)  
  16. First cylinder (3917-5221, default 3917):                               //此分区起始柱面,直接按回车,使用默认值  
  17. Using default value 3917  
  18. Last cylinder or +size or +sizeM or +sizeK (3917-5221, default 5221):   //此分区大小,直接按回车,使用默认值(表明包含所有剩余空间)  
  19. Using default value 5221  
  20.   
  21. Command (m for help): n       //在扩展分区基础上新建逻辑分区  
  22. Command action  
  23.    l   logical (5 or over)  
  24.    p   primary partition (1-4)  
  25. l                             //选择l表示新建逻辑分区  
  26. First cylinder (3917-5221, default 3917):                               //直接按回车  
  27. Using default value 3917  
  28. Last cylinder or +size or +sizeM or +sizeK (3917-5221, default 5221):   //直接按回车  
  29. Using default value 5221  
  30.   
  31. Command (m for help): p       //选择p查看新的分区表,发现已经新建成功  
  32.   
  33. Disk /dev/sda: 42.9 GB, 42949672960 bytes  
  34. 255 heads, 63 sectors/track, 5221 cylinders  
  35. Units = cylinders of 16065 * 512 = 8225280 bytes  
  36. Disk identifier: 0x000f1526  
  37.   
  38.    Device Boot      Start         End      Blocks   Id  System  
  39. /dev/sda1   *           1          25      200781   83  Linux  
  40. /dev/sda2              26        3916    31254457+  8e  Linux LVM  
  41. /dev/sda3            3917        5221    10482412+   5  Extended  
  42. /dev/sda5            3917        5221    10482381   83  Linux  
  43.   
  44. Command (m for help): w       //选择w保存  
  45. The partition table has been altered!  
  46.   
  47. Calling ioctl() to re-read partition table.  
  48.   
  49. WARNING: Re-reading the partition table failed with error 16: Device or resource busy.  
  50. The kernel still uses the old table.  
  51. The new table will be used at the next reboot.  
  52. Syncing disks.  

可以看到新增了/dev/sda3扩展分区和/dev/sda5逻辑分区。如果是新增了一块硬盘,也可以直接新建一个主分区,步骤更简单些。

键入partprobe命令,这个命令用于在硬盘分区发生改变时,更新Linux内核中读取的硬盘分区表数据。

[plain] view plaincopy
  1. [root@localhost ~]# partprobe  

我们使用ext3格式化/dev/sda5这个新的分区

[plain] view plaincopy
  1. [root@localhost ~]# mkfs -t ext3 /dev/sda5  
  2. mke2fs 1.40.8 (13-Mar-2008)  
  3. Warning: 256-byte inodes not usable on older systems  
  4. Filesystem label=  
  5. OS type: Linux  
  6. Block size=4096 (log=2)  
  7. Fragment size=4096 (log=2)  
  8. 655360 inodes, 2620595 blocks  
  9. 131029 blocks (5.00%) reserved for the super user  
  10. First data block=0  
  11. Maximum filesystem blocks=2684354560  
  12. 80 block groups  
  13. 32768 blocks per group, 32768 fragments per group  
  14. 8192 inodes per group  
  15. Superblock backups stored on blocks:   
  16.     32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632  
  17.   
  18. Writing inode tables: done                              
  19. Creating journal (32768 blocks): done  
  20. Writing superblocks and filesystem accounting information: done  
  21.   
  22. This filesystem will be automatically checked every 32 mounts or  
  23. 180 days, whichever comes first.  Use tune2fs -c or -i to override.  

格式化完毕后,要将新的分区加入到LVM(Logical Volume Manager)以便以后管理。
我们先用pvdisplay命令查看LVM的物理卷信息

[plain] view plaincopy
  1. [root@localhost ~]# pvdisplay  
  2.   --- Physical volume ---  
  3.   PV Name               /dev/sda2  
  4.   VG Name               VolGroup00  
  5.   PV Size               29.81 GB / not usable 25.93 MB  
  6.   Allocatable           yes   
  7.   PE Size (KByte)       32768  
  8.   Total PE              953  
  9.   Free PE               1  
  10.   Allocated PE          952  
  11.   PV UUID               gjFDfY-J0vK-7YKm-uo32-eiQZ-YO3D-PFbp1A  

可以看到,只有/dev/sda2加入了LVM的VolGroup00卷组。

使用我们新的/dev/sda5创建LVM物理卷,命令是pvcreate

[plain] view plaincopy
  1. [root@localhost ~]# pvcreate /dev/sda5  
  2.   Physical volume "/dev/sda5" successfully created  

创建成功,再键入pvdisplay查看

[plain] view plaincopy
  1. [root@localhost ~]# pvdisplay  
  2.   --- Physical volume ---  
  3.   PV Name               /dev/sda2  
  4.   VG Name               VolGroup00  
  5.   PV Size               29.81 GB / not usable 25.93 MB  
  6.   Allocatable           yes   
  7.   PE Size (KByte)       32768  
  8.   Total PE              953  
  9.   Free PE               1  
  10.   Allocated PE          952  
  11.   PV UUID               gjFDfY-J0vK-7YKm-uo32-eiQZ-YO3D-PFbp1A  
  12.      
  13.   "/dev/sda5" is a new physical volume of "10.00 GB"  
  14.   --- NEW Physical volume ---  
  15.   PV Name               /dev/sda5  
  16.   VG Name                 
  17.   PV Size               10.00 GB  
  18.   Allocatable           NO  
  19.   PE Size (KByte)       0  
  20.   Total PE              0  
  21.   Free PE               0  
  22.   Allocated PE          0  
  23.   PV UUID               WiG7f0-jGuq-HCUR-3MCZ-d8V0-rwV9-rEF2wg  

新的物理卷已经创建,但是没有加入任何卷组。现在我们把它加入VolGroup00卷组

[plain] view plaincopy
  1. [root@localhost ~]# vgextend VolGroup00 /dev/sda5  
  2.   Volume group "VolGroup00" successfully extended  

加入成功。键入lvdisplay查看我们当前的逻辑卷信息

[plain] view plaincopy
  1. [root@localhost ~]# lvdisplay  
  2.   --- Logical volume ---  
  3.   LV Name                /dev/VolGroup00/LogVol00  
  4.   VG Name                VolGroup00  
  5.   LV UUID                nvo0P1-8kmf-f9jJ-X4ii-RHUD-VvwK-AvIm36  
  6.   LV Write Access        read/write  
  7.   LV Status              available  
  8.   # open                 1  
  9.   LV Size                29.25 GB  
  10.   Current LE             936  
  11.   Segments               1  
  12.   Allocation             inherit  
  13.   Read ahead sectors     auto  
  14.   - currently set to     256  
  15.   Block device           253:0  
  16.      
  17.   --- Logical volume ---  
  18.   LV Name                /dev/VolGroup00/LogVol01  
  19.   VG Name                VolGroup00  
  20.   LV UUID                2hi7f1-SPdo-FQdX-s4gE-Y74F-rgzQ-KAO55X  
  21.   LV Write Access        read/write  
  22.   LV Status              available  
  23.   # open                 1  
  24.   LV Size                512.00 MB  
  25.   Current LE             16  
  26.   Segments               1  
  27.   Allocation             inherit  
  28.   Read ahead sectors     auto  
  29.   - currently set to     256  
  30.   Block device           253:1  

我们要扩展的是名为/dev/VolGroup00/LogVol00的逻辑卷,使用lvextend命令

[plain] view plaincopy
  1. [root@localhost ~]# lvextend /dev/VolGroup00/LogVol00 /dev/sda5  
  2.   Extending logical volume LogVol01 to 10.47 GB  
  3.   Logical volume LogVol01 successfully resized  

扩展成功,此时再键入lvdisplay查看信息,显示如下

[plain] view plaincopy
  1. [root@localhost ~]# lvdisplay  
  2.   --- Logical volume ---  
  3.   LV Name                /dev/VolGroup00/LogVol00  
  4.   VG Name                VolGroup00  
  5.   LV UUID                nvo0P1-8kmf-f9jJ-X4ii-RHUD-VvwK-AvIm36  
  6.   LV Write Access        read/write  
  7.   LV Status              available  
  8.   # open                 1  
  9.   LV Size                39.22 GB  
  10.   Current LE             1255  
  11.   Segments               2  
  12.   Allocation             inherit  
  13.   Read ahead sectors     auto  
  14.   - currently set to     256  
  15.   Block device           253:0  
  16.      
  17.   --- Logical volume ---  
  18.   LV Name                /dev/VolGroup00/LogVol01  
  19.   VG Name                VolGroup00  
  20.   LV UUID                2hi7f1-SPdo-FQdX-s4gE-Y74F-rgzQ-KAO55X  
  21.   LV Write Access        read/write  
  22.   LV Status              available  
  23.   # open                 1  
  24.   LV Size                32.00 MB  
  25.   Current LE             1  
  26.   Segments               1  
  27.   Allocation             inherit  
  28.   Read ahead sectors     auto  
  29.   - currently set to     256  
  30.   Block device           253:1  

LogVol00扩大了10G。但此时键入df -h,会发现我们的空间还是不能用

[plain] view plaincopy
  1. [root@localhost ~]# df -h  
  2. Filesystem            Size  Used Avail Use% Mounted on  
  3. /dev/mapper/VolGroup00-LogVol00  
  4.                        29G   26G  2.3G  92% /  
  5. /dev/sda1             190M   13M  168M   7% /boot  
  6. tmpfs                 506M   48K  506M   1% /dev/shm  
  7. gvfs-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文件系统

[plain] view plaincopy
  1. [root@localhost ~]# resize2fs /dev/mapper/VolGroup00-LogVol00  
  2. resize2fs 1.40.8 (13-Mar-2008)  
  3. Filesystem at /dev/mapper/VolGroup00-LogVol00 is mounted on /; on-line resizing required  
  4. old desc_blocks = 2, new_desc_blocks = 3  
  5. Performing an on-line resize of /dev/mapper/VolGroup00-LogVol00 to 10280960 (4k) blocks.  
  6. The filesystem on /dev/mapper/VolGroup00-LogVol00 is now 10280960 blocks long.  

此时再键入df -h命令查看

[plain] view plaincopy
  1. [root@localhost ~]# df -h  
  2. Filesystem            Size  Used Avail Use% Mounted on  
  3. /dev/mapper/VolGroup00-LogVol00  
  4.                        39G   26G   12G  69% /  
  5. /dev/sda1             190M   13M  168M   7% /boot  
  6. tmpfs                 506M   48K  506M   1% /dev/shm  
  7. gvfs-fuse-daemon       39G   26G   12G  69% /root/.gvfs  

至此,我们的文件系统扩充完毕。


( ! ) Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/com_k2/templates/default/item.php on line 169
Call Stack
#TimeMemoryFunctionLocation
10.0004403496{main}( ).../index.php:0
20.06681321376Joomla\CMS\Application\SiteApplication->execute( ).../index.php:49
30.06681321376Joomla\CMS\Application\SiteApplication->doExecute( ).../CMSApplication.php:196
40.23372979696Joomla\CMS\Application\SiteApplication->dispatch( ).../SiteApplication.php:233
50.23433004312Joomla\CMS\Component\ComponentHelper::renderComponent( ).../SiteApplication.php:194
60.23513059640Joomla\CMS\Component\ComponentHelper::executeComponent( ).../ComponentHelper.php:377
70.23523076696require_once( '/var/www/vhosts/shan.info/httpdocs/components/com_k2/k2.php' ).../ComponentHelper.php:402
80.24393220784K2ControllerItem->execute( ).../k2.php:64
90.24393220784K2ControllerItem->display( ).../BaseController.php:710
100.25033489864K2ControllerItem->display( ).../item.php:78
110.25033489864K2ControllerItem->display( ).../controller.php:19
120.25163508384Joomla\CMS\Cache\Controller\ViewController->get( ).../BaseController.php:663
130.25373528800K2ViewItem->display( ).../ViewController.php:102
140.33014550704K2ViewItem->display( ).../view.html.php:742
150.33014550704K2ViewItem->loadTemplate( ).../HtmlView.php:230
160.33364725104include( '/var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/com_k2/templates/default/item.php' ).../HtmlView.php:701
  • Published in vmware
  • Read 3262 times
More in this category: « vmware 最小化到托盘

( ! ) Notice: Only variables should be assigned by reference in /var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/com_k2/templates/default/item.php on line 478
Call Stack
#TimeMemoryFunctionLocation
10.0004403496{main}( ).../index.php:0
20.06681321376Joomla\CMS\Application\SiteApplication->execute( ).../index.php:49
30.06681321376Joomla\CMS\Application\SiteApplication->doExecute( ).../CMSApplication.php:196
40.23372979696Joomla\CMS\Application\SiteApplication->dispatch( ).../SiteApplication.php:233
50.23433004312Joomla\CMS\Component\ComponentHelper::renderComponent( ).../SiteApplication.php:194
60.23513059640Joomla\CMS\Component\ComponentHelper::executeComponent( ).../ComponentHelper.php:377
70.23523076696require_once( '/var/www/vhosts/shan.info/httpdocs/components/com_k2/k2.php' ).../ComponentHelper.php:402
80.24393220784K2ControllerItem->execute( ).../k2.php:64
90.24393220784K2ControllerItem->display( ).../BaseController.php:710
100.25033489864K2ControllerItem->display( ).../item.php:78
110.25033489864K2ControllerItem->display( ).../controller.php:19
120.25163508384Joomla\CMS\Cache\Controller\ViewController->get( ).../BaseController.php:663
130.25373528800K2ViewItem->display( ).../ViewController.php:102
140.33014550704K2ViewItem->display( ).../view.html.php:742
150.33014550704K2ViewItem->loadTemplate( ).../HtmlView.php:230
160.33364725104include( '/var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/com_k2/templates/default/item.php' ).../HtmlView.php:701
back to top