USBフラッシュドライブにddを書き込むと大量の読み取りが発生する


0

私は現在、私が以前に作成した、ddイメージでusbスティックを復元しています。ただし、スティックは通常はるかに高速ですが、書き込み速度は約7 MB /秒程度と非常に悪いことがわかります。

少し振り返ってみると、USBドライブから大量のデータが読み取られていることに気付きました。これは、書き込みパフォーマンスの悪さを説明しています。その時点では、dd以外は何もデバイスにアクセスしていません。

編集済み atop ライン:

sdd: busy 101% | read 18020 | write 613 | MBr/s 7.04 | MBw/s 7.1

ddを使って自分のmd配列に直接書き込むと、同じような動作に気づきました。ただし、マウントされたファイルシステムにddを使って書き込むときは、これは起こりません。

それで、私の質問は、なぜブロックデバイスに直接書き込むときにUSBスティックから読み取られるのか、そして書き込みパフォーマンスを改善するためにこれを防ぐことができるのかどうかということです。


具体的なもの dd コマンドスイッチを実行していますか?また、どのような種類のファイルシステムを実行していますか。
ice13berg

@ ice13berg私が使った dd if=/dev/sdX > lbzip2 image-dd.bz2 画像を作成するために使用しています lbzcat image-dd.bz2 | dd of=/deb/sdX それを復元します。
Antagonym

mdアレイに関して:RAID 5またはRAID 6?もしそうなら、あなたはddのブロックサイズとしてストライプサイズを使用していますか?
Hennes

@HennesそれはRAID-6であり、RAIDの場合、私はパリティ計算のために書き込み時にいくらかの読み取り動作を期待しますが、私が見たことはありません。 RAIDアレイのddコマンドにブロックサイズを設定しませんでした。
Antagonym

回答:


0

それで、100%何が起きているのかはっきりしていませんが、私は、小さいブロック(512バイト)をUSBに書き込んでいて、ddがそのバイトが正しく書き込まれていることを確認しています。書くこと、読むこと、書くこと。

ブロックサイズを「正しい」サイズに調整することは簡単なことではありませんが、それを行う方法についての少数の経験則があります。一般的に、私は64kBのブロックサイズがほとんどの分野で良い妥協点であることを発見しました - しかし、あなたがエキゾチックな何かを実行しているなら、あなたのファイルシステムはそれに対する変更を駆り立てます zfs、 例えば)。

このようなことを試してください: lbzcat image-dd.bz2 | dd of=/deb/sdX bs=64k

もっと長い議論については、チェックアウトしてください。 この郵便受け


それから、filesystm上のファイルにddするときは、dsで設定されたブロックサイズは問題ではない、というのが正しいのです。正しいブロックサイズ?
Antagonym

あなたは間違いなくその質問に私の範囲外になっています、しかし私は答えが「いいえ」であると思います。あなたがTOを書いているファイルシステムを知っていて、FROMを書いているファイルシステムを知っていれば、使用するのに最適なブロックサイズがあることがわかるでしょう。 dd データの完全なブロックの読み取りと書き込みの両方を最大化する - データチェックの最適化 dd そして、不完全な書き込みブロックの量を最小限に抑えます。例えば、私はfsを使うことが助けになるとは思わない。 bs=3bytes または bs=61bytes
ice13berg

1

私のために、 dd デフォルトでページキャッシュを使用します。これはページキャッシュがあるシステムでは普通のことだと思います。ただし、ページキャッシュでは記憶装置を読み取る必要があり、書き込み速度が遅くなる可能性があります。

私にとっては、これを回避しフルスピードを実現する3つの方法があります。

  1. セット dd ブロックサイズは4096または倍数です。 (読み取りなし)
  2. セット dd ブロックサイズを十分に大きい数にします。私にとってこれは約100万以上でした。私は約100万人で最高速度を得ました。 (非常に少ない読み取り)
  3. を与えてページキャッシュを使わない dd パラメータ oflags=direct。セット dd 512の十分に大きい倍数へのブロックサイズ。私にとってこれは約でした bs=120k 以上。 (読み取りなし)

私のシステム上で注意すべきこと ブロックサイズ すべてのストレージデバイス用 ページサイズ 4096バイトです。で見つかりました:

blockdev --getbsz /dev/sd?
getconf PAGESIZE

また セクターサイズ 512バイトです。 fdisk そして多分 parted セクターサイズがわかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.