将 LVM 与 SSD 和 SATA 驱动器配合使用

Nic*_*ick 27 partition ssd lvm hard-disk

我在这个问题中看到可以将 SSD 和标准 SATA 硬盘驱动器放入单个 LVM 卷组 (VG)。

这如何影响性能?

当数据位于单个卷组内的 SATA 驱动器上时,有没有办法强制操作系统位于 SSD 上?

是否有关于在不同类型的驱动器上使用 LVM 的好的白皮书?

为每种驱动器类型和/或速度创建 VG 是否有益?我正在考虑为 SSD 创建一个 VG,为 SATA 创建一个 VG(以及我将来可能会添加的每种驱动器类型)。

Luc*_*ter 12

在最近的 LVM 版本中,您可以做的是在 HDD 上创建一个“原始”LV,在 SSD 上创建一个“缓存池”LV,然后将其组合成一个“缓存”LV。它具有与“原始”LV 相同的大小(即,您只能获得与 HDD 相同的空间),但常用的块和元数据缓存在 SSD 上以提高性能。

它的要点是,假设您已经有一个跨越两个驱动器的 VG:

lvcreate -l 100%PVS -n your_name YourVG /dev/YourHDD
lvcreate --type cache-pool -l 100%PVS -n your_name_cache YourVG /dev/YourSSD
lvconvert --type cache --cachepool YourVG/your_name_cache YourVG/your_name
Run Code Online (Sandbox Code Playgroud)

之后,您将拥有一个your_name可以像任何其他 LV 一样使用的 LV,以及几个可以使用lvs -a YourVG.

例如,我使用以下命令在 SSD 分区 ( /dev/sda3) 和 HDD 分区 ( /dev/sdb1)之间设置了一个加密的根文件系统:

pvcreate /dev/sda3 /dev/sdb1
vgcreate RootVG /dev/sda3 /dev/sdb1
lvcreate -l 100%PVS -n cryptroot RootVG /dev/sdb1
lvcreate --type cache-pool -l 100%PVS -n cryptroot_cache RootVG /dev/sda3
lvconvert --type cache --cachepool RootVG/cryptroot_cache RootVG/cryptroot
cryptsetup luksFormat --type luks2 /dev/RootVG/cryptroot
Run Code Online (Sandbox Code Playgroud)

您可以在此博文博文中找到更多详细信息。(第一个是我用来参考的,也是LVM维基百科文章的参考;第二个是我写的,描述了我在实践中的使用方法。你自己决定你要信任哪个)


小智 9

LVM 不区分快速磁盘和慢速磁盘。将这些磁盘放入一个 LVM 卷组似乎不是一个好主意。

除此之外,将您的/tmp目录挂载在 SSD 上总是很好的,这提供了巨大的加速,特别是对于像编译一样使用它的应用程序。

  • 嗯。我通常*希望*在重新启动时清除 `/tmp` 中的文件 - 如果它们打算保留,那就是 `/var/tmp` 的用途。多年来,我在许多机器上使用 tmpfs 作为 `/tmp` 并且从来没有接近用完交换空间,而且我在 `/tmp` 中没有异常少量的数据,所以这个论点是假的。在任何情况下,这都不是*漏洞*——这个词意味着一个安全问题。 (6认同)
  • 将 `/tmp` 放在 tmpfs 上。更高的性能,更少的 SSD(或硬盘)磨损。SSD 的读取速度非常快,因此对于读取次数多于写入次数的数据非常有用。 (5认同)