Ubuntu缩小磁盘分区大小
摘要:
- 通过resize2fs调整文件系统大小
- 通过parted调整磁盘分区大小
我在刚开始装系统的时候,没有考虑到以后的扩展,直接把所有的空间都给使用了,后来发现需要新的分区的时候,已经没有可用的空间了,这时候就需要将一个分区的空间给缩小,后来折腾了半天,终于成功了!下面我以虚拟机中装的Ubuntu 16.04为例子,和大家分享一下。
首先查看一下目前的磁盘分区
这个虚拟机上只有一块硬盘sda,sda分成了5个分区,其中sda2是扩展分区,现在,我想将/home分区的大小缩小为4G,这样可以多出一部分空间来新建一个分区,那该如何做呢,且听我慢慢道来。
卸载/home分区
首先,我们需要以root登陆进去,用umount /home
命令卸载/home分区。注意,此时其他用户必须已经退出了,否则就会显示/home分区是busy的,无法卸载。如果卸载时发现/home分区busy无法卸载,可以通过lsof +d /home
命令来查看哪些进程在使用/home分区。
缩小/home分区的文件系统大小
第二步,通过resize2fs
命令来缩小/home分区的__文件系统大小__。(注意:文件系统大小和磁盘分区大小是两个不同的概念。我的理解是,文件系统大小表示的是文件系统实际可用的大小,而磁盘分区大小则是文件系统所安装的磁盘分区的真实大小。通过df -h
命令我们可以查看文件系统大小,通过lsblk
或者fdisk
命令可以查看磁盘分区大小。)
在这里,我将我的/home分区大小变成了4G,结果如下所示(需要注意的是,在缩小之前,首先要对文件系统进行检查):
缩小/home分区的磁盘分区大小
调整好文件系统大小以后,我们就需要来调整磁盘分区大小了,这里我们通过parted
命令中的resizepart
命令来调整分区大小。用法如下:
其中NUMBER代表的是分区号,这里我们的/home分区为5,END代表的是结束的位置,我们可以用4GB来表示。(注意:parted的分区大小计算方式和lsblk不同,所以我们多留一些空间,防止数据丢失)
运行结果如下:
调整/home分区的文件系统大小并重新挂载
在第三步中,为了防止数据丢失,我们多留出了一些空间。在这里我们需要相应地调整文件系统大小,让其和磁盘空间大小匹配,这里我们通过resize2fs
命令来完成这一步。
最后我们重新把/home分区挂载上就可以了。
注意
最后需要注意的是调整磁盘分区大小以后,磁盘分区的UUID可能会改变,mount -a
命令可能会失败,此时我们需要通过blkid
命令来查看/home分区的大小,并相应地更改/etc/fstab
配置文件中指定的/home分区的UUID。