磁盘分区不足时,移动文件到其他磁盘分区

  1. 场景一:Windows系统C盘空间不足
    1. Ubuntu子系统从C盘迁出到其他盘
    2. 创建新路径
    3. 文件迁移
    4. 创建链接
    5. 启动 wsl
  2. 场景二:Ubuntu系统磁盘空间不足

我们偶尔会遇到磁盘空间不足的情况,这时我们需要将一些文件移动到其他磁盘分区,同时需要保障不影响原有程序的使用和配置。这里分别举个人电脑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.vhdx
C:\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

×

喜欢就点赞,疼爱就打赏