当没有可用空间时,新创建的文件出现故障

当没有可用空间时,新创建的文件出现故障

在 $HOME 空间耗尽后,我发现我的一些脚本失败了,留下了损坏的文件。我将通过一个例子来解释:

我正在使用 Ubuntu 12.04,/ 分区是 ext4,$HOME 位于同一分区,并且加密主目录选项(安装时询问)处于活动状态。

当没有更多可用空间时,如果我尝试创建一个文件

$  touch last-successful
touch: cannot touch `last-successful': No space left on device

甚至想了一下,我发现文件已经创建,但是元数据由于某种原因无法读取(问号)。

该文件也无法使用。无法读取/写入。

$ ls -lah
ls: cannot access last-successful: No such file or directory
drwxrwxr-x 2 user1 user1 4.0K Oct 28 12:10 .
drwxrwxr-x 3 user1 user1 4.0K Oct 28 12:01 ..
-????????? ? ?       ?          ?            ? last-successful
-rw-rw-r-- 1 user1 user1  189 Jul 12 12:09 README

即使有了可用空间,也不能更改或删除它(并且错误消息没有多大意义),请看一下:

$  echo "hi" >> last-successful
bash: last-successful: File exists

$  rm last-successful 
rm: cannot remove `last-successful': No such file or directory

rm 之后,我仍然看到与之前相同的列表(上面有文件“last-successful”和问号)

只有重新启动后,文件才会被列出并且不带问号。

$  ls -lah
drwxrwxr-x 2 user1 user1 4.0K Oct 28 12:10 .
drwxrwxr-x 3 user1 user1 4.0K Oct 28 12:01 ..
-rw-rw-r-- 1 user1 user1    0 Oct 27 00:02 last-successful
-rw-rw-r-- 1 user1 user1  189 Jul 12 12:09 README

但读/写仍然不起作用:

$  cat last-successful 
cat: last-successful: Input/output error

$  echo "hi" > last-successful 
bash: last-successful: Input/output error

我只能将其删除(这次有效),然后一切似乎又开始正常工作。

这里是我的挂载点的列表:

$  mount

/dev/sda1 on / type ext4 (rw,errors=remount-ro) 
...     
/home/user1/.Private on /home/user1 type ecryptfs (ecryptfs_check_dev_ruid,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs,ecryptfs_sig=49b949f48cc35f84,ecryptfs_fnek_sig=66c15b8e5a4f2c6b)

有人能告诉我这是怎么回事吗?与 eCryptfs 有关吗?

答案1

这确实是 eCryptfs 的问题,因为 eCryptfs 处理磁盘已满的情况的方式不同。请看一下:

https://bugs.launchpad.net/ubuntu/+source/ecryptfs-utils/+bug/957843

此错误已修复。内核更新应该可以解决该问题。

相关内容