AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 553143
Accepted
markgraf
markgraf
Asked: 2019-11-21 04:56:07 +0800 CST2019-11-21 04:56:07 +0800 CST 2019-11-21 04:56:07 +0800 CST

如何加快磁盘的安全擦除速度?

  • 772

我需要不时安全地擦除硬盘,并使用了多种工具来做到这一点:

  • cat /dev/zero > /dev/disk
  • cat /dev/urandom > /dev/disk
  • shred
  • badblocks -w
  • 数据库

所有这些都有一个共同点,即它们需要很长时间才能运行。

在一种情况下 cat /dev/urandom > /dev/disk杀死了磁盘,显然它过热了。

是否有一种“足够好”的方法来实现磁盘上的任何数据及时变得不可用?覆盖超级块和几个具有战略意义的块或类似的东西?

磁盘(包括旋转和 ssd)来自捐赠的计算机,之后将用于在其上安装 Linux 桌面,分发给买不起计算机但需要一台计算机的人。

捐赠计算机的磁盘通常不会加密。有时捐赠者甚至不会想到事先删除文件。

更新:

从迄今为止得到的答案来看,似乎没有偷工减料。我最好的选择可能是设置一台实验室计算机来一次擦除多个磁盘。要求大公司捐款的另一个理由:-)

感谢大家!

security performance
  • 15 15 个回答
  • 13537 Views

