由于我在测试箱上安装的是 Wheezy 而不是 Squeeze,因此我对 /dev/sda* 引用有点困惑。
fdisk -l 返回:
Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000e9623
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 480278527 240138240 83 Linux
/dev/sda2 480280574 488396799 4058113 5 Extended
/dev/sda5 480280576 488396799 4058112 82 Linux swap / Solaris
这似乎是正确的。但是 df -h /dev/sda (and /dev/sda1 and /dev/sda2 and /dev/sda5) 返回:
Filesystem Size Used Avail Use% Mounted on
udev 10M 0 10M 0% /dev
/dev/disk/by-id 和 /dev/disk/by-path 下的每个条目都会发生同样的情况。/dev/disk/by-uuid 下的两个条目中只有一个返回正确的卷大小:
df -h /dev/disk/by-uuid/cacdbad6-7e6b-4e80-84ba-e3c77ef48796
Filesystem Size Used Avail Use% Mounted on
/dev/disk/by-uuid/cacdbad6-7e6b-4e80-84ba-e3c77ef48796 229G 22G 196G 11% /
/etc/fstab 的内容:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=cacdbad6-7e6b-4e80-84ba-e3c77ef48796 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=45840d13-ee36-4e77-8e73-16cbdff25eb1 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
似乎除 uuid 之外的所有其他引用都指向交换分区。这是因为 Wheezy 正在测试中,应该将其报告为错误吗?
答案1
如果只给它设备名称,不知道如何df
知道这一点。如果是 sda2,则没有可用空间,因为它是扩展分区;如果是 sda5,则也没有可用空间,因为它是交换分区,应通过 查找free
。
绝对有效的是df -h /
或df -h /somemountpoint
。
在我的计算机上短暂试用后,您可以传递输出df
中列出的任何设备名称mount
。同一设备/分区的其他(别名)名称均不起作用。我想说这可能是一个缺失的功能,但不是真正的错误。
答案2
df
仅提供有关已安装分区的信息。来自man df
:
如果参数是包含已安装文件系统的磁盘设备节点的绝对文件名,自由度显示该文件系统上可用的空间,而不是包含设备节点的文件系统(始终是根文件系统)上的可用空间。
df
无法用来请求设备。
通常,基本的 un*x 工具会围绕已安装分区进行操作,/etc/mtab
以查找已安装的分区。现在有方法可以创建从/proc/mounts
到 的永久符号链接/etc/mtab
。
答案3
谢谢,这对我很有帮助,我在 Nagios 中遇到了同样的问题。阅读完此主题后,我在客户端的 nrpe.cfg 中进行了更改
command[check_rootpart]=/usr/local/nagios/libexec/check_disk -p /dev/sda1
到
command[check_rootpart]=/usr/local/nagios/libexec/check_disk -p /
Nagios 已开始正确显示可用空间。看起来它使用类似的机制来确定可用空间。