我最近购买了 240 GB SSD,以使用 1 TB HDD 来加速我的计算机。我双启动 Windows 和 Linux。我想以最有效的方式使用我的新 SSD。通过阅读许多网站,我得出的结论是,对于 Linux,bcache 是最佳选择。我想确保我对 bcache 的理解是正确的。
所以,我想把常用的数据放在SSD上,然后放在HDD上。不过,我在 Windows 和 Linux 上都玩游戏,因此 240 GB 对于两者来说都不够(我还使用多个程序,它们占用了几 GB 的空间)。因此,我想将 SSD 划分为两个约 120 GB 的分区,一个用于 Intel Smart Response(适用于 Windows),第二个用于 bcache 的缓存分区。现在,这是我收集到的有关 bcache 的信息:
- Bcache 充当 HDD 和 RAM 之间的一层
- 我可以拥有许多通过缓存分区(在 SSD 上)进行缓存的支持设备/分区(位于 HDD 上)。它们的大小可能大于缓存分区。
- 最近读取的数据放在SSD上以备后用
- 我仅安装缓存设备,而不安装任何后备分区,并查看这些后备分区上的文件
- 将现有分区转换为 bcache 的后备分区很麻烦,但也是可行的
- 调整支持分区的大小也是可能的,但很麻烦
现在我的问题是:
- 我对 bcache 的了解正确吗?
- bcache 会忽略顺序 I/O。它如何与加载游戏配合使用?
- 我可以打乱分区或移动它们的开头吗? (bcache在选择分区时使用UUID还是/dev/sdxx?)
- 我读到,不建议将 /tmp 或 /var 等分区放在 SSD 上,因为不断的读/写会磨损 SSD。我应该将它们放在单独的分区上而不是将它们设置为后备分区吗?
- 交换呢?我应该把它放在SSD上吗?
- 有没有比 bcache 更适合我的需求的其他解决方案?
最后一个有点复杂。我尝试设置 GPU 到 Windows 客户机的 PCI 直通。我设法在虚拟机中启动系统,该系统通常安装在我的硬盘上。所以我可以本地或通过虚拟机启动相同的窗口。由于我想对 Windows 可见的硬件进行最小的更改,因此我将整个 HDD 传递给了 VM。 Windows 仅使用其 NTFS 分区,而我的 Linux 使用剩余的分区。 bcache 和该设置会有任何问题吗?
作为记录,我使用elementary OS(基于Ubuntu 16.04)。
答案1
广告问题1.
我仅安装缓存设备,而不安装任何后备分区,并查看这些后备分区上的文件
不正确 - 您安装了bcache
设备。它内部必须由至少一个硬盘设备组成。 SSD 缓存实际上是可选的 - 因此即使您的 SSD 坏了,您仍然可以访问您的数据。至少如果您使用默认设置的话。
休息才是真实的。
广告问题2.
是的,模块中有一个启发式bcache
尝试区分顺序读取和随机读取。但它的工作原理基于单独的系统调用级别 - bcache 与文件系统无关:它甚至不知道它读取文件。因此,这一切都归结为游戏如何实际加载数据以及最终使用哪些系统调用。如果游戏使用,请命名您的游戏,看看是否有人对它进行了基准测试。或者更好的是:自己进行基准测试。 Bcache 确实大大加快了我的系统速度,但我没有在它们上玩游戏。
广告问题3.
是的,bcache
选择分区时使用UUID。你读过吗它的文档?拜托,做吧。
广告问题 4 和 5。
这取决于您想要在系统速度与 SSD 降级之间进行多少折衷,以及您拥有多少 RAM(/tmp
通常tmpfs
是 RAM 支持的)。
广告问题6.
我系统地评估了至少 2 个可行的 bcache 替代方案。我决定投资 bcache - 主要是为了速度、兼容性和受欢迎程度。那是在2014年。