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 연결은 다소 임의적일 수 있습니다.

관련 정보