質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.40%

  • Linux

    4611questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • VMware

    262questions

    VMwareとは、 ハードウェアで動作するOS上で仮想マシンを作成、実行するソフトウェアです。 Windows上でUNIX系OSを動作させたり、他のOS上で別の仮想OSを動作することが可能です。

ファイルシステムのトラブル? Buffer I/O error on device

解決済

回答 2

投稿

  • 評価
  • クリップ 2
  • VIEW 15K+

sakamo2

score 29

お世話になります。

VMWARE仮想マシンとして利用しているCENTOSにて、ファイルシステムエラーがでており対応策をアドバイスいただけませんでしょうか。

エラーが出ているのは、仮想マシンに接続している外付けUSB接続のHDDです。(エラーメッセージは、最後に載せております。)

1 ファイルシステムのエラーで復旧できそうなのか。
2 ハードディスクの故障なのか。

アンマウントしてfsck チェックしたら改善できそうという情報もあったのですが、あまり操作したことのないコマンドなので、どなたかアドバイスいただけませんでしょうか。

どうぞ宜しくお願い致します。

Aug 16 14:29:13 centos-svn kernel: sd 4:0:0:0: [sdc]  Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Aug 16 14:29:13 centos-svn kernel: sd 4:0:0:0: [sdc]  Sense Key : Medium Error [current]
Aug 16 14:29:13 centos-svn kernel: sd 4:0:0:0: [sdc]  Add. Sense: Unrecovered read error
Aug 16 14:29:13 centos-svn kernel: sd 4:0:0:0: [sdc] CDB: Read(10): 28 00 06 b4 4d c0 00 00 08 00
Aug 16 14:29:13 centos-svn kernel: end_request: critical medium error, dev sdc, sector 112479680
Aug 16 14:29:13 centos-svn kernel: Buffer I/O error on device sdc1, logical block 14059952
Aug 16 14:29:13 centos-svn ntfs-3g[1054]: ntfs_attr_pread_i: ntfs_pread failed: Input/output error
Aug 16 14:29:13 centos-svn ntfs-3g[1054]: ntfs_attr_pread error reading '/SVN/reps/contentShared/db/revs/553' at offset 4096: 4096 <> -1: Input/output error
Aug 16 16:13:58 centos-svn ntfs-3g[1054]: ntfs_attr_pread_i: ntfs_pread failed: Input/output error
Aug 16 16:13:58 centos-svn ntfs-3g[1054]: ntfs_attr_pread error reading '/SVN/reps/contentShared/db/revs/553' at offset 4096: 5165 <> -1: Input/output error
Aug 16 16:13:58 centos-svn kernel: sd 4:0:0:0: [sdc]  Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

うかつに回答してファイルが消失しても責任は持てず、たいへん回答しにくい質問ではあるのですが……。

ログにある hostbyte, DRIVER_SENSE, Medium Error などの意味は、以下に載っていました。
http://archive.linux.or.jp/JF/JFdocs/SCSI-Programming-HOWTO.txt

このログからわかることは、少なくとも /SVN/reps/contentShared/db/revs/553 が記入された部分が損傷しているという事実です。原因が単なるファイルシステムのエラーなのかハードディスクの故障なのかは、他の部分も調査してみないとなんとも言えません。

 まずはバックアップの確保

Subversion はそのデータ構造上、途中のリビジョンが破損しているとリカバリは非常に困難ですので、まず、553 のバックアップがないのであれば、早急に別ドライブにバックアップしてください。物理故障であれば、失敗しても何度かトライすると読める可能性があります。
一方、Subversionのバックエンドストアであるfsfsは、いったん生成されたリビジョンデータファイルは不変(プロパティは可変)なので、過去に一回でも取得したバックアップがあれば復旧にはそれが使えます。破損しかけた553のバックアップはさっさとあきらめてもよいです。
なお、故障範囲はそのパーティションを含んだドライブ全体である可能性があります。未バックアップなファイルがあれば、修復作業より前にバックアップを取得することをおすすめします。

