我正在使用 ansible 部署到我的服务器,在我开始安装/更新软件包之前,它的一部分会运行一堆“更新”命令。我最近收到有关磁盘空间的错误,但似乎在试图修复它时陷入了困境,下面是我能想到的关于发生了什么的信息。
启动错误:
sudo apt-get --fix-broken install -y
给出了以下内容:
sudo:无法解析主机 myserver-001
正在读取软件包列表... 完成 正在
构建依赖关系树
正在读取状态信息... 完成
正在更正依赖关系... 完成
将安装以下额外软件包:
linux-headers-3.13.0-160
将安装以下新软件包:
linux-headers-3.13.0-160
已升级 0 个软件包,新安装 1 个软件包,要删除 0 个软件包,未升级 0 个软件包。
未完全安装或删除 4 个软件包。
需要获取 0 B/8,911 kB 的档案。
此操作后,将使用 63.6 MB 的额外磁盘空间。
(正在读取数据库... 当前安装了 505365 个文件和目录。)
准备解压 .../linux-headers-3.13.0-160_3.13.0-160.210_all.deb...
正在解压 linux-headers-3.13.0-160(3.13.0-160.210)...
dpkg:错误处理存档/var/cache/apt/archives/linux-headers-3.13.0-160_3.13.0-160.210_all.deb(--unpack):
错误创建目录`./usr/src/linux-headers-3.13.0-160/drivers/staging/lustre/lustre/osc':设备上没有剩余空间
没有写入 apport 报告,因为错误消息表明磁盘已满
dpkg-deb:错误:子进程 paste 被信号杀死(管道断裂)
错误处理时遇到:
/var/cache/apt/archives/linux-headers-3.13.0-160_3.13.0-160.210_all.deb
E:子进程 /usr/bin/dpkg 返回错误代码 (1)
对我来说,重要的是:
error creating directory `./usr/src/linux-headers-3.13.0-160/drivers/staging/lustre/lustre/osc': No space left on device
没有写入 apport 报告,因为错误消息表明磁盘已满错误
因此,经过一番谷歌搜索后,我找到了这些地方:/boot 和 /usr/src/,并检查了 innodes
df /boot | df /usr/src:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvda1 8115168 5474876 2205016 72% /
DF-我:
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 480531 391 480140 1% /dev
tmpfs 481833 312 481521 1% /run
/dev/xvda1 524288 521345 2943 100% /
none 481833 2 481831 1% /sys/fs/cgroup
none 481833 1 481832 1% /run/lock
none 481833 1 481832 1% /run/shm
none 481833 2 481831 1% /run/user
/dev/xvdb 262144 11 262133 1% /mnt
uname -r:
3.13.0-158-generic
我不太擅长这个,因此尝试提供尽可能多的信息。如果这些信息没有用,我深表歉意。
在 /usr/src 中我有很多 linux-header:
drwxr-xr-x 24 root root 4096 2016 年 11 月 24 日 linux-headers-3.13.0-101
drwxr-xr-x 7 root root 4096 2016 年 11 月 24 日 linux-headers-3.13.0-101-generic
drwxr-xr-x 24 root root 4096 2017 年 1 月 20 日 linux-headers-3.13.0-107
drwxr-xr-x 7 root root 4096 2017 年 1 月 20 日 linux-headers-3.13.0-107-generic
drwxr-xr-x 24 root root 4096 2017 年 3 月 9 日 linux-headers-3.13.0-112
drwxr-xr-x 7 root root 4096 2017 年 3 月 9 日linux-headers-3.13.0-112-generic
drwxr-xr-x 24 root root 4096 2017 年 4 月 7 日 linux-headers-3.13.0-116
drwxr-xr-x 7 root root 4096 2017 年 4 月 7 日 linux-headers-3.13.0-116-generic
drwxr-xr-x 24 root root 4096 2017 年 5 月 4 日 linux-headers-3.13.0-117
drwxr-xr-x 7 root root 4096 2017 年 5 月 4 日 linux-headers-3.13.0-117-generic
drwxr-xr-x 24 root root 4096 2017 年 5 月 18 日 linux-headers-3.13.0-119
drwxr-xr-x 7 root root 4096 2017 年 5 月 18 日 linux-headers-3.13.0-119-generic
drwxr-xr-x 24 root root 4096 2017 年 6 月 22 日 linux-headers-3.13.0-121
drwxr-xr-x 7 root root 4096 2017 年 6 月 22 日 linux-headers-3.13.0-121-generic
drwxr-xr-x 24 root root 4096 2017 年 7 月 7 日 linux-headers-3.13.0-123
drwxr-xr-x 7 root root 4096 2017 年 7 月 7 日 linux-headers-3.13.0-123-generic
drwxr-xr-x 24 root root 4096 2017 年 7 月 18 日linux-headers-3.13.0-125
drwxr-xr-x 7 root root 4096 2017 年 7 月 18 日 linux-headers-3.13.0-125-generic
drwxr-xr-x 24 root root 4096 2017 年 8 月 31 日 linux-headers-3.13.0-129
drwxr-xr-x 7 root root 4096 2017 年 8 月 31 日 linux-headers-3.13.0-129-generic
drwxr-xr-x 24 root root 4096 2018 年 1 月 25 日 linux-headers-3.13.0-141
drwxr-xr-x 7 root root 4096 2018 年 1 月 25 日 linux-headers-3.13.0-141-generic
drwxr-xr-x 24 root root 4096 2018 年 2 月 22 日 linux-headers-3.13.0-142
drwxr-xr-x 7 root root 4096 2018 年 2 月 22 日 linux-headers-3.13.0-142-generic
drwxr-xr-x 24 root root 4096 2018 年 3 月 27 日 linux-headers-3.13.0-143
drwxr-xr-x 7 root root 4096 2018 年 3 月 27 日 linux-headers-3.13.0-143-generic
drwxr-xr-x 24 root root 4096 4 月 27 日 13:47 linux-headers-3.13.0-145
drwxr-xr-x 7 root root 4096 4 月 27 日 13:47 linux-headers-3.13.0-145-generic
drwxr-xr-x 24 root root 4096 5月 14 11:11 linux-headers-3.13.0-147
drwxr-xr-x 7 root root 4096 5月 14 11:11 linux-headers-3.13.0-147-generic
drwxr-xr-x 24 root root 4096 5月 23 11:04 linux-headers-3.13.0-149
drwxr-xr-x 7 root root 4096 5月 23 11:04 linux-headers-3.13.0-149-generic
drwxr-xr-x 24 root root 4096 9月 12 15:19 linux-headers-3.13.0-158
drwxr-xr-x 7 root root 4096 9月12日 15:19 linux-headers-3.13.0-158-generic
drwxr-xr-x 7 root root 4096 十月 12 11:15 linux-headers-3.13.0-160-generic
drwxr-xr-x 24 root root 4096 2015 年 3 月 25 日 linux-headers-3.13.0-48
drwxr-xr-x 7 root root 4096 2015 年 3 月 25 日 linux-headers-3.13.0-48-generic
我认为我不需要其中的很多,但是当我尝试卸载 2015 内核时,我收到与以前相同的错误,该错误抱怨最新的错误以及它无法安装其依赖项的事实:
sudo apt-get remove linux-headers-3.13.0-48
sudo: 无法解析主机 myserver-001
正在读取软件包列表... 完成 正在
构建依赖关系树
正在读取状态信息... 完成
您可能需要运行“apt-get -f install”来更正这些问题:
以下软件包具有未满足的依赖关系:
linux-headers-3.13.0-160-generic:依赖:linux-headers-3.13.0-160 但不会安装
linux-headers-3.13.0-48-generic:依赖:linux-headers-3.13.0-48 但不会安装
E:未满足的依赖关系。尝试不使用任何软件包执行“apt-get -f install”(或指定解决方案)。
如果我尝试“apt-get -f install”,我会收到与之前相同的关于没有空间的消息。
/启动
abi-3.13.0-101-generic config-3.13.0-149-generic System.map-3.13.0-117-generic
abi-3.13.0-107-generic config-3.13.0-158-generic System.map-3.13.0-119-generic
abi-3.13.0-112-generic config-3.13.0-160-generic System.map-3.13.0-121-generic
abi-3.13.0-116-generic config-3.13.0-48-generic System.map-3.13.0-123-generic
abi-3.13.0-117-generic grub System.map-3.13.0-125-generic
abi-3.13.0-119-generic initrd.img-3.13.0-101-generic System.map-3.13.0-129-generic
abi-3.13.0-121-generic initrd.img-3.13.0-107-generic System.map-3.13.0-141-generic
abi-3.13.0-123-generic initrd.img-3.13.0-112-generic System.map-3.13.0-142-generic
abi-3.13.0-125-generic initrd.img-3.13.0-116-generic System.map-3.13.0-143-generic
abi-3.13.0-129-generic initrd.img-3.13.0-117-generic System.map-3.13.0-145-generic
abi-3.13.0-141-generic initrd.img-3.13.0-119-generic System.map-3.13.0-147-generic
abi-3.13.0-142-generic initrd.img-3.13.0-121-generic System.map-3.13.0-149-generic
abi-3.13.0-143-generic initrd.img-3.13.0-123-generic System.map-3.13.0-158-generic
abi-3.13.0-145-generic initrd.img-3.13.0-125-generic System.map-3.13.0-160-generic
abi-3.13.0-147-generic initrd.img-3.13.0-129-generic System.map-3.13.0-48-generic
abi-3.13.0-149-generic initrd.img-3.13.0-141-generic vmlinuz-3.13.0-101-generic
abi-3.13.0-158-generic initrd.img-3.13.0-142-generic vmlinuz-3.13.0-107-generic
abi-3.13.0-160-generic initrd.img-3.13.0-143-generic vmlinuz-3.13.0-112-generic
abi-3.13.0-48-generic initrd.img-3.13.0-145-generic vmlinuz-3.13.0-116-generic
config-3.13.0-101-generic initrd.img-3.13.0-147-generic vmlinuz-3.13.0-117-generic
config-3.13.0-107-generic initrd.img-3.13.0-149-generic vmlinuz-3.13.0-119-generic
config-3.13.0-112-generic initrd.img-3.13.0-158-generic vmlinuz-3.13.0-121-generic
config-3.13.0-116-generic initrd.img-3.13.0-160-generic vmlinuz-3.13.0-123-generic
config-3.13.0-117-generic initrd.img-3.13.0-48-generic vmlinuz-3.13.0-125-generic
config-3.13.0-119-generic retpoline-3.13.0-143-generic vmlinuz-3.13.0-129-generic
config-3.13.0-121-generic retpoline-3.13.0-145-generic vmlinuz-3.13.0-141-generic
config-3.13.0-123-generic retpoline-3.13.0-147-generic vmlinuz-3.13.0-142-generic
config-3.13.0-125-generic retpoline-3.13.0-149-generic vmlinuz-3.13.0-143-generic
config-3.13.0-129-generic retpoline-3.13.0-158-generic vmlinuz-3.13.0-145-generic
config-3.13.0-141-generic retpoline-3.13.0-160-generic vmlinuz-3.13.0-147-generic
config-3.13.0-142-generic System.map-3.13.0-101-generic vmlinuz-3.13.0-149-generic
config-3.13.0-143-generic System.map-3.13.0-107-generic vmlinuz-3.13.0-158-generic
config-3.13.0-145-generic System.map-3.13.0-112-generic vmlinuz-3.13.0-160-generic
config-3.13.0-147-generic System.map-3.13.0-116-generic vmlinuz-3.13.0-48-generic
我尝试从这里删除最新的内核 - 似乎已部分安装:sudo apt-get purge linux-image-3.13.0-160
给了我这个:
正在读取软件包列表...完成 正在
构建依赖关系树
正在读取状态信息...完成
注意,为正则表达式“linux-image-3.13.0-160”选择
“linux-image-3.13.0-160-lowlatency” 注意,为正则表达式“linux-image-3.13.0-160”选择“linux-image-3.13.0-160-generic”
软件包“linux-image-3.13.0-160-lowlatency”未安装,因此未被删除
您可能需要运行“apt-get -f install”来更正这些问题:
以下软件包具有未满足的依赖关系:
linux-headers-3.13.0-160-generic:依赖:linux-headers-3.13.0-160 但不会安装
linux-image-virtual:依赖:linux-image-3.13.0-160-generic 但不会安装
E:未满足依赖项。尝试不使用任何软件包的“apt-get -f install”(或指定解决方案)。
我真的很困惑该怎么做。如果有人能给我指明正确的方向,那就太好了!我是不是要用 rm 删除 /boot 或 /usr/src 中的一些旧文件?因为大多数帖子建议不要这样做,而是使用 apt-get remove 等命令。谢谢
答案1
您的 inode 确实用完了(您已经知道这一点)。
这种情况确实是由所有这些内核头包引起的(您也知道这一点)。
Apt 无法执行卸载,因为完成进程内安装在队列中更早……并且这些进程内安装由于 inode 不足而中止。Apt总是尝试在新操作之前完成正在进行的操作。(你也知道这一点)
正确简单的技巧是使用 dpkg 而不是 apt 卸载第一个内核头文件包。这将释放足够的 inode 来疏通 apt。后续卸载可使用 apt 完成。
sudo dpkg --remove linux-headers-3.13.0-48 linux-headers-3.13.0-48-generic
sudo apt-get remove linux-headers-3.13.0-101 linux-headers-3.13.0-101-generic
还有一些清理工作要做 - 更多的内核头,以及大量挂在 /boot 中的过时内核映像。
专家提示:切勿使用rm
删除包管理器放置的文件。您只会用下周的丢失文件错误替换今天的空间不足错误……这可能更难修复。始终使用包管理器删除它放置的文件。
答案2
尝试安装 Ubuntu 调整。它至少可以帮助您删除旧内核,并且可以获得一些可用空间。
还可以尝试以下命令:
sudo apt-get install --fix-missing --fix-broken
sudo dpkg --configure -a
或者使用有错误的特定包名称重新配置它
sudo dpkg-reconfigure <pakcage name>
[编辑]
由于您没有空间执行任何操作,最好截断一些错误/访问日志文件。
使用truncate --size 0 [path to the log file]
如果您想保留这些文件的内容,请先将它们下载到本地机器上。在您的数据库中,如果系统正在使用任何类型的日志记录/缓存,请清空这些表。