[Internal testing communication] 一种无损调整系统分区大小并将空间合并入数据盘的方法
Tofloor
poster avatar
昨夜的星辰
deepin
2025-06-09 01:26
Author

折腾这个方法主要是因为在安装25的时候忘记看分区大小直接安装了,结果是/和/persistent分区各100G

因为有数据盘,所以导致/分区只使用了十多G,home目录在/persistent数据盘上,装虚拟机+其它软件什么的100G明显不够用

于是想把/弄出来50G给并到/persistent分区上,在物理机上折腾失败,原因应该是当时把/persistent的数据备份到NTFS分区了(文件权限有变化),完成后可能由于权限问题导致重启后无法进入桌面,但是控制台是可以登录进去的,看来大致路线是行得通的

/分区是指原系统的根分区,/persistent分区是指原系统的数据盘

重装后抓紧搞了个虚拟机,装好deepin,备份好虚拟硬盘文件以便搞坏了恢复,开始折腾

1、用deepin25的ISO(安装U盘)引导系统,进入deepin25的LIVE系统内

2、打开磁盘管理器,弹出密码输入窗口,liveuser没有密码,直接点确定就可以了

3、将原系统的/分区卸载掉,不然不能调整分区

截图_选择区域_20250608234942.png

4、调整/分区,将多余空间分出来,数值是留下的/分区的大小

注意:物理机调整分区大小是会需要一定时间的,几分钟十几分钟不等,如果调整了就多等等

5、新建EXT4分区用于备份文件,如果已经有其它EXT4分区,可以不用做
截图_选择区域_20250608235315.png

截图_选择区域_20250608235338.png

6、将原/persistent分区的所有数据同步到备份分区,如图

sudo rsync -a /media/liveuser/_dde_data/ /media/liveuser/2061ffb6-e3f0-4bo0-b8d1-a39882ef246a/

这里注意命令用法和目录位置,需要sudo运行,rsync -a会同步所有属性,目前最后都有斜杠是表示同步的目录

sudo rsync -a 源目录/ 目标目录/

目录地址搞不准的,可以在文件管理器地址那里右键编辑路径复制路径,要确保备份到新建分区的根目录。如果是已有的EXT4分区,备份到某个文件夹就行

截图_选择区域_20250609000206.png

7、将备份分区和原/persistent分区都卸载掉,删除原/persistent分区(数据盘),如图所示,deepin的磁盘管理器不能向前合并空间,只能向后合并空闲空间,试过gpart分区工具,以及WINPE的DiskGenius都无法调整分区,会报错导致失败

截图_选择区域_20250609000525.png

8、调整备份分区大小,大小为备份分区大小+空间空间大小,不超过就可以直接调整完成了

9、检查调整完成后的分区的文件系统,修改新分区的UUID为原分区UUID,这样就可以不用动原系统的磁盘挂载配置文件。/目录因为只是缩小,UUID不变不用管

原分区UUID在Roota分区etc/目录下fstab文件内,/persistent这条挂载项既是,参考如下

image.png

sudo e2fsck -f /dev/sda4          #检查文件系统
sudo tune2fs -U 477ca434-196d-40a3-8519-2a074956ab05 /dev/sda4    #修改分区UUID
sudo tune2fs -1 /dev/sda4            #查看分区UUID是否修改完成

截图_选择区域_20250609002154.png

10、此时如果不出意外,分区调整完成,LIVE系统重启进入物理机系统就可以了

================================================================================

原则上只要有足够的硬盘空间(EXT4),可以随意调整分区,简化步骤如下,有兴趣的可以试下:

1、将/和/persistent分区内数据全部rsync备份出去;

2、调整分区

3、将数据全部rsync同步回来

4、检查文件系统,修改分区UUID即可

甚至rsync可以不用,直接用WINPE里的GHOST也可以进行备份和还原

Reply Favorite View the author
All Replies
晚秋(lateautumn)
Moderator
2025-06-09 09:46
#1

学习了,谢谢分享。正需要呢like

Reply View the author
jjcui8595
deepin
Resources Team Moderator
2025-06-09 09:47
#2

like

Reply View the author
Tent
deepin
2025-06-09 10:01
#3

gparted不行么?不过你发的这个也是个不错的思路了,gparted我试着虽然能成功,但时间可能会很长,后面有机会了我再试试先复制数据再格式化后面的分区的情况。

我之前在我物理机,进u盘livecd模式装了个gparted,操作过1次把空闲分区合并到后面的已有分区,也操作过3次把空闲分区合并到上面的上面那个已有分区,都是成功的,就是涉及间隔分区空间大的时候,时间会很长。

Reply View the author
昨夜的星辰
deepin
2025-06-09 10:07
#4
Tent

gparted不行么?不过你发的这个也是个不错的思路了,gparted我试着虽然能成功,但时间可能会很长,后面有机会了我再试试先复制数据再格式化后面的分区的情况。

我之前在我物理机,进u盘livecd模式装了个gparted,操作过1次把空闲分区合并到后面的已有分区,也操作过3次把空闲分区合并到上面的上面那个已有分区,都是成功的,就是涉及间隔分区空间大的时候,时间会很长。

是的,gparted我试了两次,因为我物理上还有一个UOS,在UOS上试的,检查完就提示错误了,我估计可能是没有检查文件系统的原因,有可能先用命令行检查完文件系统再合并就可以了

Reply View the author
引栗先生
deepin
2025-06-09 13:24
#5

这个动静有点大,我是发现用户目录下的.config、.cache、.local这3个目录占用空间很大,就直接把数据 sudo rsync -a 复制到有空间的/data分区中,然后用Bind Mount方式mount过来,就不用倒腾磁盘分区了。

所以我/etc/fstab中增加了3行。

/data/lyl/.config /home/lyl/.config none bind 0 0
/data/lyl/.cache /home/lyl/.cache none bind 0 0
/data/lyl/.local /home/lyl/.local none bind 0 0

Reply View the author
昨夜的星辰
deepin
a day ago
#6
引栗先生

这个动静有点大,我是发现用户目录下的.config、.cache、.local这3个目录占用空间很大,就直接把数据 sudo rsync -a 复制到有空间的/data分区中,然后用Bind Mount方式mount过来,就不用倒腾磁盘分区了。

所以我/etc/fstab中增加了3行。

/data/lyl/.config /home/lyl/.config none bind 0 0
/data/lyl/.cache /home/lyl/.cache none bind 0 0
/data/lyl/.local /home/lyl/.local none bind 0 0

这也是个很好的方法,LINUX上文件挂载这个功能还是很灵活很方便的

Reply View the author