回転軸などに故障があったりグリスが固まっている場合、いったん回転を止めると回りださなかったりすることがあるので、脱着は最小限にすべきです。また、ハードディスクは起動時に最も電力を使います。バスパワーで使っているなら外部電源をつなぐ、二股USBケーブルをつかってUSBを二口つかって給電する、太くて信頼できるUSBケーブルを使う、なども検討の余地があります。

 他のエラーをチェック

少なくとも、sdc1 すなわち /SVN/reps/contentShared/db/revs/553 を含んでいるパーティションで読み出しエラーが起こっています。検知されたセクタはログから sdc, sector 112479680 ということが分かっています。

ディスクはそれ自身、不良セクタを検知すると、そのセクタを避けて代替セクタを使うように動作します。そのセクタが不良であるとマークされたあとは、そのセクタを踏んでいるファイルを編集した段階で代替セクタが使われます。今回のケースでは、553ファイルをバックアップから書き戻せば代替セクタが使われることが期待できます。
事前に用意した代替セクタを使い切ってしまうと、それ以上は対処できなくなります。smartctlコマンドが使えるようであれば、S.M.A.R.T関連で他にエラーが検知されていないか調べてみてください。大量に出ているようならディスクの寿命が近いので、リプレースをおすすめします。

追記: S.M.A.R.T情報の取り方や読み方は、この質問のsharowさんの回答がとても詳しく大変参考になるので参照してください。(追記ここまで)

 修復

パーティションのフォーマットがntfsのようなので、エラーチェックや修復をするのに、fsckよりはWindowsのchkdskのほうが相性が良いかもしれません。バックアップが確保されていることを改めて確認したうえで、修復モードで実行することで、ディスクのエラーおよびファイルシステムの整合性がチェックされます。不整合があってみなしごだったファイルは、救出可能であればマウントポイントの lost+found とか FOUND.000 といったディレクトリに移されています。
救出できなかったファイルはどうしようもないので、バックアップから戻すなりしてください。上記のとおり、不良セクタにマーク済みであれば、553ファイルを上書きするだけで Subversionのリポジトリは復旧できているはずです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/18 12:58

    丁寧にコメントいただきありがとうございます。
    smartctlコマンドは使えないようです。
    /var/log/message には、セクタ番号の異なるBuffer I/O error が大量にありました。
    ディスクの寿命が近いということでしょうか。
    end_request: critical medium error, dev sdc, sector 112479680
    kernel: Buffer I/O error on device sdc1, logical block 14059952

    キャンセル

+1

私もつい先日1つ逝きました。しかもSSD。まだお通夜(RMA申請)が終わってません。

1 ファイルシステムのエラーで復旧できそうなのか。
2 ハードディスクの故障なのか。 

論理破損か、という意味ならエラーの内容からするとそうだとも思えますが、論理破損する原因は物理破損だったりするのでなんとも言えません。最近はUSB接続でもS.M.A.R.Tが使えたりするのでその値も確認してみてはいかがでしょうか。Linuxならsmartmontoolsが使えます。sudo smartctl -a /dev/sdcのようにして問い合わせます。Raw Read Error Rateがたくさん出ていて驚かれると思いますが、まず見るべきはReallocated Sectors Count(代替セクタ割り当て量)がどれくらいあるか、です。代替セクタを使い切るとあとはI/Oエラーが出るのを待つだけですから、この値がかなり重要です。他の値の意味も調べてみてください。それらS.M.A.R.Tの内容を張っていただけると回答者に役立ちます。

(WindowsならCrystalDiskInfoとかなんとかで見れるんでしたっけ)

HDDは電源投入時に自己診断が走り、基本的な機能をテストします。電源を入れると最初にカリカリ音がするのはそれです。物理的に破損していると、この自己診断でコケて、S.M.A.R.Tのログにその記録が残ります(ちなみに自己診断でコケたHDDを接続して電源を入れると、警告が表示されBIOSやUEFIに飛ばされます)。そのようなログがあるかどうかと、先のReallocated Sectors Countの数が物理的な限界にきているのかどうかの一つの基準になります。

とはいえ、一度I/Oエラーが出たドライブには重要なデータは入れない方がよいです。復旧に関しては既に良い回答があるのでそちらを参考にしてください。

-- 追記

