我在服务器上得到以下错误,其中一个分区是通过ecryptfs加密的。
[3440851.003561] Valid eCryptfs headers not found in file header region or xattr region, inode 22545087
[3440830.026081] Valid eCryptfs headers not found in file header region or xattr region, inode 22553905在卸载下面的加密分区和ext4分区之后,我执行了一个fsck,它给了我以下结果:
fsck from util-linux 2.20.1
e2fsck 1.42.9 (4-Feb-2014)
/dev/sda3: clean, 65092/72302592 files, 54219978/289200384 blocks我有点不明白发生了什么。我们在几个实例上使用相同的设置,我们只在其中一个实例上观察到这一点。
解决方案可能是更改底层磁盘!但我想了解发生了什么,以便最终发现和防止这类事件。
发布于 2016-01-01 22:47:01
当系统没有被彻底关闭时,我看到了这种情况。特别是,当加密的数据存储在USB设备上时,主机和USB设备之间的连接有点不可靠时,我就看到了这种情况。但是我相信当文件被写入的时候,其他的不干净的关闭也会导致它。
按照回答 by 乔瓦尼的建议,inode进行搜索确实可以用来查找有问题的文件。由于ecryptfs保留了基础文件系统的inode编号,所以可以使用该命令查找文件的加密路径和未加密路径。
以这种方式在基础文件系统上搜索文件比通过ecryptfs文件系统搜索要快得多。我在一个系统上的测量结果显示,有冷缓存的两个系统之间的速度下降了8倍,与热缓存系统的差值为350倍。
由于这种开销,我建议您首先在基础文件系统上找到加密的文件。例如,在Ubuntu系统上的默认配置中,可以使用以下命令:
find /home/.ecryptfs -inum 22545087这将找到加密文件的路径,其中包括找到加密文件的主目录的名称。然后,在搜索未加密的文件名时,可以立即将搜索限制为一个主目录:
find /home/username -inum 22545087如果用户有太多的文件,这太慢了,您可以利用inode编号一次查找一个目录级别。例如,如果加密的文件名是
/home/.ecryptfs/username/.Private/ECRYPTFS_FNEK_ENCRYPTED.AAAAAA/ECRYPTFS_FNEK_ENCRYPTED.BBBBBB/ECRYPTFS_FNEK_ENCRYPTED.CCCCCC你可以先跑
ls -i /home/.ecryptfs/username/.Private/ECRYPTFS_FNEK_ENCRYPTED.AAAAAA这将给出最外层目录的inode号。然后,您可以查找该目录名的未加密版本:
ls -i /home/username | grep $INODE_NUMBER_FROM_LS您可以对目录层次结构中的每个级别重复此操作,以获得未加密的路径,而不必使用所需的CPU时间来解密该主目录中的每个文件名。
发布于 2015-12-29 17:14:23
通过以下方法发现是哪个文件导致了这种情况:
find / -inum <inode number>您可能会找到一个截断的文件,这就是为什么氪星发出警告的原因。
试着用cat读取文件,然后用rm来修复警告。
https://serverfault.com/questions/744950
复制相似问题