设备上没有剩余空间/没有空闲或已使用的索引节点/双重安装

设备上没有剩余空间/没有空闲或已使用的索引节点/双重安装

现在大约一天的时间里,我只能在 FAT16 格式的 USB 记忆棒上创建/ cp/ mv(通过终端或各种 GUI 程序)大约几个字节的文件。对较大的文件报告执行此操作cannot create regular file 'XXX': No space left on device

我有一个 NTFS 驱动器和一个带有 2 个 FAT16 格式分区的 USB 记忆棒,连接到计算机上。

  • /dev/sda1 是 NTFS
  • /dev/sdb1 是 FAT 16 格式的分区之一
  • /dev/sdc1 是另一个 FAT 16 格式的分区(在 PC 关闭时拔出 USB 记忆棒之前和之后pm-suspend,以清理整个驱动器上的空间 - 事后看来这可能导致部分/全部此问题)
  • /dev/sdb1 是另一个 FAT 16 格式的分区(在 PC 关闭时拔下 USB 记忆棒后pm-suspend

df报道:

    Filesystem  1K-blocks   Used   Available  Use%  Mounted on
    /dev/sdc1    1999360  1999360      0      100%  /media/sdc1
    /dev/sdd1    1999360   822400   1176960   42%   /media/sdd1

df -i报道:

    Filesystem  Inodes  IUsed  IFree  IUse%  Mounted on
    /dev/sdc1      0      0      0      -    /media/sdc1
    /dev/sdd1      0      0      0      -    /media/sdd1

子问题:知道为什么没有报告索引节点吗?

df -i /dev/sda1报道:

    Filesystem  Inodes   IUsed   IFree    IUse%  Mounted on
    /dev/sda1   5539908  171718  5368190    4%   /media/sda1

umount'ng /dev/sdc1 没有改变计数。

我已经通过 Windows 验证了可用空间或多或少与最新安装设备 (/dev/sdd1) 列出的 42% 相符。

对正在发生的事情有什么想法吗?

编辑1:

的输出du -k --max-depth=1 /media/sdc1是:

   1856 /media/sdc1/dir1
     32 /media/sdc1/dir2
   1440 /media/sdc1/dir3
  18144 /media/sdc1/dir4
   8512 /media/sdc1/dir5
  54304 /media/sdc1/dir6
   3200 /media/sdc1/dir7
  27200 /media/sdc1/dir8
  41088 /media/sdc1/dir9
  11520 /media/sdc1/dir10
    128 /media/sdc1/dir11
    128 /media/sdc1/dir12
   1216 /media/sdc1/dir13
   2464 /media/sdc1/dir14
  12032 /media/sdc1/dir15
   5824 /media/sdc1/dir16
  29600 /media/sdc1/dir17
  20928 /media/sdc1/dir18
   5856 /media/sdc1/dir19
   4352 /media/sdc1/dir20
 659200 /media/sdc1/dir21
 121600 /media/sdc1/dir22
  22688 /media/sdc1/dir23
    128 /media/sdc1/dir24
   2144 /media/sdc1/dir25
   6912 /media/sdc1/dir26
  19968 /media/sdc1/dir27
   9632 /media/sdc1/dir28
    960 /media/sdc1/dir29
   1088 /media/sdc1/dir30
   2624 /media/sdc1/dir31
    480 /media/sdc1/dir32
1142944 /media/sdc1

答案1

FAT16 可以在根目录中保存数量非常有限的文件。我的猜测是你正在击中那个。创建一个目录并将文件放入其中。

答案2

大多数非 Unix 文件系统(如 vfat)上没有 inode。没有显示是正常的。对于问题的其余部分,我们需要更多信息。

编辑1:

du输出中我们现在知道有 1999360-1142944=856416 个块丢失。对于 Linux 文件系统,如果删除打开的文件,可能会出现这种差异。您不再在文件系统中看到它(因此du无法计算它)。 ...为了使这个不那么理论化,我只是尝试了一下:在 vfat 上也是一样的。您可以使用此命令(以 root 身份)找到已删除的打开文件:

find /proc/*/fd -lname '/media/sdc1/* (deleted)'

另一种可能性是文件系统错误。因此,如果您无法将已删除的打开文件识别为问题所在,那么如果您可以卸载并检查文件系统,那就太好了。

相关内容