SMART   Attributes
Vendor  Specific
ID#     ATTRIBUTE_NAME           RAW_VALUE
1       Raw_Read_Error_Rate      113020384
4       Start_Stop_Count         159
5       Reallocated_Sector_Ct    0
7       Seek_Error_Rate          36783101
9       Power_On_Hours           25704
10      Spin_Retry_Count         0
12      Power_Cycle_Count        148
183     Runtime_Bad_Block        0
184     End-to-End_Error         0
187     Reported_Uncorrect       1278
188     Command_Timeout          8590065672
194     Temperature_Celsius      45
197     Current_Pending_Sector   592
198     Offline_Uncorrectable    592

気になる部分だけ抜き出してみました。
第一印象は稼働時間で、2.5万時間は約3年稼働に当たります。人によっては1万時間を超えたHDDは現役引退させてバックアップ用に格下げしたりしますから、2.5万時間で実際に磨耗(エラー)があるのでしたら、現役引退させてもいいのではないでしょうか。

Current_Pending_Sectorが592個あるのにReallocated_Sectorが0なので、数値上は「代替えしたいセクタがあるけども使われてない」ということになります。おそらく代替えは書き込み時にしか行われないからでしょう。なので何度かそのセクタに書き込みを試みれば代替えセクタに割り当ててくれるかもしれません。
こういう方法もあるようですが、個人的にはすべてデータを退避した上で、Windowsならchkdsk /rで不良クラスタをNTFSに登録し、終わった後のSMARTを確認するのが手っ取り早いと思います。Linuxならbadblocksで全セクタのテストが行えます(ただしbadblocksはデータは消える前提で使いましょう)。しかしながら、退避したデータをこのHDDに戻して元のように運用したりするのはリスクがありますのでとてもお勧めできません。消えても構わないデータや多重バックアップの一部に使いましょう。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/18 21:32

    なるほど…本文にも字数制限あるんでしたね。あとはpastebinやgistを使うとか。重要なのはReallocated Sectors Countを含むアトリビュートの表です。

    キャンセル

  • 2016/08/19 09:32

    ありがとうございます!
    Reallocated Sectors Countを含むアトリビュート表こちらでしょうか。
    -----
    SMART Attributes Data Structure revision number: 10
    Vendor Specific SMART Attributes with Thresholds:
    ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
    1 Raw_Read_Error_Rate 0x000f 100 090 006 Pre-fail Always - 113020384
    3 Spin_Up_Time 0x0003 095 094 000 Pre-fail Always - 0
    4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 159
    5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
    7 Seek_Error_Rate 0x000f 075 060 030 Pre-fail Always - 36783101
    9 Power_On_Hours 0x0032 071 071 000 Old_age Always - 25704
    10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
    12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 148
    183 Runtime_Bad_Block 0x0032 100 100 000 Old_age Always - 0
    184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0
    187 Reported_Uncorrect 0x0032 001 001 000 Old_age Always - 1278
    188 Command_Timeout 0x0032 100 098 000 Old_age Always - 8590065672
    189 High_Fly_Writes 0x003a 090 090 000 Old_age Always - 10
    190 Airflow_Temperature_Cel 0x0022 055 034 045 Old_age Always In_the_past 45 (54 22 55 43 0)
    191 G-Sense_Error_Rate 0x0032 100 100 000 Old_age Always - 0
    192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 74
    193 Load_Cycle_Count 0x0032 068 068 000 Old_age Always - 64453
    194 Temperature_Celsius 0x0022 045 066 000 Old_age Always - 45 (0 21 0 0 0)
    197 Current_Pending_Sector 0x0012 097 096 000 Old_age Always - 592
    198 Offline_Uncorrectable 0x0010 097 096 000 Old_age Offline - 592
    199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
    240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 202662326831755
    241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 117873761243154
    242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 2691436544852

    キャンセル

  • 2016/08/20 01:09

    情報ありがとうございます。回答部分に追記しました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.40%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Linux

    4611questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • VMware

    262questions

    VMwareとは、 ハードウェアで動作するOS上で仮想マシンを作成、実行するソフトウェアです。 Windows上でUNIX系OSを動作させたり、他のOS上で別の仮想OSを動作することが可能です。