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
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1478947
Accepted
Dov
Dov
Asked: 2023-07-22 03:35:14 +0800 CST2023-07-22 03:35:14 +0800 CST 2023-07-22 03:35:14 +0800 CST

dd 复制分区的速度比 gparted 慢得多。这怎么可能?

  • 772

我尝试将分区从 500GB 内部 M.2 SSD 复制到 M.2 2TB 驱动器周围的外部 USB3.x 外壳。

我的第一次尝试使用 A 到 C 电缆,命令为:

dd if=/dev/nvme01p3 of=/dev/sda1 bs=1M

240GB 分区大约需要 6.5 小时。它报告 10MB/s。这看起来真的很慢。结果发现我连接的端口可能是USB2,所以我使用了短的USB C to C电缆,得到了40MB/s,类似的分区大约需要1.5小时。

dd 应该是相当低的级别,特别是当有问题的文件是分区时。这不就是磁盘上的原始块吗?因此,在另一个问题中,一些答案建议我在 gparted 中使用复制分区。无论如何,还是有错误,所以我尝试了一下,当它达到我认为应该的速度(超过 1GB/秒)时,我感到很震惊。4分钟后,分区重做。

问题是,dd 怎么可能比 gparted 慢 40 倍呢?如果这个问题必须转移到 stackoverflow,我会这么做,但它处于软件和 Linux 之间的灰色地带。

gparted
  • 2 2 个回答
  • 266 Views

2 个回答

  • Voted
  1. Rinzwind
    2023-07-22T03:50:32+08:002023-07-22T03:50:32+08:00

    'dd 的速度取决于块的大小。

    块大小/缓冲区大小/预读设置都会对顺序读/写产生影响。如果您使用较小的块大小,则驱动器每次访问只会读取少量数据,然后再将其传递到下一个进程。

    找到最佳位置,dd就会像 gparted 一样快。

    Gparted 将有一种方法来确定最佳位置。大概吧sudo blockdev --getsz /dev/{device}。

    • 3
  2. Best Answer
    Raffa
    2023-07-23T21:28:22+08:002023-07-23T21:28:22+08:00

    dd应该是相当低的级别,特别是当有问题的文件是分区时。这不就是磁盘上的原始块吗?

    确实如此,但原始块对于已使用(被数据占用)和未使用(空/全零/稀疏/没有数据即文件的文件系统)来说是相同的...因此,就所dd关心的而言,这些被复制到原始磁盘上磁盘块级别一点一点地忽略它们的内容......即所有磁盘块的速度相同。

    Gparted另一方面是一个文件系统感知实用程序...要了解这可能如何影响分区(文件系统)复制速度,请尝试复制仅包含文件系统的空分区,即刚刚格式化且上面没有存储文件...dd将复制每个单独的分区块,即就好像文件系统充满了文件,这可能需要很长时间,具体取决于源的大小、两个磁盘的速度以及它们之间的链接,而另一方面,只会在目标上重新创建空文件gparted系统空间,并且速度应该非常快,因为它只是用相同的大小和相同类型的文件系统格式化目标空间。

    看起来,您的源分区/文件系统没有占用足够的文件/数据来强制gparted复制每个块的内容。

    当源分区未满并且有大量可用空间时,文件系统感知实用程序会更快,而在其他情况dd下可能会更快或至少具有相同的速度。

    请参阅使用 dd 将 500 Gig 从一台便携式设备复制到另一台便携式设备时主要相关的扩展讨论

    • 3

相关问题

  • 将未分配空间添加到扩展分区

  • 为什么我不能使用 GParted 在我的 USB 闪存驱动器上创建分区表?

  • 如何格式化 btrfs 分区?

  • 运行 gparted 后磁盘已满?

  • GParted 是调整 NTFS 分区大小的好工具吗?

Sidebar

Stats

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

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve