当我尝试运行 apt-get upgrade 时,出现了空间不足警告。我在虚拟机 (virtual box) 中运行 ubuntu server 14.04,虚拟硬盘为 10GB。
这是一台非常小的机器,仅在我的本地网络上运行 bind9,所以很奇怪它已经没有足够的空间了。
如果我列出磁盘空间,它会显示足够的可用空间:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntudns--vg-root 8.5G 4.0G 4.2G 49% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 2.3G 4.0K 2.3G 1% /dev
tmpfs 462M 456K 461M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 2.3G 0 2.3G 0% /run/shm
none 100M 0 100M 0% /run/user
/dev/sda1 236M 236M 0 100% /boot
我的系统使用 LVM,说实话我并不完全理解。以下信息可能有帮助:
sudo vgdisplay
--- Volume group ---
VG Name ubuntudns-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 9.76 GiB
PE Size 4.00 MiB
Total PE 2498
Alloc PE / Size 2498 / 9.76 GiB
Free PE / Size 0 / 0
VG UUID aax4CX-stxG-jcxV-s2fB-RQxf-43xe-u7Su89
sudo lvdisplay
--- Logical volume ---
LV Path /dev/ubuntudns-vg/root
LV Name root
VG Name ubuntudns-vg
LV UUID J5OD7h-CdmU-BQ4X-FOIv-0dqu-coeI-y8yvKq
LV Write Access read/write
LV Creation host, time ubuntudns, 2015-09-17 18:20:27 +0200
LV Status available
# open 1
LV Size 8.76 GiB
Current LE 2242
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
--- Logical volume ---
LV Path /dev/ubuntudns-vg/swap_1
LV Name swap_1
VG Name ubuntudns-vg
LV UUID ed2Wcu-u94R-RGYO-pNx7-Dqjt-3dgO-skT9AP
LV Write Access read/write
LV Creation host, time ubuntudns, 2015-09-17 18:20:27 +0200
LV Status available
# open 2
LV Size 1.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:1
我读过很多帖子,试图弄清楚这一点,但却没有成功。
任何帮助将不胜感激 :)
答案1
你的/boot
已经满了,看看
/dev/sda1 236M 236M 0 100% /boot
这很小,您可能希望稍后扩展它,但现在要清除一些空间,您可以运行
sudo apt-get autoremove
这应该会删除所有旧内核和无用的软件包(感谢@dan在评论中的建议autoremove
)
你也可以purge
为此构建一个命令,但我不知道你有什么内核,所以有些事情
sudo apt-get purge linux-image-2.6.32-22-generic
linux-image-2.6.32-22-generic
用要删除的内核替换,查看所有已安装的内核
dpkg --list | grep linux-image
或者你可以nautilus
以 root 身份打开
gksu nautilus
浏览/boot
并删除此处的所有旧内核,不要删除正在使用的内核,要找到您正在使用的当前内核,请运行
uname -a
答案2
最重要的部分是/boot
分区。如你所见,它已经满了:
/dev/sda1 236M 236M 0 100% /boot
为了释放/boot
文件夹空间,请删除仍然安装的旧内核。
要了解系统中安装的内核,请使用以下命令:
cd /boot && ls | grep generic
或者
dpkg --list | grep linux-image | awk '/ii/ {print $2}'
要查找当前活动的内核版本,请输入:
uname -r
找到活动内核版本和旧内核版本后,可以输入以下命令删除旧内核版本:
sudo apt-get remove --purge linux-image-yourolderkernelversion* && sudo apt-get autoremove && sudo apt-get autoclean && sudo apt-get clean
例如:
sudo apt-get remove --purge linux-image-3.19.0-32* && sudo apt-get autoremove && sudo apt-get autoclean && sudo apt-get clean
一切完成后请重新启动系统。
答案3
有时清理 apt 缓存中以前下载的文件会有所帮助。运行
sudo apt-get clean
从命令行。之后,尝试
sudo apt-get update
sudo apt-get upgrade
再次。
答案4
当您启动sudo apt-get upgrade
新的内核映像和标头时,应下载并安装但您的/boot
分区已满:
/dev/sda1 236M 236M 0 100% /boot
您需要删除旧的内核映像和标头以释放它,但sudo apt-get autoremove
在这种情况下可能不起作用。
此命令显示所有可以删除的内核和头文件,不包括当前正在运行的内核:
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')"
您可以使用以下命令安全地将它们全部删除:
sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")
最后,您可能需要重新启动系统。