web-dev-qa-db-ja.com

Passportを使用したfdisk中の入出力エラー

Neweggから新品のWDPassportを購入しました。何もコピーできませんでした(コピー操作が無期限にハングし、IOエラー)で終了したため)GUIで再フォーマットしてみました。現在はEXT4としてフォーマットされているようです。残念ながら私はそれでもコピーできませんでした。フォーマットが疑わしいほど高速でした(数秒、1 TBドライブです)。フォーマットが間違っているのではないかと思いました。

$ Sudo fdisk /dev/sdb1   

そして得た:

fdisk: unable to read /dev/sdb1: Input/output error

私は何をしますか?!重要な場合に備えて、私はUbuntu12.10を使用しています。

1
Hut8

まず最初に、Ubuntuが新しいディスクを認識していることを確認する必要があります。

$ Sudo fdisk -l

たとえば、新しいディスクは/ dev/sdbである可能性があります。 必要に応じて以下で調整してください。

fdiskを使用してパーティションを作成します。

$ Sudo fdisk/dev/sdb

次に、すべてのパーティションをmkfsでフォーマットします。

最初のパーティションの例を次に示します。

$ Sudo mkfs.ext4/dev/sdb1

詳細については、この 手順 および ここ を参照してください。

1
september

fdiskは、パーティションではなくディスクで機能します。 Linuxでは、ディスクはたとえば次のように呼ばれます。 /dev/sdb、その上のパーティションは/dev/sdb1/dev/sdb2などと呼ばれます。古いスタイル(/ dev/[hs] d?、/ dev/[hs] d)に注意してください。 ??)パーティション指定子は常に数字で終わりますが、ディスク指定子は常に文字で終わります。

ディスクをフォーマットするだけの場合(不良ブロックのチェックなどはありません)、数秒のフォーマット時間は完全に不合理ではありません。最初のファイルシステムメタデータ構造をディスクに書き込むだけでした。正確な数はわかりませんが、それらはかなり小さく、USBはこのような比較的少量のデータを書き込むのに非常に高速です。エラーが発生しなかった場合は、フォーマットプロセスがおそらくその役割を果たしました。

最初にすべきことは、適切なデバイスでfdiskを実行することです。あなたの場合、それはSudo fdisk /dev/sdbのように聞こえますが、場合によってはデバイス名が時間とともに変化する可能性があることに注意してください。代わりに/ dev/disk/by-idのエントリの1つを使用することをお勧めします。これらは変更されないため、ディスクを接続する直前に実行すると、ディスクがどのように表示されるかを確認できます。

diff <(ls /dev/disk/by-id) <(sleep 15; ls /dev/disk/by-id)

これにより、2回目の入力パイプでのls呼び出しのおかげで、15秒間隔で実行されるsleepの2つの実行間のディレクトリコンテンツの違いが表示されます。 15秒は、カーネルがディスクを識別し、udevに適切なデバイスノードを作成させるのに十分な時間を与えるはずです。違いが見られない(出力が空の)場合は、ディスクのプラグを抜いてもう一度試して、遅延を増やしてください。パーティションデバイス(-partで終わり、その後に数字が続き、場合によっては@)とディスクデバイス(-part部分なし)の両方が表示されます。ファイル名が@で終わる場合は、その文字を無視してください。これはls出力アーティファクトです。

パーティションを適切に配置したら、その上にファイルシステムを作成できます。たとえば、Sudo mkfs.ext4 -v /dev/disk/by-id/xxxxx-Passport-XXXXXXX-part1です。 -vは、追加の出力(詳細は「v」)をオンにします。これにより、ファイルシステムが正常に作成されたかどうかがわかります。

その後、ディスクは完全に使用可能になります。

1
a CVn