LUKS 丟棄/修剪:核心命令行選項衝突
我對可以通過 Linux 核心命令行啟用//丟棄
LUKS
/ TRIM 操作的各種方式感到困惑。dmcrypt``cryptsetup
- 手冊
dracut
頁:
rd.luks.allow-discards
允許在所有 LUKS 分區上使用丟棄 (TRIM) 請求。
luks.options=, rd.luks.options=
… 如果只指定了一個選項列表,沒有 UUID,它們適用於任何未在其他地方指定的 UUID,並且在 /etc/crypttab 中沒有條目。…
這裡
rd.luks.options=discard
推薦論證。 3. LUKS 和 SSD 上的Arch wiki 部分 顯示了第三個以冒號分隔的欄位:
cryptdevice=/dev/sdaX:root:allow-discards
問題:
discard
和 和有什麼不一樣allow-discards
?前者是強制性的,第二個是可選的嗎?- 將
luks.options=
或rd.luks.options=
應用給定cryptdevice=/dev/sda2
(例如,不是 UUID)?如果cryptdevice=
給定一個 UUID,這算作“在別處指定”嗎?- 如果已經提供選項,將
luks.options=
或rd.luks.options=
覆蓋/附加/前置?cryptsetup=
rd.luks.allow-discards
如果到處都需要TRIM,使用似乎最簡單的方法有什麼缺點嗎?
這在一定程度上取決於您使用的發行版以及 dracut 在 initramfs 中包含哪些組件。
例如,該
cryptdevice=
選項由encrypt hook解釋。因此,它僅與包含此掛鉤的 initramfs 映像相關。
rd.luks.allow-discards
and的缺點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 個選項:
- 添加
rd.luks.options=discard
到核心命令行並確保 initramfs 映像不包含etc/crypttab
- 將丟棄選項添加到相關條目中
/etc/crypttab
,並確保目前版本包含在 initramfs 映像中。您可以
lsinitrd /path/to/initramfs etc/crypttab
用於檢查 initramfs 映像、dracut -v -f /path/to/initramfs-image
更改後重新生成映像/etc
以及dmsetup table
查看加密設備是否實際上是使用丟棄選項打開的(相關條目應包含字元串allow_discards
)。