今天,我在尝试编译一个程序时磁盘空间不足。当我运行 df -h 时,我注意到分区很乱。df -h 输出
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 4.6G 4.4G 0 100% /
udev 32G 4.0K 32G 1% /dev
tmpfs 13G 724K 13G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 32G 0 32G 0% /run/shm
我对于这个输出有几个疑问。
- 为什么所有空间都分配给了 udev?这只是用户在安装过程中犯的一个错误,还是另有原因?
- 如果我重新分区,我是否应该删除 udev 还是仅仅缩小它?
答案1
udev
不是永久硬盘上的分区。它是RAM 磁盘. 因此它不占用任何永久硬盘的容量(当系统内存不足时,交换部分除外)。
Linux 中的 RAM 磁盘和 /dev
许多现代 Linux 发行版都使用 Ubuntudevtmpfs
目录的文件系统/dev
。目录包含特殊(设备)文件它们只是设备驱动程序的接口。devtmpfs
只是tmpfs
。/dev
目录是类Unix目录结构中必不可少的一部分。如果删除它,系统将停止运行。
您会注意到,在 Ubuntu 中,tmpfs
它也被挂载在/run
及其子目录上。在其他一些系统上,它也可以挂载在/tmp
。
你的问题
- 空间分配是默认设置。默认情况下,
tmpfs
文件系统限制为 RAM 容量的 50%。(您有 64 GB 的 RAM 吗?)这个数字实际上只是一个限制,因为文件tmpfs
系统只占用存储文件所需的空间,而对于目录,/dev
所需的空间非常小。您(我)的情况中占用的容量只有几 KB。 - 您无法通过分区来影响
tmpfs
大小,因为它们不存储在物理驱动器上。如果不对系统进行重大更改,则根本无法删除它。您可以降低大小限制:sudo mount -o remount,size=1G /dev
但这只会改变限制,而不会改变实际占用的 RAM 空间。
解决您的问题
您的解决方案是重新对驱动器进行分区并使其/dev/sda1
更大(如果可以重新分区则更容易)或添加新的分区并将它们安装到适当的目录并将现有文件移动到那里以释放根(/
)文件系统。