1 esk2 の最新の編集 (2020-02-11 22:06:39)

トピック: chkdsk /r を実行するリスク

引用箇所:    https://pctrouble.net/running/chkdsk.html
<引用文はじめ>
「chkdsk」による修復の目的は、Windowsにとって正しいファイルシステムにすることです。
ユーザーにとって必要なファイルを修復することではありません。
従って、その過程でユーザーにとって必要なデータが上書きされることがあります。
<引用文終わり>

<質問>
chkdsk /rについて、別の箇所で「不良セクタを検出し、不良クラスタから読み出し可能なデータは回収する」
「不良セクタを含んだクラスタは不良クラスタとして、ファイルシステム上使わないようにするだけ」と書いていらっしゃいます。
他方、chkdsk /r を実行するリスクとして、「ユーザーにとって必要なデータが上書きされる」ともおっしゃっています。

前者2つの記述だけを読むと、chkdsk /r は無害であって、後者のようなリスクが生じる危ない仕組みのように思えません。
「ユーザーにとって必要なデータが上書きされる」シナリオは何故、そして、具体的にどのように起こるのでしょうか。

私の理解では、ディスクのファームウェアは、あるセクターが一度で読み取れなかった場合は、ヘッドの磁力やタイミングを変えて何度か読み取りを再試行したり、その結果読み取りに成功しても一旦ペンディングにして次回のアクセスでミラーと照合したりと、データを保護する観点からは大変親切な設計です。chkdsk /r がディスクの全セクタをスキャンする際はこれとは異なる仕組みなのでしょうか。

例えば、もし、chkdsk /r が一回のトライで読み取れなかったセクタは全て不良セクタと判定するような不親切な仕組みだとしたら、データが失われる確率が高くなるので、実行前に現存するデータを必ずバックアップしておくべきという考えは理解できます。

この数日、この疑問に悩まされています。英語のソースを含め、疑問を解決する情報が見当たらず行き詰っています。

2

Re: chkdsk /r を実行するリスク

修復オプションを指定した「chkdsk」は、無害ではありません。
必ず、現在のファイルシステムの管理情報を上書きするからです。
不良セクタが存在しなくても、「chkdsk /f」でも、
今までアクセスできたファイルにアクセスできなくなる可能性はあります。

不良セクタの有無と、ファイルシステムの完全性は別の話です。
不良セクタがなくても、ファイルシステムに問題が発生することはあります。


esk2 さんのコメント:

私の理解では、ディスクのファームウェアは、あるセクターが一度で読み取れなかった場合は、ヘッドの磁力やタイミングを変えて何度か読み取りを再試行したり、その結果読み取りに成功しても一旦ペンディングにして次回のアクセスでミラーと照合したりと、データを保護する観点からは大変親切な設計です。chkdsk /r がディスクの全セクタをスキャンする際はこれとは異なる仕組みなのでしょうか。

異なるわけではありません。
ハードディスクのその仕組みも、常に狙ったとおりに機能するものではありません。
ハードディスクの信頼性は、そこまで高くないです。
大体、問題があるのはセクタではなく、ヘッドのほうなので。

たとえば、非常に状態の悪いハードディスクに対して「chkdsk」を実行すると、
ハードディスクの不良セクタを回避する仕組みがうまく機能せず、
しかし「chkdsk」は実行し続け、
ハードディスクのアクセスランプがついたままフリーズしたようになります。
強制終了するしかないのですが、当然ながら状況はさらに悪化します。

これは極端な例ですが、いずれにしても「chkdsk」による操作は元に戻せないので、
重要なデータがあるようなら、バックアップを最優先してください、ということです。
「chkdsk」を実行してどうにもならなくなったと持ってこられたパソコンは、
大概、もうどうにもなりません。

たとえば、当サイトで過去にあった問い合わせに、
「TestDisk」と「chkdsk」を併用して、しかも操作を間違えたという話がありましたが、
リカバリするしかなく、そうされたと記憶しています。

3

Re: chkdsk /r を実行するリスク

ruuroo さんお返事ありがとうございます。

chkdsk /f ですら安心して使えないとなると、ますますchkdskの使いどころが分からなくなりました。

