Linux分区扩容
lz在MAC上面使用Linux虚拟机,开始只建了一个分区,挂载在”/”目录下。现在硬盘空间不够了,所以lz就来给这个分区扩容。
首先,当然是要给虚拟机分配更多的硬盘空间喽(lz用的是VMware Fusion创建的虚拟机):
设置硬盘的大小,lz硬盘原先是20G,现在要扩到40G:
硬件已经准备就绪,现在要进行系统的设置喽。
(1)对硬盘进行分割,建立可用的分区
df -h:查看当前系统硬盘的使用情况。
以前的硬盘可用大小为18G,挂载在”/”目录下。
fdisk -l:将系统内所用的分区全部列出。
上面的信息显示,硬盘的大小为42.9G。列表显示的是分区信息,start与end是分区开始与结束的磁柱,blocks是分区的大小(单位KBytes)。分区仅仅使用了20G,还有剩余的空间未使用,可以用这些空间建立新的分区。
fdisk /dev/sda:进入fdisk程序来建立新分区。
p:将系统内所用的分区全部列出,如fdisk -l。
n:添加一个新分区。
首先选择分区的类型,primary或extended。分区有这两种类型,而且由于MBR大小的限制,仅支持4个分区(4P或3P+E)。如果想要划分更多的分区,就要使用3P+E这种方式,把剩余的容量全部分给extended,再分割extended实现更多的分区。如果在4个分区外还有剩余空间,这些空间便浪费了。这里选择p(primary)。
然后选择分区号,因为只支持4个分区,所以分区号只有四个。这里使用默认的3就可以了。
最后选择分区的起始扇区和结尾扇区,这个决定了该分区的大小。这里都用默认值,会将剩余的空间都分给新的分区。
运行p命令,看看新建的分区:
看到了新建的分区,因为后面的需要,还要将这个分区的Id改为8e(使用LVM合并分区时要求该类型),运行t命令:
使用w命令保存并退出(如果设置出现问题,使用q不保存退出)。
reboot重启系统或者使用partprobe命令使设置生效。
(2)对分区进行格式化,建立系统可用的文件系统。
Linux中的下列指令可以用来格式化分区:
使用df -Th,看看当前的文件系统是什么:
默认的文件系统是xfs,所以新建的分区也格式化成xfs:
mkfs.xfs /dev/sda3
(3)在Linux系统是建立挂载点(就是目录),然后将分区挂载上
其实挂载的目录就是分区的入口,往该目录下写入的内容便存入该分区。
mkdir /mount
mount -t xfs /dev/sda3 /mount
已经挂载上了,这样就可以使用该分区了。但是lz的目的是将原有分区扩容,所以将挂载的分区卸载下来:
umount /mount
(4)使用LVM合并分区
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。
下面介绍LVM的几个重要概念:
- PV:是物理的磁盘分区
- VG:LVM中的物理的磁盘分区,也就是PV,必须加入VG,可以将VG理解为一个仓库或者是几个大的硬盘
- LV:也就是从VG中划分的逻辑分区
用rpm -aq | grep lvm查看LVM是否安装:
现在开始将新的分区合并到原有分区上:
1.pvdisplay:查看当前的PV。
现在只存在原先分区的PV,lz要添加新建分区的PV。
2.pvcreate /dev/sda3:创建PV。然后再次查看pvdisplay:
3.vgextend centos_centos1 /dev/sda3:扩展原有VG。然后查看vgdisplay:
原有分区的VG已经增加到了39.5G了。
4.lvdisplay:查看当前的LV。
5.lvextend -L +19.9G /dev/centos_centos1/root:扩展LV(+20G提示空间不足,原因不明)。
6.xfs_growfs /dev/mapper/centos_centos1-root:扩展分区(这一步的命令困扰了很久,网上大部分都是resize2fs /dev/mapper/centos_centos1-root,但是lz执行的时候一直报这个错Bad magic number in super-block。后来看了一片文章才知道,原来resize2fs是针对ext文件系统的工具,而xfs文件系统有其一系列特有的工具)。用df -h查看:
Linux分区扩容成功。