我使用 ecryptfs 加密了我的主目录。ecryptfs 会导致碎片化吗?
我感觉读取文件、显示文件夹和登录变得越来越慢(尽管一开始并没有明显变慢)。即使我只打开一个文本文件,硬盘也会发出很大的寻道噪音。在 /home/.ecryptfs 中我看到许多大型档案(可能包含加密文件),所以我想知道 Linux 文件系统在线碎片整理在这里是否有用。
我有哪些选项可以提高性能?我是否应该决定是否最好不使用加密?
答案1
Phoronix 已经运行了一系列测试,并发表了几篇有关加密主目录时 eCryptfs 性能的文章:
- http://www.phoronix.com/scan.php?page=article&item=ubuntu_910_encryption&num=1
- http://www.phoronix.com/scan.php?page=article&item=ubuntu_jaunty_encrypt&num=1
我从这些文章中得出的结论是,根据基准测试,加密(正如预期的那样)确实在一定程度上影响了读写性能。在小型 CPU(Atom 处理器)和快速硬盘(SSD)上,这可能更为明显。也就是说,通过使用 eCryptfs,您只会在读取/写入主目录数据时付出性能代价(而不是像使用全盘加密那样在系统的其余部分付出性能代价)。此外,使用更快的处理器,执行加密/解密所花费的时间通常与访问磁盘数据的 IO 等待时间相吻合,而这通常是瓶颈。
至于您的具体问题,如果您听到很多“硬盘寻道”噪音,在我看来,您的系统正在将数据从内存交换到磁盘,然后再来回交换。如果您选择使用 eCryptfs,那么 Ubuntu 将自动加密您的交换空间(这是保护加密数据所必需的)。但是,加密交换也非常昂贵。
就我个人而言,我会在系统中装入大量 RAM(大多数系统为 8GB),并完全禁用交换。
答案2
我在我的主目录中使用 python 进行编程,并且我有一个用于项目包的 Python 虚拟环境。
对于我的程序来说,启动时间在 eCryptfs 上要慢得多,因为 Python 在定位模块文件时会发出许多 stat() 系统调用;因为许多这些 stat 调用导致“找不到文件”,并且此类结果从未被缓存,但我们仍然为 ecryptfs 付出代价,事情一直很缓慢。
更新
我最终通过将 ecryptfs 挂载点移动到 ~/private 来从我的主目录中删除 ecryptfs,并将大多数文件从 ~/private 复制到我的未加密主文件夹中。现在速度又快了。也许对于其他 CPU 来说性能损失会小一些,我有一台配备 Atom 的华硕 1215N。
答案3
我没有进行任何硬核测量,因此对以下内容持保留态度,但我注意到与 dm-crypt'd LV(挂载为 /home/username)相比,ecryptfs 在以下场景中的性能极差:
对包含大量文件的文件夹执行 du 操作需要几分钟,而对整个分区使用 dm-crypt 操作只需几秒钟 - 这是迄今为止最糟糕的情况
在 mutt 中打开一个包含大量项目的文件夹需要几秒钟(对于包含 10000 个项目的文件夹,大约需要 20 秒),而使用 dm-crypt 几乎可以立即完成
与 dm-crypt 相比,git 操作速度较慢(有些慢,但不是很多)
Firefox 等应用程序的启动时间明显更长,但仍在几秒的范围内
我刚刚转到 dm-crypt (使用 pam_mount) 并且非常高兴!
答案4
增加文件大小的 truncate() 和 ftruncate() 等调用在 ecryptfs 上速度较慢,因为它必须用加密的零填充,而不像普通文件系统那样仅在文件中创建洞。