Resizing an LVM Volume/Partition in VMWare (ESXi 4.1.0) Linux (CentOS 5.04) Guest

虚拟机用了一段时间后磁盘越来越吃紧了,试验了一个可行的方法把磁盘变大。

一、扩容虚拟硬盘

通 常只需要把虚拟机关机,在虚拟机设置里面直接把硬盘调大就可以。我的例子稍微复杂一点,因为原来的硬盘模式是thick,想趁这次机会改成thin。 Thick模式下物理机上的硬盘文件一上来就会和设置值一样大,thin模式下是按需分配,用多少硬盘文件就多大,最大值还是和设置值一样。

1. 在VMWare管理界面里创建一个thin模式的新硬盘,设置成SCSI (0:1)。反正是thin模式,容量设大一点。

2. 客户机开机,root登录。

3. 确认一下 /dev/sdb 已经在了。

4. 把原来硬盘的内容复制到新硬盘来,执行:dd -if=/dev/sda -of=/dev/sdb 等执行完大概要个十分钟。

5. 客户机关机。

6. 在VMWare管理界面里删除原来硬盘 SCSI (0:0),把新硬盘改成 SCSI (0:0)。

7. 客户机开机,登录检查一下是否一切正常。

另一种更简单的方法就是让虚拟机永久挂载新旧两个硬盘,省略dd的步骤,在下面LVM设置里让卷组 (volume group) 分跨在两个硬盘上。

--------------------------------------------------

二、调整分区

CentOS 默认分区是LVM格式,是一种自由度很高的分区模式。一般来说可以直接在本机操作LVM,保险起见我用了另外一个系统来操作。手边有Ubuntu安装盘 的,可以直接用那张光盘启动到LiveCD模式。下载嫌太大的话可以用别的Linux LiveCD,我用了Parted Magic的LiveCD( http://partedmagic.com/doku.php?id=downloads ),180M左右。包含了所有需要的命令。

1. 客户机开机按F2进BIOS,设置光驱启动。

2. 利用fdisk分区:

fdisk /dev/sda

新建分区

Command (m for help): n

选扩展分区

e

根据硬盘情况选Partition number,我的例子是4

默认 First cylinder、 Last cylinder

改变分区类型

t

选择刚才的 Partition number,比如我的例子是4

Partition number (1-4): 4

选择LVM (编号8e)

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

写入分区表

w

退出fdisk

q

重启客户机

--------------------------------------------------

三、设置LVM

再次进入LiveCD

查看已有的物理卷 ( physical volumes )

pvdisplay

我的例子里已经有了/dev/sda2和/dev/sda3组成了名为VolGroup00的卷组 (volume group)

创建phisical volume,因为刚才已经有了 /dev/sda2和/dev/sda3,就新建/dev/sda4(即fdisk里新建的#4分区)

pvcreate /dev/sda4

将现有的卷组 VolGroup00 扩展到新建的物理卷/dev/sda4上

vgextend VolGroup00 /dev/sda4

核实卷组信息

vgdisplay

其中的VG Size应该是扩容后的容量

  (logical volume, 也就是我们看到的分区)  

lvdisplay

我的例子中为/dev/VolGroup00/LogVol00

将逻辑卷扩容至所有可用空间

lvextend -l +100%FREE  /dev/VolGroup00/LogVol00

--------------------------------------------------

四、让文件系统识别新的逻辑卷

e2fsck -f /dev/VolGroup00/LogVol00

resize2fs /dev/VolGroup00/LogVol00

完成