LUKS2设备在线重加密提示不支持该设备类型的问题求助
解决LUKS2在线重加密报错:
This operation is not supported for this device type. 问题原因
你遇到的错误确实是因为Ubuntu 20.04默认提供的cryptsetup 2.2.2版本未启用LUKS2在线重加密的编译宏(USE_LUKS2_REENCRYPTION)。在cryptsetup 2.2.x分支中,LUKS2在线重加密属于实验性功能,默认编译时不会开启该选项,导致执行cryptsetup reencrypt --active-name时触发设备类型不支持的错误。
验证当前编译选项
可以通过以下命令确认你的cryptsetup是否支持LUKS2在线重加密:
cryptsetup --version --debug | grep -i reencrypt
如果输出中没有LUKS2_REENCRYPTION相关标识,说明当前版本确实未启用该功能。
解决方法
方法1:重新编译cryptsetup并启用LUKS2在线重加密
- 安装编译依赖:
sudo apt update && sudo apt install build-essential libdevmapper-dev libgcrypt20-dev libjson-c-dev libuuid-dev pkg-config - 下载cryptsetup 2.2.x分支的最新稳定版(推荐2.2.5,比2.2.2修复了更多问题):
wget https://gitlab.com/cryptsetup/cryptsetup/-/archive/v2.2.5/cryptsetup-v2.2.5.tar.gz tar -xf cryptsetup-v2.2.5.tar.gz && cd cryptsetup-v2.2.5 - 配置编译选项,显式启用LUKS2在线重加密:
./configure --enable-luks2-reencryption - 编译并安装:
make -j$(nproc) sudo make install - 验证新版本是否支持:
此时应该能看到cryptsetup --version --debug | grep -i reencryptLUKS2_REENCRYPTION相关输出。
方法2:升级到更高版本的cryptsetup
cryptsetup 2.3.0及以上版本默认启用了LUKS2在线重加密功能。你可以通过手动编译更高版本来解决:
- 步骤和方法1类似,只需下载2.3.x或更高版本的源码,无需额外指定
--enable-luks2-reencryption选项,默认已开启。
注意事项
- 执行在线重加密前,确保LUKS2设备已正确激活(
--active-name指定的是/dev/mapper/下的映射设备名,而非原始块设备路径)。 - 操作前务必备份重要数据,重加密过程中若出现中断可能导致数据损坏。
内容的提问来源于stack exchange,提问作者zzcai
相关产品推荐
相关产品推荐