私は、ディスクの問題を解決するなんらかの試みをする前には、このサイトや他の著作を参考にして、失っては困るデータを必ずバックアップを取っています。
とは言え、「大事なデータ」のうち特に頻繁に使うデータは、不具合があれば比較的早く気がついて、バックアップから復元する事ができますが、重要でも使う頻度が低いものは不具合があっても気が付きにくいし、そもそもバックアップの対象になりにくいと思われます。
つまり何が言いたいかと言うと、データを失う危険があるという前提がある以上、chkdskを実行することは、ディスク上のシステムやアプリケーションを含むあらゆるデータの信頼性を損ねるもので、有体に言えば、いつ爆発するか分からない地雷を、自ら眼を瞑ってばら撒いているかのようです。大袈裟かもしれませんが。
もしディスク上のデータの信頼性を維持したいのであれば、ファイルシステムの管理情報が壊れた、とか、不良セクターが見つかった等の問題が生じた場合には、大事なデータのバックアップを取った後は下手なことをせず、新品のハードディスクにシステムやアプリケーションをリストアすることではないかと言う気がします。立派な会社のデータセンターでもあるまいし、何もそこまで考えずとも、とも思いますが。
結局のところ、chkdskに限らず、調子の悪いディスクに何かを試みる場合は、本当に大事なデータとその他代替が効くデータを切り分け、前者を守るために後者が犠牲になるかもしれないという覚悟の上で行うべし、という事のような気がします。
何か思い違いをしていたら指摘してください。

4

Re: chkdsk /r を実行するリスク

esk2さんはちょっと神経質に考えすぎかもしれませんが、心配される気持ちはよくわかります。
書かれた内容は、的を射ています。


「chkdsk」は、有用です。
当サイトの「chkdsk」解説ページも、当サイト立ち上げ初期(10年以上前)に書いたものを元に修正を繰り返したものなので、
今回の一連のご質問を受けて、改めて書き直そうと思います。

私がこの記事で言いたかったことは、

  • 「chkdsk」による修復にはリスクがある

  • 「chkdsk /r」はハードディスクに対する負荷が高い

  • 「chkdsk /f」でことたりる場合がほとんど

というのが大部分です。
当時、「とりあえず「chkdsk /r」を実行しとけ」みたいな風潮があり、
「それはやめたほうがいい」というアンチテーゼのつもりでした。
お客さんのパソコンにいきなり「chkdsk /r」を実行して、
その後ハードディスクが読めなくなった現場を見ていますので。


「chkdsk」のリスクは、大きく2つに分けられます。

  • ハードディスクの損傷が進む

  • ファイルが消失することがある

つまり、物理的か論理的かの違いです。
前者はハードディスクの状態が末期的な場合で、イメージしやすいと思います。
多分、気になっているのは後者だと思いますが、
「chkdsk」で消失するファイルには、ある程度の傾向があります。

「chkdsk」も、積極的にデータを消すわけではありません。
できるだけ安全に動作しようとします。
「chkdsk」で修復を試みるということは、現状のファイルシステムに問題があるはずです。
この、ファイルシステムに問題が発生した、直前のファイル操作に関するファイルが影響を受ける可能性が極めて高いです。
従って、使う頻度が低いファイルは、壊れたり失われたりするリスクは低いです。

「chkdsk」によってファイルが削除されたとしても、ファイル復元ソフトを使ってファイルを復元すればよさそうですが、
ファイルが見つからなかったり、サイズが0バイトになっていて、データが失われていることがあります。
このため、ファイルを復元するならそっちが先で、「chkdsk」は後回しにすべきなのです。

それでも「chkdsk」が有用なのは、「chkdsk」で修復しなければ、ファイル操作ができないからです。
ファイルシステムに異常がある状態では、ファイルの保存、削除、編集ができないことがあります。
できるだけ現状を維持したまま、異常が発生したドライブを使い続けるためには、
「chkdsk」で修復するしかありません。


本当は、こういうのは百聞は一見にしかずで、私が何を書くよりも、
起動時に「chkdsk」が走って起動できないパソコンとか、
「chkdsk」を実行してファイルが消えた現場を目にするのが、一番わかりやすいんですけどね。

