不良セクターが3つあるハードドライブがあります。私はセクター番号を知っており、コンピューターはまだWindowsで起動できます。製造元のHDD診断ツールからセクター修復を実行したいのですが、その前に、どのファイルが影響を受けるかを知りたいのですが。これらのセクターを占有しているファイルを特定する方法はありますか?
これは、ドライブを直接調べて編集できる便利な16進エディターである WinHex を使用したプロセスです。 十分に注意してください。このツールを不適切に使用すると、システムに損傷を与える可能性があります。ディスクを開く読み取り専用可能な限り
不良セクターの場所はすでにあるため、WinHexでドライブを直接開き(「ディスクを開く」ツールバーボタン)、セクターに移動してデータを表示できます( "セクターに移動"ツールバーボタン)。セクターの場所が物理セクターアドレスであると仮定すると、この手順で物理ドライブを開く必要があります。
これはファイルを直接識別しませんが、左側のペインはこのセクターとそれに対応する相対セクターを含むパーティションを識別します 住所。
特定したパーティションがNTFSまたはFATパーティションである場合、そのパーティションを直接開くことができます( "ディスクを開く"をもう一度)。これにより、新しいタブでパーティションが開き、必要に応じて前後に切り替えることができます。パーティションタブで、「セクターに移動」関数をもう一度使用しますが、今回は、変換されたセクター(「相対セクター」ドライブビューで識別)。
これで、左側のペインに、「可視ドライブ領域の割り当て」に関するセクションが表示されます。この下には、クラスター#、物理セクター#、論理(相対)セクター#、およびこのセクターが実際にファイルに属している場合はファイル名があります。
これらの手順ですぐに答えが得られない場合は、不良セクターが使用されていない可能性があります。結果が不明確な場合は、答えを見つけるためにさらに掘り下げる必要があるかもしれません。
Nfi.exe-Windows NTファイルシステム(NTFS)ファイルセクター情報ユーティリティを試してください。 Microsoft OEM Support Tools Phase 3 SR2 からダウンロードします。
> nfi.exe
Dumps information about an NTFS volume, and optionally determines
which volume and file contains a particular sector.
Usage: nfi drive-letter [logical-sector-number]
Drive-letter can be a single character or a character followed
by a colon (i.e., C or C: are acceptable).
Logical-sector-number is a decimal or 0x-prefixed hex
number, specifying a sector number relative to the volume
whose drive letter is given by drive-letter. If not
specified, then information about every file on the volume
is dumped.
nfi NT-device-path physical-sector-number
Determines which volume a given physical sector on a drive is
within, and then which file on the volume it is in.
NT-device-path is the NT-style path to a physical device.
It must not include a partition specification.
Physical-sector-number is a decimal or 0x-prefixed hex
number, specifying a sector number relative to the physical
drive whose device path is given by NT-device-path.
nfi full-win32-path
Dumps information about a particular file. full-win32-path
must start with a drive letter and a colon.
「\\?」は省略しなければならないことに注意してください。ブロックデバイスパスのプレフィックス。例:
C:\Users\admin\Downloads>nfi \Device\Harddisk0\DR0 28521816
NTFS File Sector Information Utility.
Copyright (C) Microsoft Corporation 1999. All rights reserved.
***Physical sector 28521816 (0x1b33558) is in file number 5766 on drive C.
\IMAGES\win7HDD.vhd
$DATA (nonresident)
physical sectors 32863720-34098663 (0x1f575e8-0x2084de7)
physical sectors 28519912-32863719 (0x1b32de8-0x1f575e7)
physical sectors 25727944-26291143 (0x18893c8-0x1912bc7)
physical sectors 95163976-115106143 (0x5ac1648-0x6dc615f)
ほとんどの最適化プログラムは、ディスク上のすべてのクラスターを表示するディスクマップを表示します。ディスクマップをクリックすると(badとマークされているクラスターを探して)、そのクラスターにあるファイルを表示できます。
ウォルターが言ったように、過去10年ほどのディスクとOSのコンボは、不良セクターからファイルを自動的に再配置します(ドライブファームウェアは通常これを処理しますが、chkdsk
などのディスクツールまたはデフラグツールも通常これを実行します)。
デフラグラー:
ファイルのデフラグ:
Vopt:
DiskView Sysinternalsが提供するこの機能は、ドライブのディスクマップを表示し、どのクラスターがどのファイルを占有しているかを確認するためのものです。
残念ながら、システムファイルの名前を表示する方法がないようです。
管理者コマンドプロンプトからfsutil
を使用できます。サブコマンドvolume
にはquerycluster
サブサブコマンドがあります。 WindowsコマンドラインリファレンスFsutil を参照してください。
Fsutilは、セクター番号ではなく、論理ドライブのクラスター番号を入力引数として受け取ります。しかし、この数は簡単に計算できるはずです。
cluster#=(absolute_sector-start_of_partition_sector)/ ectors_per_cluster。
出力例:
c:\tmp> fsutil volume querycluster C: 5235
Cluster 0x0000000000001473, verwendet von
----D \Program Filesx86)\LibreOffice 4\program\fwilo.dll::$DATA
私が知る限り、ドライブがセクターで特定の数の読み取りエラーに遭遇すると、それは不良としてマークされ、その内容がドライブ上の別の場所にコピーされます。これは通常、そのセクターのデータが完全に読み取れなくなる前に発生します。
私はそのためのソースを掘り起こそうとします、それを昨日読んだだけですが、どこで思い出せないのですか。
from man hdparm(8) から
--repair-sectorフラグを使用すると、本当に不良だったセクターを含め、不要になった(すべての)不良セクターを復元できます(ドライブはメディア上の新しい領域に再マップする可能性があります)。
結論:不良セクターを気にする必要はありません。ハードドライブのファームウェアがそれを行います。あなたがしなければならないことは、それらが多すぎてドライブが死ぬ前に新しいドライブを取得することです。
RunTimeの DiskExplorer を使用すると、セクターごとにドライブを調べることができます。これは有料です(NTFSバージョンでは70ドル)が、無料で試用できます。 NTFS、FAT、Linux(ext2/3)用のバージョンがあります。
私はスレッドが古いことを知っていますが、記録のためにそのような問題を抱えているすべての人のために、linuxからそれをチェックする方法があります。実行が非常に簡単なslaxのように、cd/usbスティックでライブLinuxをいつでも使用できます。とにかく、ビジネスに戻ります。
私は今日、読み取り不可能なセクターの警告があるいくつかの賢いデーモンログを見つけ、それを調査することにしました。調査の結果、私は最終的に実行しました(#はroot特権を示すプロンプトです。通常のユーザーとして実行している場合は、代わりにSudoを使用できます)。
# smartctl -H /dev/sda2
SMART overall-health self-assessment test result: PASSED
これは、そのドライブがやや健康的であることを示しています。しかし、私はさらに調査し、badblocks
を実行しました。
# badblocks -v /dev/sda2 > ~/log/sda2.badsectors
# cat ~/log/sda2.badsectors
271521948
だから私がそれが属しているファイルを知りたいと思っていたいくつかのバッドブロックがありました それができた とdebugfs
、問題は私のパーティションがntfsだったので- ntfstools これがキーです:
# ntfscluster -s 271521948 /dev/sda2 > 271521948.secinfo 2>&1
# cat 271521948.secinfo | grep -v "extent"
Searching for sector 271521948
Inode 142427 /tmp/dl/setup_torch_2.exe/$DATA
* one inode found
/ grep -v "extent"
は、ntfscluster
によって表示される多くの不要な情報を取り除くことです/
したがって、ntfsの場合、必要なのはntfscluster -s $SECTOR
。