我可以可靠地使用“dd”来擦除正在运行的 Linux 服务器上的根文件系统吗?

我可以可靠地使用“dd”来擦除正在运行的 Linux 服务器上的根文件系统吗?

我有一台(物理上)远程服务器,我想安全地销毁它。不幸的是,磁盘分区只有一个大的根分区,没有其他分区。我可以可靠地使用它dd来擦除包含根文件系统的设备吗?

简单来说如下:

$ sudo nohup dd if=/dev/urandom of=/dev/sda bs=1024

显然,我永远看不到作业的输出,因此我无法验证它是否成功完成。ddnohup程序应该足够小,并且此时服务器上没有其他程序在运行,因此没有理由在运行时将这些程序从内存中弹出。 它们会运行到完成吗,还是内核可能会在完成之前的某个时刻崩溃dd

我正在考虑其他可能性,但我会在单独的问题中询问这些问题。

答案1

是的, 这是绝对地有可能,但是需要做一些工作。

大多数答案都可以在 StackExchange 上找到,但我将在这里总结一下,并提供指向具有更详细和值得称赞的优秀信息的来源的链接。

  1. 构建基于内存的 Linux 环境并使用以下命令切换至该环境pivot_root
  2. 确保您可以使用 从外部访问服务器ssh
  3. 擦除根设备。

    # nohup dd if=/dev/urandom of=/dev/sda bs=512 > wipe.log &

  4. 请不时地随时检查的进度dd,因为它通常不会给您任何进度迹象。

    # kill -USR1 [ddpid]

  5. 稍后再回来验证该过程是否已完成(检查日志文件)。查看磁盘以验证其上是否有随机垃圾而不是真正的文件系统。如果您愿意,可以第二次(或第三次)擦除它。

  6. 决定下一步做什么。

    如果您愿意,您可以在这里停下来走开。当机器断电时,您将拥有一个不可启动的设备,并且该设备的安全程度由您决定dd

    我决定接下来尝试做一件我以前没做过的事:远程构建 Linux 基础系统。所以我继续:

  7. 用于fdisk根据需要重新分区根设备,并用于mkfs在这些分区上创建文件系统。

  8. 使用debootstrap安装基础 Debian 环境在(未来的)根文件系统上。
  9. chroot到新的基础环境,安装附加包(例如sshd)内核和引导加载程序(例如grub- 确保引导加载程序确实安装到设备上 - 而不仅仅是安装包)。
  10. 使用root_pivot按照与上述步骤 1 相同的方式切换到新环境。启动所有服务(例如sshd)以确保您能够通过 访问服务器ssh
  11. 重启。你的新操作系统应该已经准备就绪。

答案2

在企业环境中,您可能希望拥有某种带外管理,如 IPMI、iDRAC 或其他远程 KVM 解决方案。您将使用该系统启动到 liveCD,在其中可以执行和确认擦除。如果您的目标是安全擦除,那么您需要验证操作。您不能只是说“嗯,这应该有效”。因为即使它应该有效,也不意味着它确实有效。某些 IPMI 系统允许您从远程拥有的 ISO 远程启动。您可以使用一些简单的东西,例如 DBAN 映像。

答案3

这不是一个好答案,但我确实设法做了类似的事情。我正在sudo dd if=./bootcd-usb-debug.iso of=/dev/sda将 ReactOS iso 写入我想要的 USB 驱动器,但由于我没有验证我正在运行的 Linux 系统。希望我可以恢复我的数据。

相关内容