红联Linux门户
Linux帮助

Ubuntu缩小磁盘分区大小

发布时间:2017-11-27 10:12:08来源:linux网站作者:黑翼天使56
摘要:
1.通过resize2fs调整文件系统大小
2.通过parted调整磁盘分区大小
 
我在刚开始装系统的时候,没有考虑到以后的扩展,直接把所有的空间都给使用了,后来发现需要新的分区的时候,已经没有可用的空间了,这时候就需要将一个分区的空间给缩小,后来折腾了半天,终于成功了!下面我以虚拟机中装的Ubuntu 16.04为例子,和大家分享一下。
 
首先查看一下目前的磁盘分区
Ubuntu缩小磁盘分区大小
这个虚拟机上只有一块硬盘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,结果如下所示(需要注意的是,在缩小之前,首先要对文件系统进行检查):
root@vv2x:~# e2fsck -f /dev/sda5
# 上面这条命令强制对/dev/sda5的文件系统进行了检查
e2fsck 1.42.13 (17-May-2015)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda5: 220/499968 files (3.6% non-contiguous), 69132/1999872 blocks
root@vv2x:~# resize2fs /dev/sda5 4G
resize2fs 1.42.13 (17-May-2015)
Resizing the filesystem on /dev/sda5 to 1048576 (4k) blocks.
The filesystem on /dev/sda5 is now 1048576 (4k) blocks long.
 
缩小/home分区的磁盘分区大小
调整好文件系统大小以后,我们就需要来调整磁盘分区大小了,这里我们通过parted命令中的resizepart命令来调整分区大小。用法如下:
(parted) help resizepart
resizepart NUMBER END  resize partition NUMBER
NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the primary
partitions number from 1 to 4, logical partitions from 5 onwards.
END is disk location, such as 4GB or 10%.  Negative value counts from the end of the
disk.For example, -1s specifies exactly the last sector.
其中NUMBER代表的是分区号,这里我们的/home分区为5,END代表的是结束的位置,我们可以用4GB来表示。(注意:parted的分区大小计算方式和lsblk不同,所以我们多留一些空间,防止数据丢失)
运行结果如下:
root@vv2x:~# parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) resizepart 5 5G
Warning: Shrinking a partition can cause data loss, are you sure you want to continue?
Yes/No? Yes
(parted)
Information: You may need to update /etc/fstab.
 
调整/home分区的文件系统大小并重新挂载
在第三步中,为了防止数据丢失,我们多留出了一些空间。在这里我们需要相应地调整文件系统大小,让其和磁盘空间大小匹配,这里我们通过resize2fs命令来完成这一步。
root@vv2x:~# resize2fs /dev/sda7
# resize2fs如果没有指定大小,那么/dev/sda7的文件系统大小默认和磁盘分区大小相同
resize2fs 1.42.13 (17-May-2015)
Resizing the filesystem on /dev/sda7 to 1171295 (4k) blocks.
The filesystem on /dev/sda7 is now 1171295 (4k) blocks long.
最后我们重新把/home分区挂载上就可以了。
Ubuntu缩小磁盘分区大小
 
注意
最后需要注意的是调整磁盘分区大小以后,磁盘分区的UUID可能会改变,mount -a命令可能会失败,此时我们需要通过blkid命令来查看/home分区的大小,并相应地更改/etc/fstab配置文件中指定的/home分区的UUID。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/32957.html