web-dev-qa-db-ja.com

コピー時にUSBドライブの名前が/ dev / sdbから/ dev / sdcに(そして再び)変更されますか?

Ubuntu9.04サーバーインストールのフォルダーにUSBドライブをマウントしています。マウントオプションは、簡単にマウント/マウント解除できるように/ etc/fstabに保存されています。

# <file system> <mount point>   <type>  <options>          <dump>  <pass>   
/dev/sdb1       /media/backup   ntfs    nouser,auto,sync    0      3 

(それ以降、この部分をUUIDに変更して、問題が解決するかどうかを確認しました)。バックアップは毎朝問題なくファイルをディスクにコピーしています。ちょうど今、ファイルの1つを別のフォルダーにコピーしようとしましたが、エラーが発生しました。

cp: reading `ts01-even.tgz': Input/output error

/ dev/sdbが/ dev/sdcに変更されたために、問題が発生したことがわかりました。/dev/sdcをマウントしてファイルを再度コピーしようとすると、ドライブは/ dev/sdbに戻ります。 fstabファイルシステムを/ dev/sdX1からUUIDに変更した後、動作に違いはありませんでした。また、以前はtarballのファイルの内容を一覧表示することができましたが、これを行おうとすると、上記の動作が発生します。何か案は?

更新:

バックアップスクリプトを実行してバックアップをusbHDに保存しても問題は発生しませんが、tarballにファイルを一覧表示すると問題は発生します。 tarballコマンド「tar-ztfFILENAME」中のsyslogの出力は次のとおりです。

Jul  3 15:09:14 ts01 kernel: [308398.446893] Buffer I/O error on device sdc1, logical block 786433
Jul  3 15:09:28 ts01 ntfs-3g[7468]: ntfs_attr_pread_i: ntfs_pread failed: Input/output error
Jul  3 15:09:28 ts01 ntfs-3g[7468]: Failed to read of MFT, mft=5 count=1 br=-1: Input/output error
Jul  3 15:09:28 ts01 kernel: [308412.404579] Buffer I/O error on device sdc1, logical block 786433
Jul  3 15:09:29 ts01 ntfs-3g[7468]: Unmounting /dev/sdc1 (FreeAgent Drive)
Jul  3 15:09:32 ts01 ntfs-3g[29176]: Version 2009.2.1 external Fuse 27
Jul  3 15:09:32 ts01 ntfs-3g[29176]: Mounted /dev/sdb1 (Read-Write, label "FreeAgent Drive", NTFS 3.1)
Jul  3 15:09:32 ts01 ntfs-3g[29176]: Cmdline options: rw,sync
Jul  3 15:09:32 ts01 ntfs-3g[29176]: Mount options: rw,sync,silent,allow_other,nonempty,relatime,fsname=/dev/sdb1,blkdev,blksize=4096
Jul  3 15:10:01 ts01 /USR/SBIN/CRON[29630]: (root) CMD ([ -x /usr/sbin/update-motd ] && /usr/sbin/update-motd 2>/dev/null)
Jul  3 15:11:35 ts01 kernel: [308539.310031] usb 1-1: reset high speed USB device using ehci_hcd and address 38
... (log repeated with a different address)
Jul  3 15:12:47 ts01 kernel: [308611.790038] usb 1-1: reset high speed USB device using ehci_hcd and address 38
Jul  3 15:12:49 ts01 kernel: [308613.148837] end_request: I/O error, dev sdb, sector 84779391
Jul  3 15:12:49 ts01 kernel: [308613.148871] Buffer I/O error on device sdb1, logical block 10597416
... (log repeated with a different address, with the logical block incrementing by 1 each time)
Jul  3 15:12:49 ts01 kernel: [308613.149090] Buffer I/O error on device sdb1, logical block 10597425
Jul  3 15:12:49 ts01 ntfs-3g[29176]: ntfs_attr_pread_i: ntfs_pread failed: Input/output error
Jul  3 15:12:49 ts01 ntfs-3g[29176]: ntfs_attr_pread error reading '/TS01_Backup/ts01-even.tgz' at offset 177012736: 131072 <> -1: Input/output error
Jul  3 15:12:49 ts01 ntfs-3g[29176]: ntfs_attr_pread_i: ntfs_pread failed: Input/output error
Jul  3 15:12:49 ts01 ntfs-3g[29176]: ntfs_attr_pread error reading '/TS01_Backup/ts01-even.tgz' at offset 177012736: 4096 <> -1: Input/output error

関連性があると思われるものを見つけましたが、指示に従うことは実り多いとは証明されていません: FreeAgent Drives

5
jobu1324

設定に問題があると思われることがたくさんあります。

  1. USBドライブをfstabに入れるのは意味がありません。 fstabは、システムストレージデバイスとそのマウントポイントのほとんど静的なリストです。静的ドライブ/パーティションID(コントローラー/デバイスアドレスに基づく)を静的マウントポイントに割り当てます。これらのどちらも、USBドライブにとって実際には静的ではありません。最初の例では、2番目のハードディスクをシステムにインストールすると問題が発生します。それは/ dev/sdbになり、現在のUSBドライブを/ dev/sdcに移動して、起動時に構成を壊します。

  2. また、ドライブをfstabに入れ、「auto」オプションを指定すると、ドライブがブート時にマウントされることがシステムに通知されます。何らかの理由で起動時にドライブが切断された場合、起動手順でサーバーに障害が発生します。これは非常に望ましくない状況です。ドライブがシステムの機能に不可欠でない場合は、少なくとも「自動」オプションを設定しないでください。

  3. 「nouser」オプションは不要で、デフォルトです。 「同期」オプションは、自分が何をしているのかを本当に理解していない限り、本当に悪い考えです。パフォーマンスに深刻な影響を与えるだけでなく、ドライブ、特にフラッシュメディアの摩耗も引き起こします。

  4. fs_passno = 3(fstabの6列目)は未定義の動作を引き起こします。有効な値は0、1、または2のみです。

  5. Linuxサーバーのバックアップ用のドライブでNTFSを使用する。どうしてそんなことをするのか?すべてのLinuxNTFS実装は最適ではなく、Linuxサブシステムを実行するには不十分です。 Ext3のようなネイティブLinuxファイルシステムを使用する必要があります。

カーネルログから、これらの1つ以上が有効であると予測できました。

  1. パーティションが正しくないディスクがあります。つまり、ファイルシステムが実際のパーティションよりも大きい間違ったパラメータでフォーマットされています。または、パーティションテーブルのパーティション(論理サイズ)がドライブの物理サイズよりも大きい。これは、表示されている「バッファI/Oエラー」によるものです。パーティションテーブルを含め、このディスクを完全にリセットし、パーティションを最初から再作成して再フォーマットすることを検討してください。

  2. ディスクに不良セクタがあります( "end_request:I/Oエラー")。確認するには、ディスク上でbadblocksを実行することを検討する必要があります。

  3. USBエンクロージャが正しく機能していません(「USBリセット」から)。外付けハードドライブの場合は、独立した電源を使用する必要があります。 USBポートから(時には)利用可能な5V 500mAは、ハードドライブの動作を維持するのに十分ではありません。また、過熱している可能性があり、特に安価なUSBフラッシュドライブです。

  4. NTFSファイルシステムが破損しています。 ntfsfixで修正できる場合もありますが、繰り返しになりますが、NTFSはネイティブLinuxファイルシステムではありませんです。最良の結果を得るには、(スキャンディスクを使用して)このパーティションを適切にチェックするためのWindowsシステムが必要です。

その他の提案:NTFSの使用を停止し、ネイティブLinuxファイルシステムを選択し、fstabからそのエントリを削除し、バックアップスクリプトの一部としてディスクを手動でマウントし、完了後にディスクをアンマウントし、UUIDまたはファイルシステムラベルを使用してディスクを参照します。

5
Juliano

あなたはudevを調査したいです。これは、/ devの下のデバイスノードに名前を付ける役割を果たし、USBキーに一意の名前を付けるルールを設定できます。

5
David Pashley

安いUSBデバイスが大量のコピー中にあらゆる種類の愚かなことをするのを見てきました。

(私が働いている場所では、ソフトウェアのUSB評価バージョンがあり、それらを作成するために4Gbスティックを追加しています。)昨年はおそらく数十本のスティックを扱ってきました。

USBスティックのステートマシンが安価なモデルで頻繁に使用された場合に妨害されるのを見たと思います。繰り返しますが、Ubuntu、8.04LTS。

繰り返しますが、前のポスターをエコーし​​て、別のポートを試してください。使用していたラップトップの電源付きドッキングステーションでUSBポートを使用していることがわかりました。

大量のアドバイスは、ブランドドライブの名前に固執することです。

3
Tim Williscroft

UUIDまたはディスクラベルを使用したくない場合は、常に/dev/disk/by-foo/*デバイス名。そこでは、make-model-serialまたはI/Oポートによってディスクを選択することもできます。

3
Teddy

デバイスがコピーの途中で機能していないか、コンピュータから十分な電力が得られていないように聞こえます。

どのUSBポートに接続されていますか?外部電源のUSBハブがある場合は、それを使用します。

それ以外の場合は、できるだけマザーボードに近づけてください。一部のコンピューターでは、フロント/トップポート、または拡張スロットの追加のUSBポートで利用できる電力が少なくなっています。

3
Tzafrir

ボリュームにラベルを付けてから、ラベルでマウントできます。

mount -L /myusbstick /mnt/myusbstick

次に、任意のポートまたは任意のデバイス名に接続でき、検出されます。 uuidを使用することもできますが、あまり便利ではありません。

1
MarkR

USBデバイスの表面スキャンを実行して、不良セクタを探すことができます。 Syslogの入力/出力エラーメッセージは、不良セクタの存在を意味する可能性があります。固定IDE/SATAドライブの表面スキャンにseagateのseatoolsを使用しました。 USBドライブを認識できるかどうかを確認します。

0