如果安装linux时,在选择分区设置时,选择默认,会使用lvm管理。系统运行一段时间后,发现根分区磁盘容量不够,需要扩容。该如何做呢?
使用lvm技术可以扩大根分区,不破坏分区表。
先查看一下我们现在的磁盘分区占用情况:
[root@linux2 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/VolGroup00-LogVol00
27G 5.1G 20G 21% /
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 252M 0 252M 0% /dev/shm
可以看到 / 分区有27G。下面示例增大这个分区。
1、首先新加一块磁盘,连接至主机。开机,进入系统。使用root登录,运行fdisk,将新加的磁盘分区。我们这里假设将全部磁盘容量只分一个区,分区为/dev/sdb1;
2、初始化磁盘给LVM应用
pvcreate /dev/sdb1
3、将新创建的磁盘加入到逻辑卷组VolGroup00, 扩展VG(VolGroup):
vgextend /dev/VolGroup00 /dev/sdb1
运行vgdisplay ,查看扩展后的VG,如果显示容量增加,表示,VG扩展成功;
4、将逻辑卷组VolGroup00 的逻辑卷LogVol00的容量增加10G,扩展LV(LogVol):
lvextend -L + n(M,或G) /dev/VolGroup00/LogVol00
如: lvextend -L +10G /dev/VolGroup00/LogVol00
就是把 LogVol00 增加10G
增加的数值中不能有小数点,如果遇到10.3G这样的,可以分两次增加扩展,先增加10G,再增加300M
运行lvdisplay,查看扩展后的lv(LogVol),如果显示容量增加,表示,LV扩展成功;(在这里就是/分区增加成功)
5、最后将磁盘分区扩容至37G
resize2fs /dev/VolGroup00/LogVol00 37G
执行完成后,我们再运行df查看分区情况:
[root@linux2 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/VolGroup00-LogVol00
37G 5.1G 30G 15% /
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 252M 0 252M 0% /dev/shm
可以看到,现在/分区已经是37G了。使用LVM动态调整磁盘空间就是这么简单。
---------------------------------------------------------------------------------------------------------------------------------------------------------
前几天要在DELL2950上搭建web环境,这台服务器预装RHEL5。但是只划分了很小的几个分区,还有几百个G没有使用。 /usr/local分区也只划分了8G,所以决定要扩充逻辑卷。但是在使用lvextend命令时遇到了些问题。
在网上搜索了些资料,做了下总结。
由于当时没有记录下操作过程,所以这里借bemperor 兄弟的帖子说明下问题。内容如下:
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/VolGroup00-LogVol00
2920216 2479008 290476 90% /
/dev/sda1 101086 11785 84082 13% /boot
tmpfs 257760 0 257760 0% /dev/shm
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 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 522 4088542+ 8e Linux LVM
Extending logical volume LogVol00 to 4.88 GB
Insufficient free space: 64 extents needed, but only 0 available
上面的这个例子可以看出sda这个设备至少还有一多半的空间没有使用。因为sda2分区是从14-522柱面,而整个硬盘一共有1305个柱面,523-1305都是自由空间。
但是直接用extend命令扩展分区是不行的,会提示没有剩余空间。只是因为当初划分磁盘空间的时候逻辑卷组VolGroup00的大小已经固定了。卷组的大小确定后是不能更改的。只有通过往卷组中添加物理卷来扩大卷组的空间。而物理卷要由新的 分区/磁盘 来创建。
因为概念比较多,所以听起来有些乱。总结一下思路:
利用剩下的自由空间 创建一个物理分区-->将这个物理分区装换为物理卷-->把这个物理卷添加到要扩展的卷组中-->然后才能用extend命令扩展此卷组中的逻辑卷 。。。还是有些乱。。。
结合上面的例子的具体操作步骤为:
1.首先要再创建一个物理分区
(使用fdisk /dev/sda,选择n来创建一个新的分区比如sda3,主分区还是逻辑分区对此例子无所谓)
完成后需要重新启动。
可以用fdisk -l命令来查看已有分区
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 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 522 4088542+ 8e Linux LVM
用fdisk /dev/sda命令,选择‘n’创建新分区,主分区,逻辑分区对这个例子来说都可以,‘w’保存。
重启机器生效。
2.接下来创建sda3分区 建为物理卷 (pvcreate /dev/sda3)
/dev/sda3这个路径可以参照 pvdisplay这个命令中sda1的路径,一般都是在dev下。
3.为卷组VolGroup00添加新的物理卷sda3来增大卷组的容量 (vgextend VolGroup00 /dev/sda3)
用vgdisplay来查看卷组名称。
4.现在才能扩展逻辑卷的大小 (lvextend -L +2G /dev/VolGroup00/LogVol00)
用lvdisplay查看逻辑卷绝对路径
*5.最后要使用resizefs2命令重新加载逻辑卷的大小才能生效。 (resize2fs /dev/VolGroup00/LogVol00)
如果不用这个命令的话,你会发现用df -h命令查看扩展的逻辑卷大小还是原来的值,没有发生变化。即使重启也不会变,所以一定要执行 resize2fs命令。