btrfs-check에서 "오류 2000, 링크 개수 오류" 오류를 자동 또는 수동으로 수정하는 방법

btrfs-check에서 "오류 2000, 링크 개수 오류" 오류를 자동 또는 수동으로 수정하는 방법

btrfs-check를 실행했는데 다음 오류가 발생했습니다.

$ sudo btrfs check --progress --force /dev/nvme0n1p7
Opening filesystem to check...
WARNING: filesystem mounted, continuing because of --force
Checking filesystem on /dev/nvme0n1p7
UUID: 0abfed09-85c5-44c3-8df1-8ed5db4bfe19
[1/7] checking root items                      (0:00:01 elapsed, 1111740 items checked)
[2/7] checking extents                         (0:00:10 elapsed, 148597 items checked)
[3/7] checking free space tree                 (0:00:00 elapsed, 330 items checked)
root 5 inode 14139676 errors 2000, link count wrong0:17 elapsed, 116205 items checked)
root 5 inode 14141114 errors 2000, link count wrong
root 5 inode 14141174 errors 2000, link count wrong
root 5 inode 14141175 errors 2000, link count wrong
root 5 inode 14141186 errors 2000, link count wrong
root 5 inode 14148125 errors 2000, link count wrong
root 5 inode 14148148 errors 2000, link count wrong
root 5 inode 14148168 errors 2000, link count wrong
root 5 inode 14148190 errors 2000, link count wrong
root 5 inode 14154429 errors 2000, link count wrong
root 5 inode 14154456 errors 2000, link count wrong
root 5 inode 14154459 errors 2000, link count wrong
root 5 inode 14154460 errors 2000, link count wrong
root 5 inode 14154468 errors 2000, link count wrong
root 5 inode 14154499 errors 2000, link count wrong
root 5 inode 14156088 errors 2000, link count wrong
root 5 inode 14156134 errors 2000, link count wrong
root 5 inode 14156137 errors 2000, link count wrong
root 5 inode 14157822 errors 2000, link count wrong
root 5 inode 14157857 errors 2000, link count wrong
root 5 inode 14157858 errors 2000, link count wrong
root 5 inode 14157859 errors 2000, link count wrong
root 5 inode 14157869 errors 2000, link count wrong
root 5 inode 14157870 errors 2000, link count wrong
root 5 inode 14157882 errors 2000, link count wrong
root 5 inode 14157919 errors 2000, link count wrong
[4/7] checking fs roots                        (0:00:18 elapsed, 117976 items checked)
ERROR: errors found in fs roots
found 313327153152 bytes used, error(s) found
total csum bytes: 303052904
total tree bytes: 2434465792
total fs tree bytes: 1940045824
total extent tree bytes: 117424128
btree space waste bytes: 467887914
file data blocks allocated: 350095093760
 referenced 275078295552

어떤 파일/경로가 손상되었는지에 대한 세부정보가 없습니다. 어떻게 수동으로 수정할 수 있나요?

업데이트 1:손상 범위를 확인하려고 할 때 다음 스크립트를 사용하여 위의 결함 있는 inode와 관련된 모든 파일을 찾았습니다.

#!/bin/bash

inode_list="14139676 14141114 14141174 14141175 14141186 14148125 14148148 14148168 14148190 14154429 14154456 14154459 14154460 14154468 14154499 14156088 14156134 14156137 14157822 14157857 14157858 14157859 14157869 14157870 14157882 14157919" # replace with your inode numbers
directory="/home" # replace with your directory

for inode in $inode_list
do
  echo "looking for inode $inode"
  find $directory -inum $inode
done

놀랍게도 파일이 발견되지 않았습니다.

$ sudo ./findINode.sh 
looking for inode 14139676
looking for inode 14141114
looking for inode 14141174
looking for inode 14141175
looking for inode 14141186
looking for inode 14148125
looking for inode 14148148
looking for inode 14148168
looking for inode 14148190
looking for inode 14154429
looking for inode 14154456
looking for inode 14154459
looking for inode 14154460
looking for inode 14154468
looking for inode 14154499
looking for inode 14156088
looking for inode 14156134
looking for inode 14156137
looking for inode 14157822
looking for inode 14157857
looking for inode 14157858
looking for inode 14157859
looking for inode 14157869
looking for inode 14157870
looking for inode 14157882
looking for inode 14157919

어떻게 이런일이 일어 났습니까? 이는 데이터 손실 없이 "위험한" 복구 옵션을 수행할 수 있다는 의미입니까?

업데이트 2:그래서 계속해서 삭제합니다.

inode_list="14139676 14141114 14141174 14141175 14141186 14148125 14148148 14148168 14148190 14154429 14154456 14154459 14154460 14154468 14154499 14156088 14156134 14156137 14157822 14157857 14157858 14157859 14157869 14157870 14157882 14157919" # replace with your inode numbers
directory="/home"

for inode in $inode_list
do
  echo "deleting inode $inode"
  find $directory -inum $inode -delete
done

그러나 문제는 여전히 존재합니다. 삭제된 것으로 추정되는 모든 inode가 여전히 btrfs 검사에 보고됩니다. 이는 구현 결함으로 인해 발생합니까? 제거하는 대안은 무엇입니까?

관련 정보