What to do when debian partition is full

From 清冽之泉
Jump to navigation Jump to search

在使用围棋 AI 时,遇到了软件解压时,磁盘分区不足,导致 apt 报错的问题。经过多方排查,才知道是 /tmp 分区满了,且 / 分区立马也要满了。一旦重启,/tmp 分区较为空闲时, apt 能正常工作;一旦安装那个占用几个 G 的软件时,进度达 45% 时就报错。

报错为:

E: Write error - write (28: No space left on device) 或
E: Sub-process /usr/bin/dpkg returned an error code (1)

不重装

这是很常见的问题,以前安装 LaTeX 时也曾遇见 / 分区容量 (disk partition space) 不足的问题。总不可能分区容量不足就重装系统吧!所以,怎样在不重装的情况下,调整分区的容量?我们需要一款叫作 Gparted 的软件。

在讨论所有问题之前,我们必须明确一个理论:我们正在使用 / /usr/bin /usr/lib /home/user /tmp 等分区,不要生猛地硬调。正在用的分区,强行改写分区状况,那肯定丢数据。当然,你想强制去调,你会发现正在用的分区上锁了没法调。

未分配

对硬盘上未分配过的部分,可以用 Gparted 直接调。

已分配

对硬盘上已分配过的部分,即已 mount 的部分,必须在既没 mount,也没 umount 的情况下调。听到这里你恐怕想打人了,这是个啥状态?其实就是在 U 盘里装一个 live boot 系统,用 U 盘里的系统去更改电脑里系统的磁盘分区。

具体操作:

  1. Gparted 官网
  2. 下载 Gparted Live USB,它就相当于一个超小 Linux 系统,足以完成更改电脑 Debian 磁盘分区的重任
  3. Gparted Live USB 制作页面 学习怎么把这个超小 Linux 装进 U 盘。参考命令 sudo dd if=/home/user/Downloads/gparted-live-1.5.0-6-amd64.iso of=/dev/sdxxx-for-yours bs=4M; sync
  4. 进电脑 BIOS,选择从 U 盘启动。进入超小 Linux 后,会见到 Gparted 已预装且自动启动
  5. 选择想要调整的硬盘

Gparted 调整分区的核心技巧:假设左边 50G在用,右边 40G 未分配。那先把未分配合并形成 90G 一大块,再把它拆分成前边 30G,中间在用 50G,右边 10G 空着。就像一个吞并再拆分的游戏,调整好后点应用,就成功了。

这对以后安装新系统的启示是:尽量买大硬盘,按系统自动分区都不会出问题。在硬盘容量有限的情况下,各分区比例大概为:

/boot/efi 0.2G 0.133%
/ 40G 26.62%
/tmp 10G 6.65%
/home 100G 66.60%