无法格式化仍在使用的设备 /dev/sda4

无法格式化仍在使用的设备 /dev/sda4

当我尝试使用命令 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可以就地加密数据。由于该工具不具备防崩溃功能,因此仍然建议进行备份。

现有备份在操作期间成为主副本。对于重要数据,应进行第二次备份,以便始终存在多个副本。

相关内容