- Ubuntu 14.04.4 LTS
- SSD 是唯一的驱动器 (/dev/sda)
- /dev/sda1 是启动分区
- /dev/sda5 是加密的 LUKS 分区
- 逻辑卷位于 LUKS 分区的顶部
恢复快照似乎可行(恢复的系统显示正常),但该过程导致 BLKDISCARD 失败。在以下终端中,我从实时 ISO 会话运行 lvconvert --merge。
xubuntu@xubuntu:~$ sudo lvconvert --merge /dev/vg1/lvsnapshot14
Merging of volume lvsnapshot14 started.
lvroot: Merged: 92.7%
lvroot: Merged: 100.0%
Merge of snapshot into logical volume lvroot has finished.
/dev/mapper/sda5_crypt: BLKDISCARD ioctl at offset 121333874688 size 3221225472 failed: Operation not supported.
Logical volume "lvsnapshot14" successfully removed
xubuntu@xubuntu:~$
我认为这可能与 TRIM 有关,但我确实在所有级别都启用了 TRIM:
- 通过 /etc/cron.weekly/fstrim 文件系统
- 通过 /etc/lvm/lvm.conf 进行 lvm
- 通过 /etc/crypttab 进行 dm-crypt
并且手动运行修剪成功。
对于导致失败的原因您有什么想法吗?
答案1
搞清楚了。问题是,虽然我在系统的加密级别启用了 TRIM 支持,但我没有在实时会话中启用它。
cryptsetup luksOpen /dev/sda5 sda5_crypt
我在运行之前lvconvert --merge
按照问题所述使用。这里未启用 Trim 支持,因此当快照合并后运行 BLKDISCARD 时,它会失败。
解决方案是使用cryptsetup luksOpen --allow-discards /dev/sda5 sda5_crypt
。这将在加密级别启用 TRIM 支持。可以使用以下命令验证这一点dmsetup table /dev/mapper/sda5_crypt --showkeys
- 结果应该在末尾显示“allow_discards”。
lvconvert --merge
此后执行即可正常工作:
xubuntu@xubuntu:~$ sudo lvconvert --merge /dev/vg1/lvsnapshot14
Merging of volume lvsnapshot14 started.
lvroot: Merged: 95.6%
lvroot: Merged: 100.0%
Merge of snapshot into logical volume lvroot has finished.
Logical volume "lvsnapshot14" successfully removed
xubuntu@xubuntu:~$