当我尝试使用命令 LUKS 加密 CentOS 7 服务器上的分区时cryptsetup -y luksFormat /dev/sda4
,尝试失败并出现错误Cannot format device /dev/sda4 which is still in use.
如何解决此错误并成功 LUKS 加密分区?
这是终端记录:
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/dm-1 50G 1.1G 46G 3% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 3.8G 8.7M 3.8G 1% /run
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
/dev/sda6 296G 65M 281G 1% /vpn
/dev/sda2 477M 110M 338M 25% /boot
/dev/sda1 200M 9.8M 191M 5% /boot/efi
/dev/sda3 596G 73M 565G 1% /home
/dev/sda7 296G 65M 281G 1% /test
/dev/sda5 296G 65M 281G 1% /public
/dev/sda4 296G 65M 281G 1% /data
[root@localhost ~]# cryptsetup -y luksFormat /dev/sda4
WARNING!
========
This will overwrite data on /dev/sda4 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:
Cannot format device /dev/sda4 which is still in use.
答案1
目标是完全销毁当前/data
磁盘上的所有内容并创建一个新的、完全空的加密卷吗?因为这就是您使用此命令所做的事情。这就是整个“警告:这将不可撤销地覆盖 /dev/sda4 上的数据”的含义。您将丢失所有当前数据,并使用空块设备重新开始。
更有可能的是,您想要做的是进行数据备份/data
,创建新卷,然后将备份恢复到新的加密文件系统中。你可以tar
很好地使用它:
cd /data
tar czvf /root/data_backup.tar.gz .
然后,也只有到那时,您才可以使用cryptsetup
.解决错误的方法是先卸载:
umount /data
cryptsetup -y luksFormat /dev/sda4
然后你可以luksOpen
新建 /dev/sda4,然后mkfs
进入加密映射,mount
结果,最后 cd 进入它并使用 恢复现有数据tar
。
如果你实际上 100% 确定你想要不可挽回地摧毁当前的一切/data
,那么请跳过第一步,直接跳到umount /data
。
编辑:如果您确实这样做,则当前数据可能是敏感的。如果是这样,请考虑:
cryptsetup luksFormat
做不是覆盖所有现有数据。它仅覆盖前几个 KiB。如果数据敏感,您首先要覆盖分区上的所有数据,例如使用wipe
,请参阅https://superuser.com/questions/831486/complete-wiping-of-hard-drive-shred-wipe-or-dd。如果分区很大,并且其他分区上的数据不多,那么将所有数据包含在外部存储上的备份中会更快,使用内部磁盘的“安全擦除”功能立即将其清空,/data
使用 LUKS进行准备并恢复您的备份。- 为了不污染
/root
敏感数据,请写入足够大的 tmpfs、可以在之后安全擦除的较小卷或加密容器中的新文件系统,或者在写入备份之前tar
通过管道传输输出。gpg
cryptsetup-reencrypt
可以就地加密数据。由于该工具不具备防崩溃功能,因此仍然建议进行备份。
现有备份在操作期间成为主副本。对于重要数据,应进行第二次备份,以便始终存在多个副本。