XFSファイルシステムでinode番号に関連付けられたファイル名を見つける

XFSファイルシステムでinode番号に関連付けられたファイル名を見つける

私たちはinode番号を持ち、それを実際のファイル名に関連付けたいと思います。ファイルシステムはXFSです。xfs_dbおよび/またはを使用してこれを行うことができると主張するいくつかの例がありますが、xfs_ncheckこれまでこれを行うことに成功していませんでした。

はい

fdinfo私たちは、procsファイルに表示されるinode番号に関連付けられているファイル名を探している問題を分類しています/proc

$ grep inotify /proc/9652/fdinfo/23 | head
inotify wd:58eb9 ino:cfd30c7 sdev:20 mask:3c0 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:c730fd0c00000000
inotify wd:58eb8 ino:cfd1f09 sdev:1e mask:3c0 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:091ffd0c00000000
inotify wd:58eb7 ino:cfd1ee9 sdev:1a mask:3c0 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:e91efd0c00000000
inotify wd:58eb6 ino:cfd1ec8 sdev:1c mask:3c0 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:c81efd0c00000000
inotify wd:58eb5 ino:cfd1eb9 sdev:19 mask:3c0 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:b91efd0c00000000
inotify wd:58eab ino:cfd24cf sdev:20 mask:3c0 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:cf24fd0c00000000
inotify wd:58eaa ino:cfdbc51 sdev:1e mask:3c0 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:51bcfd0c00000000
inotify wd:58ea9 ino:cfdbc31 sdev:1a mask:3c0 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:31bcfd0c00000000
inotify wd:58ea8 ino:cfdbc0f sdev:1c mask:3c0 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:0fbcfd0c00000000
inotify wd:58ea7 ino:cfdb000 sdev:19 mask:3c0 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:00b0fd0c00000000

これらのinodeは16進数なので、10進数に変換する必要があります。

$ echo $((16#cfd30c7))
217919687

使用xfs_ncheck:

$ xfs_ncheck -i $(echo $((16#cfd30c7))) /dev/mapper/vg0-dockerlv
ERROR: The filesystem has valuable metadata changes in a log which needs to
be replayed.  Mount the filesystem to replay the log, and unmount it before
re-running xfs_ncheck.  If you are unable to mount the filesystem, then use
the xfs_repair -L option to destroy the log and attempt a repair.
Note that destroying the log may cause corruption -- please attempt a mount
of the filesystem before doing this.
must run blockget -n first

質問

  • XFSを使用してこれを行うにはどうすればよいですか?
  • 私はdebugfsとext3/4ファイルシステムで同様のことをしましたが、XFSではそれほど簡単ではありませんか?

引用する

答え1

理論的には、このコマンドは機能するはずですが、実際にはxfs_ncheckシェルスクリプトなので、ファイルxfs_dbシステムxfs_dbを完全にアンマウントすることをお勧めします。

# xfs_db /dev/SSD/root 
xfs_db: /dev/SSD/root contains a mounted filesystem
fatal error -- couldn't initialize XFS library

したがって、デフォルトでマウントされたファイルシステムの場合はまったく実行されず、マウント状態(暗黙的xfs_ncheck)を無視するには追加のオプションが必要ですが、それにもかかわらずマウントされたファイルや他のクリーンなファイルシステムでは、xfs_db関連するコマンドが期待どおりに機能しないことがよくあります。 。その後、再生が必要なログなどについて不明なメッセージが表示されます。

したがって、これらのコマンドを正常に実行するには、読み取り専用でアンマウントまたは再マウントするか、記録中のコピースナップショットを使用してクリーンなファイルシステムイメージを作成する必要があります。

ただし、通常のinode番号の場合は、マウントされたファイルシステムに次のものを使用することもできます。

find /path/to/mountpoint -xdev -inum X

ただし、削除されたファイルは見つからず、他のマウントポイントの下に隠されたファイルが失われる可能性があります(この場合はmount --bind代わりに考慮-xdev)。

また、ハードリンクなどの場合、inum-filename接続は多少ランダムになることがあります。

関連情報