cryptsetup 磁盘加密(LUKS)
cryptsetup 管理 LUKS/dm-crypt 加密卷,支持格式化、打开、关闭、备份头、调整大小和更换密钥。加密层位于文件系统之下、块设备之上,适合保护数据盘和移动介质。
LUKS2 是当前默认格式,支持 Argon2 密钥派生和更灵活的头部。生产环境必须备份 LUKS header,头部损坏后数据几乎无法恢复。
加密整块磁盘:
cryptsetup luksFormat /dev/sdb
cryptsetup luksOpen /dev/sdb cryptdata
mkfs.ext4 /dev/mapper/cryptdata
mkdir -p /data
mount /dev/mapper/cryptdata /data
查看状态:
cryptsetup status cryptdata
cryptsetup luksDump /dev/sdb
关闭:
umount /data
cryptsetup luksClose cryptdata
备份和恢复头部:
cryptsetup luksHeaderBackup /dev/sdb --header-backup-file luks-header.img
cryptsetup luksHeaderRestore /dev/sdb --header-backup-file luks-header.img
添加/删除密钥:
cryptsetup luksAddKey /dev/sdb
cryptsetup luksRemoveKey /dev/sdb
扩容:
cryptsetup resize cryptdata
resize2fs /dev/mapper/cryptdata
开机自动解锁(crypttab):
echo 'cryptdata UUID=<luks-uuid> none luks' >> /etc/crypttab
luksFormat 会清空设备,执行前确认设备名。cryptsetup resize。discard 会泄露数据分布,SSD 上要权衡。