我们偶尔会遇到磁盘空间不足的情况,这时我们需要将一些文件移动到其他磁盘分区,同时需要保障不影响原有程序的使用和配置。这里分别举个人电脑C盘空间不足和Ubuntu系统磁盘空间不足两个实际场景的例子来说明如何处理。
场景一:Windows系统C盘空间不足
首先确认占用空间较大的文件或文件夹。例如:maven本地仓库、Docker镜像、Ubuntu子系统磁盘文件等。
有些文件是可以通过设置程序的配置来减少占用的,做相应的配置即可。例如:maven本地仓库可以通过设置maven的本地仓库路径来减少占用的空间;Docker镜像可以通过设置Docker的镜像存储路径来减少占用的空间。
Docker 磁盘文件从C盘移动到其他盘具体方法是:打开 Docker Desktop 的 Settings,点击 Resources 菜单下的 Advanced 选项卡,更改 Disk image location 目录,应用并重启 Docker 服务后,程序将自动移动 docker_data.vhdx 磁盘文件。
针对无法通过简单配置来处理的情况,比较简单的迁移思路是将文件夹移动到其他分区,然后在原位置创建一个软链接指向新的文件夹。示例如下:
Ubuntu子系统从C盘迁出到其他盘
通过 PowerShell 关闭 wsl
wsl --shutdown
找到子系统的磁盘文件 ext4.vhdxC:\Users\lingj\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx
创建新路径
在空间足够的分区,如D盘,创建文件夹 D:\home\ethan\AppData\Local\Packages\Ubuntu24.04LTS 用于存放子系统文件。
文件迁移
将 ext4.vhdx 文件直接 ctrl+x 剪切到 D:\home\ethan\AppData\Local\Packages\Ubuntu24.04LTS 文件夹。移动结束后,删除 ext4.vhdx 原来的上层文件夹 LocalState。
创建链接
使用 Win+r,输入 cmd 打开命令行(一定是cmd,PowerShell会报错)。然后输入命令:
mklink /j C:\Users\lingj\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_79rhkp1fndgsc\LocalState D:\home\ethan\AppData\Local\Packages\Ubuntu24.04LTS
启动 wsl
wsl
场景二:Ubuntu系统磁盘空间不足
思路同场景一,首先确认占用空间较大的文件或文件夹。然后将文件夹移动到其他分区,然后在原位置创建一个软链接指向新的文件夹。示例如下:
# 分析磁盘占用现状
df -h
# 查看占用空间最大的文件夹
du -h --max-depth=1 /
查看结果发现:
磁盘占用:789G,占用率 88%
附件占用:414G
数据库备份占用:12G
有一块新增磁盘 /dev/vdc, 空间1T,计划将附件、数据库备份迁移到该磁盘,然后在原路径创建一个软链接指向新的文件夹。
# 移动数据库备份目录
mv /home/shumei/backup/_ZHGC /disk2/backup/
# 创建软链接
ln -s /disk2/backup/_ZHGC /home/shumei/backup/_ZHGC
# 移动附件目录
mv /home/shumei/attaches /disk2
# 创建软链接
ln -s /disk2/attaches /home/shumei/attaches
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 ethan89@aliyun.com