ソフトウェアは、データを失うことがないよう動作を試みますが、
ハードウェアは、いつどこでどのような不具合を起こすのか予測不能なので、
今ある状態でより良い選択をするしかありません。
本当に重要なデータが存在するなら、ミラーリングと定期バックアップを組み合わせるしかないと思います。
店のシステムがそうだったように。

私は極論、システムは動いてさえいればいいぐらいの気持ちで割り切っています。
たとえ欠損のないデータであったとしても、ソフトウェアにバグや欠陥はつきものなので。
世の中に完璧なものはありませんからね。

5

Re: chkdsk /r を実行するリスク

そもそも、普通に機器を使っている限りは、ファイルシステムが壊れるようなことはめったに起きないので、
そこまで心配する必要はないと思います。

6

Re: chkdsk /r を実行するリスク

ruurooさん、いつも丁寧にお返事頂きありがとうございます。
実は当方、ソフト屋の端くれで、PC込みで納品することが多いのですが、PCやWindowsには疎いのです。
ユーザーさんの多くはもっと疎くて、「普通の使い方」をしてくれません。PCが起動中でもお構いなしに電源ケーブルを抜きます。

そんなわけで、ファイルが壊れ(正確にはファイルシステムのテーブルにはエントリーがあるのにデータ本体は完全に書き込まれてなかった状態、でしょうか。)ソフトがそのファイルを開きに行く時にソフトがエラーを吐く、という場面にたまに出くわすのです。
以前、そういう現場の対応に行って、データをバックアップしている最中に壊れたファイルが見つかり、その後、「chkdskは壊れたファイルを直してくれる神ツール」という誤解のもと、chkdsk /rを実行したことがあります。その時chkdskの結果に当該ファイル名とともに初めて、「不良クラスター」という表示を目にしたのを憶えています。

先のruuroさんの返信の内容を踏まえると、こういう風に問題箇所が特定できている場合は、chkdsk /f は確かに安心して使えそうです。

私はこのサイトに出会うまで、先輩に教えられたとおり、定期点検と称してバックアップも取らずにユーザーのPCに修復オプションつきの「チェックディスク」をかけ、不良セクターが見つかると即ハードディスクの交換を勧めていました。無知とは本当に恐ろしいものです。

今、勉強のためにハードディスクの仕組みに関するちゃんとしたソースを探しています。問題があった時の対処法とそれを裏付ける基礎知識が網羅されたようなものがあるといいのですが、洋書でもなかなか良いものが見つかりません。お勧めがあれば教えてください。あつかましくてすみません。

7

Re: chkdsk /r を実行するリスク

そう、そういう本ってないんですよね。
あっても、内容が浅かったり、方向性が違ったり。

結論から言うと、ないと思います。
そんな本が世に出ないのも、なんとなく理解できます。
そういったノウハウは、パソコンの修理サポート業者にとって生命線だからです。

現場は応用問題なので、基礎から体系化されていないというのもあります。
私の当時の職場にも、マニュアルのようなものはなく、
「見て、やって覚えろ」みたいな感じでした。
お客さんが100人いれば、100通りの問題があったりするので。

私がパソコンの修理サポートを主にやっていた時、
パソコントラブルについてWebで検索すると、Yahoo!知恵袋ばかり表示され、
しかも未解決のまま、というのがほとんどでした。
でも、私は目の前にお客さんがいるわけで、どうにかしなければなりません。
で、どうしたかというと、ジャンク品を使っていろいろ実験したのです。
お客さんのパソコンで、いきなり実行するわけにはいきませんでしたから。

私の立場的にジャンク品が集まりやすく、しかもジャンク品になった経緯も知っているので、
不具合の再現実験をするには恵まれた環境だったと言えるかもしれません。
私の力不足で対応できなければ、
先輩や、メーカーに修理を依頼し、その結果から知識を得ることもありました。
要は、日々の業務で積み上げていくしかなんじゃないかと。

本当にお客さんって、「そんなことする?」っていう人いますからね。
そのおかげで発見できることもあるので、いいのか悪いのかわかりませんが。