对Mavericks上加密的外部驱动器的写入速度极慢


10

在Mavericks上写入完全加密的USB闪存驱动器非常慢。

我用于测试的驱动器型号是Kingston DataTraveler Ultimate 3.0 G3(64 GB)。我通过从加密驱动器和未加密驱动器读取/写入大文件来测试传输速度。我使用Mavericks在最新的Macbook上进行了测试,并使用Mountain Lion在较旧的计算机上进行了测试。我使用磁盘工具将驱动器格式化为Mac OS Extended(日志式)和Mac OS Extended(日志式,加密)。

MacBook Pro(2013),带有运行OS X 10.9.2(13C64)的USB 3.0

写入:86.16 MB /秒(加密:0.62 MB /秒)
读取:181.66 MB /秒(加密:151.15 MB /秒)

具有运行OS X 10.8.5的USB 2.0的MacBook Pro(2007)(12F45)

写入:23.57 MB /秒(加密:5.04 MB /秒)
读取:36.23 MB /秒(加密:37.87 MB /秒)

如您所见,在较旧的机器上写入加密卷时,写入速度明显降低,但仍比运行Mavericks的较新机器快约十倍。这可能是FileVault或CoreStorage中最近引入的一些问题吗?

更新(2014-06-28)

USB驱动器从一开始就似乎存在硬件缺陷。我得到了一个替换驱动器(相同型号),该驱动器仍然无法提供我期望的结果,但是至少2013 MBP的加密写入速度现在与2007 MBP相当。

具有运行OS X 10.9.3的USB 3.0的MacBook Pro(2013)

写入:135.41 MB /秒(加密:9.29 MB /秒)
读取:196.22 MB /秒(加密:187.04 MB /秒)

具有运行OS X 10.8.5的USB 2.0的MacBook Pro(2007)(12F45)

写入:-MB /秒(加密:9.39 MB /秒)
读取:-MB /秒(加密:37.79 MB /秒)

尽管为什么2013 MBP上对USB驱动器的加密写入速度不到常规写入速度的百分之十,但这仍然留下了一个问题。我还比较了在2013 MBP的内部SSD上激活FileVault之前和之后的读取/写入速度,在那里我根本检测不到任何减速。


1
哇-普通的读/写和加密写看起来不错。但是,这种加密写入非常缓慢。哪些工具正在测量MB / s?使用你能重现这些结果的Blackmagic(免费MAS)
bmike

我使用了一个简单的Bash单行代码timedd并使用和awk。Blackmagic给出了相同的结果:goo.gl/bn32fC(未加密)与goo.gl/yghyqA(已加密)。
Stefan Schmidt 2014年

我怀疑加密卷的读取速度丢失,因为读取的持续时间短于Blackmagic的吞吐量采样间隔
Stefan Schmidt 2014年

Answers:


2

我有同样的问题,我可以肯定这是由于闪存上的写操作方式与核心存储(或任何整卷)加密方式的结合所致。

首先,写行为:与易失性存储器(计算机内存中使用的东西)或硬盘不同,在任何时候都可以将任意位写入0或1,闪存具有两种主要状态:已写入和已擦除。在“已写入”中为0和1。当需要写入闪存时,必须写入当前处于已擦除状态的整个块。操作系统中的文件系统软件可能知道哪些块是空闲的,但是控制器和闪存设备上的存储却不知道。针对“总线连接” SSD设计了一种特殊的操作系统告诉SSD使块可用的方法:称为TRIM。据我所知,USB协议栈不支持TRIM。因此,基本上,闪存会继续填满,直到没有实际的擦除块为止,此时文件系统必须通过读取来擦除和重写块,合并新数据,擦除并写回。这就是为什么您会看到随时间推移SSD上的小文件写入性能下降的原因。

加密卷的特殊情况很有趣:根据加密的工作方式,它实际上可以对整个卷进行加密,即使这些块实际上未被使用并且包含零,也用看起来是随机数据填充所有块。因此,当您打开FileVault(或以其他方式启用核心存储加密)时,它基本上会消耗整个卷,而没有空间进行写操作。文件系统必须不断读取,擦除和重写块,以便它可以使用要放入其上的任何加密数据来重写它们。

现在我要在这里说,这是基于对事物如何运作的合理理解而进行的推测,但是有些人实际上知道细节,他们可以纠正或改进我的解释,我希望他们会这样做。


这确实听起来很合理。我做了一些挖掘,看来对于外部驱动器,eSATA和Thunderbolt都支持TRIM。关于外部SSD,这可能很有趣,但可能不适用于拇指驱动器,因为Macs没有eSATA接口,而且看起来负担得起的Thunderbolt拇指驱动器不会很快面市
Stefan Schmidt

1
以防万一有人想知道:在此期间,我的解决方法是在大小与驱动器容量相同的驱动器上创建一个加密的稀疏捆绑包。我没有进行任何基准测试,但感觉与将未加密的数据写入驱动器大致相当。
Stefan Schmidt

@StefanSchmidt像这里描述的那样加密的稀疏包?blog.fosketts.net/2015/07/22/...
布拉德Cupit

@BradCupit是的,但我同步了稀疏包的内容,而不是稀疏包本身,因此我将稀疏包安装到hdiutil attach,然后用于rsync与本地文件夹同步,然后与卸载稀疏包hdiutil detach并使用弹出磁盘驱动器diskutil eject
Stefan Schmidt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.