相关疑难解决方法(0)

使用“dd”写入块设备时,是否证明需要“同步”?

每次我将文件写入空的原始块设备时,例如

# dd if=image.iso of=/dev/sdb status=progress
Run Code Online (Sandbox Code Playgroud)

我从未使用过任何类型的sync(即sync; conv=fsync; conv=fdatasync; oflag=sync; oflag=dsync)。

我注意到,dd没有永远退出,直到所有的写作完成。

我总是使用 Conky 的 I/O 工具和grep Dirty /proc/meminfo. 此外,设备的校验和始终与写入它的文件的校验和相匹配。所以我总是 100% 确定整个文件已写入设备。

我已将文件写入 ext4 卷进行比较。例如使用:

$ dd if=/dev/urandom of=~/file bs=1M count=50 iflag=fullblock
Run Code Online (Sandbox Code Playgroud)

写入 ext4 卷时,dd退出后在数据实际写入磁盘之前总是有大约 20 秒的延迟。

许多人提倡在sync命令后使用dd命令,或者在写入块设备时syncdd命令中包含几个选项之一。例如这里这里。但是,我不知道有人真正证明这是必要的。

此页面上的评论之一是:

sync在这里毫无意义[即直接写入/dev/sdX]。它只影响文件系统操作。

有五个人对这条评论投了赞成票,这与我的经验一致。

那么在写入块设备时,有没有dd在所有写入完成之前退出的情况?这真的发生在任何人身上吗?

其他书写选项如何,例如cpcat …

linux cache dd synchronization block-device

9
推荐指数
1
解决办法
1248
查看次数

标签 统计

block-device ×1

cache ×1

dd ×1

linux ×1

synchronization ×1