Virtualbox 空间不足

Virtualbox 空间不足

当我尝试运行 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]+//')")

最后,您可能需要重新启动系统。

相关内容