次のコマンドを使用しようとしています。
dd if=/dev/urandom of=/dev/sg11 bs=16K count=1
しかし、実行すると、次のエラーが発生します。
dd: writing `/dev/sg11': Function not implemented
使用しようとするとエラーdd if=/dev/urandom of=/dev/sg11 bs=16K count=1 conv=fsync
が発生しcannot allocate memory
、Function not implemented
bsサイズを大きくするとエラーになります。
この問題の原因と解決策は何ですか?
更新:時々それは私に知らせ、そして同じbs値についてcannot allocate memory
再度知らせます。function not implemented
答え1
/dev/sgxx
ネイティブSCSIコマンドを送受信できるSCSI汎用デバイスです。デバイスに書き込むときに実行するアクションを定義するSCSIヘッダーから書き込みを開始する必要があります。
sg
デバイスにランダムなデータを書き込むのは本当に悪い考えです。存在しない可能性がある任意のSCSIコマンドを送信し(したがってfunction not implemented
)、操作にランダムなバイト長を提供しますcannot allocate memory
。
実際に接続しているデバイスによっては、ソフトウェアパッケージやより具体的なSCSIデバイスドライバ(テープドライブなど)を/dev/sg11
調べる必要があるかもしれません。sg3_utils
st
sg utils で提供される有用なユーティリティコマンドの 1 つは、sg_map
sg デバイスに対応するマスターデバイスが何であるかを知らせることです。古代のLinuxシステムではない場合は、lsscsi
/ dev / sgデバイスとマスターデバイスを含む素晴らしいSCSIデバイスのリストを提供するプログラムをインストールすることもできます。
sg_dd
sg3_utilsには、低レベルのSCSIプロトコルを理解するバージョンも含まれています。dd
(しかし、自分が何をしているのかを知っている場合にのみ使用してください!)