web-dev-qa-db-ja.com

特定のセクターを占有しているファイルを特定するにはどうすればよいですか?

不良セクターが3つあるハードドライブがあります。私はセクター番号を知っており、コンピューターはまだWindowsで起動できます。製造元のHDD診断ツールからセクター修復を実行したいのですが、その前に、どのファイルが影響を受けるかを知りたいのですが。これらのセクターを占有しているファイルを特定する方法はありますか?

35
Jason81

これは、ドライブを直接調べて編集できる便利な16進エディターである WinHex を使用したプロセスです。 十分に注意してください。このツールを不適切に使用すると、システムに損傷を与える可能性があります。ディスクを開く読み取り専用可能な限り

  1. 不良セクターの場所はすでにあるため、WinHexでドライブを直接開き(「ディスクを開く」ツールバーボタン)、セクターに移動してデータを表示できます( "セクターに移動"ツールバーボタン)。セクターの場所が物理セクターアドレスであると仮定すると、この手順で物理ドライブを開く必要があります。

    これはファイルを直接識別しませんが、左側のペインはこのセクターとそれに対応する相対セクターを含むパーティションを識別します 住所。

  2. 特定したパーティションがNTFSまたはFATパーティションである場合、そのパーティションを直接開くことができます( "ディスクを開く"をもう一度)。これにより、新しいタブでパーティションが開き、必要に応じて前後に切り替えることができます。パーティションタブで、「セクターに移動」関数をもう一度使用しますが、今回は、変換されたセクター(「相対セクター」ドライブビューで識別)。

    これで、左側のペインに、「可視ドライブ領域の割り当て」に関するセクションが表示されます。この下には、クラスター#、物理セクター#、論理(相対)セクター#、およびこのセクターが実際にファイルに属している場合はファイル名があります。

これらの手順ですぐに答えが得られない場合は、不良セクターが使用されていない可能性があります。結果が不明確な場合は、答えを見つけるためにさらに掘り下げる必要があるかもしれません。

22
quack quixote

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)
21
Robert Collier

ほとんどの最適化プログラムは、ディスク上のすべてのクラスターを表示するディスクマップを表示します。ディスクマップをクリックすると(badとマークされているクラスターを探して)、そのクラスターにあるファイルを表示できます。

ウォルターが言ったように、過去10年ほどのディスクとOSのコンボは、不良セクターからファイルを自動的に再配置します(ドライブファームウェアは通常これを処理しますが、chkdskなどのディスクツールまたはデフラグツールも通常これを実行します)。


デフラグラー:

enter image description here

ファイルのデフラグ:

enter image description here

Vopt:

enter image description here

8
Synetech

DiskView Sysinternalsが提供するこの機能は、ドライブのディスクマップを表示し、どのクラスターがどのファイルを占有しているかを確認するためのものです。

残念ながら、システムファイルの名前を表示する方法がないようです。

DiskView main windowDiskView system file

6
Synetech

管理者コマンドプロンプトから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
5
NorbertM

私が知る限り、ドライブがセクターで特定の数の読み取りエラーに遭遇すると、それは不良としてマークされ、その内容がドライブ上の別の場所にコピーされます。これは通常、そのセクターのデータが完全に読み取れなくなる前に発生します。

私はそのためのソースを掘り起こそうとします、それを昨日読んだだけですが、どこで思い出せないのですか。

from man hdparm(8) から

--repair-sectorフラグを使用すると、本当に不良だったセクターを含め、不要になった(すべての)不良セクターを復元できます(ドライブはメディア上の新しい領域に再マップする可能性があります)。

結論:不良セクターを気にする必要はありません。ハードドライブのファームウェアがそれを行います。あなたがしなければならないことは、それらが多すぎてドライブが死ぬ前に新しいドライブを取得することです。

3
Baarn

RunTimeの DiskExplorer を使用すると、セクターごとにドライブを調べることができます。これは有料です(NTFSバージョンでは70ドル)が、無料で試用できます。 NTFS、FAT、Linux(ext2/3)用のバージョンがあります。

alt text

2
quack quixote

私はスレッドが古いことを知っていますが、記録のためにそのような問題を抱えているすべての人のために、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

1
tansy