15 个回答

  • Voted
  1. Best Answer
    200_success
    2019-11-21T06:30:23+08:002019-11-21T06:30:23+08:00

    覆盖超级块或分区表只会使重建数据不方便,如果您只是进行十六进制转储,显然仍然存在。

    硬盘具有内置擦除功能:ATA Secure Erase,您可以使用以下方式激活hdparm:

    1. 选择一个密码(任何密码):

      hdparm --user-master u --security-set-pass hunter1 /dev/sdX

    2. 启动擦除:

      hdparm --user-master u --security-erase hunter1 /dev/sdX

    由于这是一项内置功能,因此您不太可能找到一种更快的方法来真正提供真正的擦除。(不过,这取决于你是否符合你的偏执程度。)

    或者,使用具有全盘加密的磁盘,然后在要处理数据时丢弃密钥。

    • 46
  2. Criggie
    2019-11-21T16:48:48+08:002019-11-21T16:48:48+08:00

    可能不受欢迎的答案: 忍受完全安全擦除磁盘的时间。

    您已经接受了来自各种来源的捐赠硬件,并承诺他们的数据将被安全删除。所以你必须按照你的承诺做, 并安全地擦除磁盘。

    如果我是捐赠者,我发现你没有信守承诺,我以后不会再给你任何硬件了。

    并且不要缩短 DBAN 运行时间,或者认为清除前半部分或前 10% 就足够了,而事实并非如此。


    为了让您的 DBAN 运行更方便,您通常会从主机中移除驱动器吗?如果是这样,除了具有多个 SATA 端口的功率相当低的台式机。当您准备好擦除几个驱动器时,将它们全部设置在这台机器上并使用可引导的 DBAN ISO 或 netboot DBAN 会话擦除它们。然后让机器运行直到最后一个完成。

    您可以使用 SATA-USB 磁盘坞站,但与原生 SATA 连接相比,这些往往非常慢。

    其次,您是否有存储捐款然后处理它们的工作流程?或者您是否接受硬件、测试、擦拭然后存放物品以供使用?我建议您制作一个适合您的管道,并使 DBAN 成为该管道中的一个阶段。因此,当您从商店中拉出一台机器时,它已经被擦掉了,并且是已知良好的。

    • 20
  3. xenoid
    2019-11-21T05:13:13+08:002019-11-21T05:13:13+08:00

    dd大块可能比cat:

    dd if=/dev/zero of=/dev/disk bs=16M
    

    在此过程中杀死磁盘是好事,无论如何它可能是微不足道的。

    如果你 LUKS 加密,这可以在设置加密后完成(使得更难发现磁盘上的已用/未用空间)。

    您无法避免 I/O,以 50MB/s(对于旧磁盘来说这是一个不错的速度),写入 250GB 需要 5000 秒(约 1.5 小时)。唯一的问题是你能得到多接近。

    • 13
  4. pipe
    2019-11-21T13:24:53+08:002019-11-21T13:24:53+08:00

    blkdiscard - 丢弃设备上的扇区

    我还没有尝试过,但是通过快速阅读,您可以尝试blkdiscard。

    这只会向驱动器发送简单的命令并且应该非常快,但我没有找到任何保证块中的数据将被擦除的保证。不过也有一些提示。

    • 从手册页:

    警告:设备上丢弃区域中的所有数据都将丢失!

    • 来自维基百科:

    TRIM 告诉 SSD 将 LBA 区域标记为无效,随后对该区域的读取将不会返回任何有意义的数据。在很短的时间内,数据仍然可以在内部存储在闪存中。但是,在发出 TRIM 命令并进行垃圾收集之后,即使是法医科学家也不太可能恢复数据。

    对于严肃的业务,我显然不会相信这一点,但由于您的要求“足够好”,它可能是一个可行的选择。据推测,它也只能在 SSD 上使用,如果您正在处理旧的捐赠计算机,这可能是一个更严重的障碍。

    • 7
  5. Alex Baranowski
    2019-11-21T05:12:49+08:002019-11-21T05:12:49+08:00

    从安全(偏执)的角度来看,这可能是不可能的。

    在一种情况下,您只能重写磁盘的一小部分,大多数人会认为它可以节省。如果驱动器被加密覆盖加密标头(存储加密密钥的位置)应该使其无法恢复。

    但是还有另一个问题 - SSD 可能会保留标头数据(用于覆盖标头的随机数据可以保存到其他单元格)。

    • 6
  6. ChuckCottrill
    2019-11-21T17:41:59+08:002019-11-21T17:41:59+08:00

    大多数关心数据安全的公司已经加密了他们的驱动器,不会(不应该)给你驱动器加密密钥,所以驱动器数据已经被有效地“擦除”了。

    并行擦除将解决最大的速度问题。SATA I/O 速度不是瓶颈,HDD 物理写入速度才是极限。现代主板至少有 4-8 个 SATA 驱动器连接。设置一台(或多台)实验室计算机以从 SSD(快速)启动。连接 4-6 个要擦除的驱动器,然后使用首选方法从提供的方法中擦除。

    假设您有 4 个驱动器(b、c、d、e)......然后一个简单的脚本将并行擦除所有驱动器。实验室计算机使您能够记录驱动器擦除。

    ts=$(date +%Y%m%d%H%M%S)
    mkdir -p erase-${ts}
    # figure out where your linux mounts the drives (avoid trashing your SSD)
    for drive in b c d e; do
        target="sd$drive"
        dd if=/dev/zero of=/dev/${target} bs=16M 2>&1 |tee erase-${ts}/${target} &
    done
    

    虽然,我会在单独的终端中运行每个驱动器擦除,所以我可以观察特定驱动器上的错误。应更换具有多个错误的驱动器。来自驱动器的 SMART 信息将让您了解驱动器的使用年限。

    如果您配置了 2-4 台实验室计算机,挑战将是在实验室计算机中保持足够的驱动器加载,以使它们忙于擦除驱动器。假设每台实验室计算机有 5 个驱动器 X 3 台实验室计算机 = 15 个驱动器被并行擦除。您每 30 (ish) 分钟完成一批

    所有的赌注都与 SSD 无关,它们的工作方式不同。大多数具有更快的写入速度。并且以上都不会擦除已被坏块检测映射出使用的扇区(某些数据可能无论如何都不会被擦除)。

    已经进行了几项研究,尤其是 Google 的一项相当大的研究,发现在头两年之后,硬盘驱动器故障的概率达到 5-6%(每年),并在随后几年显着增加。任何超过 5 年的磁盘都有很大的故障概率。考虑只淘汰(销毁、回收)五年以上的硬盘驱动器。

    我的建议是只保留三年或更少年的驱动器,或者更换所有驱动器,然后退役(销毁或回收)。

    • 5
  7. Harper - Reinstate Monica
    2019-11-24T09:35:26+08:002019-11-24T09:35:26+08:00

    框架挑战:

    停止拆卸 PC

    我这辈子拆过很多电脑。你在抱怨时间,但你在浪费时间拆卸 PC 进行成像——每台 PC 都必须进行两次测试,然后重新测试。

    你的老化期是淡茶。您只需将系统组合在一起足够长的时间来配置和测试新映像的驱动器。因此,您将向客户运送有缺陷的 PC(许多是出于某种原因给您的;诸如热问题之类的小故障就是其中之一。)

    改变你的装配线。将 PC 上电机架,连接 KVM,然后使用 PC 擦除 PC。这也将给它一个方便的“运行一段时间”老化;如果你使用 /dev/urandom 一个粗壮的 CPU/热老化。

    您可以在他们的 Windows 环境下启动并删除除系统文件和应用程序之外的所有文件,或者您可以从 CD 启动,或者如果系统能够启动,则从 USB 记忆棒启动。或者,您可以先对系统进行映像,然后在安装新映像后擦除可用空间。

    如果在传统操作系统下本地运行,则无需删除和擦除 Windows 系统文件和应用程序,例如魔兽世界是 40GB 的数据,不需要安全擦除。所以\Windows,\Program Files和其他系统目录可以从安全擦除中排除。(如果他们将数据放在那里,他们就不能公平地期望安全擦除它)。有一个高度可移植的 perl 4 版本可以轻松解决这个问题,而 perl 4 对于这种事情来说已经足够强大了。

    如果我使用的是本机操作系统,我会分两遍完成:首先删除所有非系统非应用程序文件;然后用零填充磁盘(如果您担心 CIA 层磁盘取证,则可以使用系统文件的副本)。

    或者在成像后最后擦拭它

    一样; 仍然使用 PC 本身进行映像,例如从 CD 启动并通过以太网或其他方式拉取映像。

    现在,使用第一次启动时的操作构建映像,它会擦除​​可用空间,然后禁用自身。

    所有数据都被 a) 新图像的文件覆盖,或 b) 覆盖可用空间。

    如果您希望此功能能够“检查点”,即不必在电源故障后重新开始,那么只需将具有随机名称的大量文件写入 /tmp/ 直到磁盘已满。确认磁盘已满后,让它删除 /tmp/ 文件,然后自行删除。

    一旦磁盘 100% 被新数据占用,旧数据肯定已被覆盖。

    • 5
  8. Ole Tange
    2019-11-21T12:39:35+08:002019-11-21T12:39:35+08:00

    即使在文件系统已被丢弃的设备上,通常也可以仅通过读取设备来恢复 JPG 图像。

    为了更难,也许你可以用数据覆盖所有文件的开头。

    就像是:

    mount /dev/disk /mnt
    find /mnt -type f |
      parallel --pipe --block 8k --roundrobin -q perl -ne 'chomp;open(A,"+<",$_);print A "0"x8192'
    

    如果只有几个文件,这将比覆盖整个驱动器更快。

    • 2
  9. fraxinus
    2019-11-22T05:49:08+08:002019-11-22T05:49:08+08:00

    /dev/zero 速度快,/dev/urandom 速度慢且占用大量 CPU。

    使用大块 (bs=1M) 与 dd 一起使用它们都比与 cat 一起使用更好。cat 不了解块,它一次移动一个字符,使用大量 cpu 周期。

    shred 是针对该目的优化的工具,它基本上以有组织的方式完成 dd 的工作。当用随机数据覆盖磁盘时,它使用更少的“随机”数据(与从 /dev/urandom 获取所有内容相比) - 仍然足够随机以将 SSD 推出备用块并通过交叉字符干扰使 HDD 磁性分析变得困难,但是更少的 cpu-hungry 生成。

    我从未使用过 DBAN,但从我读到的内容看来,它基本上是一个可启动包装器中的类似碎片的工具。

    然后,在 hdparm 中可以访问 ATA SECURITY_ERASE 命令(甚至是 SECURITY_ERASE_ENHANCED 命令)。他们只需将 0 写入磁盘,而无需将它们推送到接口中。在 HDD 上,它们的速度与 dd(小时)一样快。在 SSD 上,它们是整个磁盘上的 blkdiscard。增强的品种也尝试将标记为坏的块归零。

    blkdiscard - 仅适用于 SSD。将块标记为空闲,因此它们显示为 0,不能保证它们何时会在内部被擦除。

    • 1
  10. Artelius
    2019-11-23T13:52:17+08:002019-11-23T13:52:17+08:00

    不要安装操作系统,镜像它

    如果您无论如何都打算在上面安装 GNU/Linux,您可以一步完成:使用全新安装的驱动器(或映像),然后将其克隆到新磁盘。

    如果您的操作系统占用例如 8GB,那么这就是 8GB 的​​空间,您不需要先清空。我承认,与 1TB 相比并不算多,但它也可以为您节省一些安装时间。预装的越多越好;)

    如果源图像太短而无法覆盖整个磁盘(太短总比太长好),您可以使用dd空白磁盘的其余部分。如果你愿意,然后在克隆后调整分区大小。

    如果您想使用映像文件而不是克隆磁盘,则可以使用称为“稀疏文件”的有用功能来减小映像中块全为零的文件大小。

    • 1

相关问题

  • 将外部 IP 放入变量中 - grep 操作失败 [重复]

  • 简而言之,OpenBSD 的承诺是什么?

  • 加强 rhel6/7 服务器的安全性 [关闭]

  • 如果某人被授予 root 访问权限,是否可以劫持服务器作为人质?[关闭]

  • 是否有实现 RFC 5848“签名系统日志消息”的系统日志守护程序?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve