Luks

LUKS 丟棄/修剪:核心命令行選項衝突

  • March 3, 2020

我對可以通過 Linux 核心命令行啟用//丟棄LUKS/ TRIM 操作的各種方式感到困惑。dmcrypt``cryptsetup

  1. 手冊dracut

rd.luks.allow-discards

允許在所有 LUKS 分區上使用丟棄 (TRIM) 請求。

  1. 手冊systemd-cryptsetup-generator

luks.options=, rd.luks.options=

… 如果只指定了一個選項列表,沒有 UUID,它們適用於任何未在其他地方指定的 UUID,並且在 /etc/crypttab 中沒有條目。…

這裡rd.luks.options=discard推薦論證。 3. LUKS 和 SSD 上的Arch wiki 部分 顯示了第三個以冒號分隔的欄位:

cryptdevice=/dev/sdaX:root:allow-discards

問題:

  1. discard和 和有什麼不一樣allow-discards?前者是強制性的,第二個是可選的嗎?
  2. luks.options=rd.luks.options=應用給定cryptdevice=/dev/sda2(例如,不是 UUID)?如果cryptdevice=給定一個 UUID,這算作“在別處指定”嗎?
  3. 如果已經提供選項,將luks.options=rd.luks.options=覆蓋/附加/前置?cryptsetup=
  4. rd.luks.allow-discards如果到處都需要TRIM,使用似乎最簡單的方法有什麼缺點嗎?

這在一定程度上取決於您使用的發行版以及 dracut 在 initramfs 中包含哪些組件。

例如,該cryptdevice=選項由encrypt hook解釋。因此,它僅與包含此掛鉤的 initramfs 映像相關。

rd.luks.allow-discardsand的缺點rd.luks.allow-discards=是它根本不起作用。這些選項的dracut.cmdline(7)描述不正確。我在 Fedora 26 下對其進行了測試,但它無法正常工作,甚至還有一個針對 Fedora 19 的錯誤報告,其中討論了記錄和實際行為之間的這種偏差,並且它被關閉為不會修復。

和更通用,因為您基本上可以在其中放置任何有效的 crypttab 選項,luks.options=例如. 由於它們被解釋為不關心您不能期望這些選項之間的有用互動。rd.luks.options=``discard``systemd-cryptsetup-generator``cryptdevice=

請注意,luks.options=這只對 initramfs 映像文件中未列出的設備有效。etc/crypttab

因此,要為在引導期間打開的 dm-crypted 設備啟用 dm-crypt pass-through SSD trim support(又名丟棄),您有 2 個選項:

  1. 添加rd.luks.options=discard到核心命令行並確保 initramfs 映像不包含etc/crypttab
  2. 將丟棄選項添加到相關條目中/etc/crypttab,並確保目前版本包含在 initramfs 映像中。

您可以lsinitrd /path/to/initramfs etc/crypttab用於檢查 initramfs 映像、dracut -v -f /path/to/initramfs-image更改後重新生成映像/etc以及dmsetup table查看加密設備是否實際上是使用丟棄選項打開的(相關條目應包含字元串allow_discards)。

引用自:https://unix.stackexchange.com/questions/341442