어떤 파일 시스템 메타 데이터 작업이 실제로 ext4 및 xfs로 저널링됩니까? 시스템 메타 데이터 작업이

어떤 파일 시스템 메타 데이터 작업이 실제로 ext4 및 xfs 파일 시스템 저널에 유지되는지에 대한 간단하고 직접적인 대답을 찾을 수 없습니다. 내가 참고 하지 POSIX는 “원자”로 선언 무엇인지에 대해 문의. 나는 항상 뒤로 구부리지 않고 저널을 활성화하여 실행함으로써 원자 파일 시스템 작업의 하위 집합이 효과적으로 내구성 이 있는지에 대해 더 걱정 fsync(2)하고 있습니다.

나는 상당히 확실하다.

  • creat(2)
  • link(2)
  • unlink(2)
  • rename(2)
  • mkdir(2)
  • rmdir(2)

확실하지 않은 작업 :

  • symlink(2)

symlink(2)경우입니다 어떤 간단한 방법이있을 것 같지 않기 때문에 대부분의 열세 fsync(2)또는 fdatasync(2)심볼릭 링크의 내용을 저장하는 기본 블럭 (datablocks). 저널이 나를 위해 이것을 처리한다는 것을 아는 것은 안도감이 될 것입니다.



답변

성능상의 이유로 기본적으로 ext4는 저널을 통해 파일 시스템 메타 데이터 만 작성합니다.

파일 시스템을 조정하지 않은 한 XFS는 모든 메타 데이터 트랜잭션도 저널링한다고 생각합니다.


답변

나는 뒤로 역으로 굽히지 않고 fsync (2)를 사용하지 않고 저널을 사용하여 실행함으로써 원자 파일 시스템 작업의 하위 집합이 효과적으로 내구성에 대해 더 걱정하고 있습니다.

없음 충돌 후에도 변경 사항이 지속되도록하려면 fsync 기간을 지정해야합니다. 저널링은 충돌 발생시 나열된 작업 중 절반도 수행 되지 않는다는 것을 보장합니다 .


답변

ext4 저널 은 블록 번호로 작동하지만 작동하지 않는다는 것을 알고 있습니까? “메타 데이터”는 문제의 블록을 수정하는 데 사용한 작업에 관계없이 주어진 inode에 대한 실제 데이터 블록 이외의 다른 것입니다.


답변

xfstests 는 디렉토리의 fsync ()가 포함 된 모든 심볼릭 링크를 유지해야한다고 주장하는 것 같습니다 .

나는 이것을 확인하지 않았다. 내가 뭔가를 놓쳤을 가능성이 있습니다.

xfstests는 많은 Linux 파일 시스템 개발자가 사용합니다. 이 테스트는 “generic”디렉토리에 있습니다. 모든 Linux 파일 시스템에 적용되어야 함을 의미합니다. (또는 적어도 모든 블록 장치 파일 시스템. 테스트는 특수한 가상 블록 장치를 사용하여 작동합니다).

https://github.com/kdave/xfstests/blob/master/tests/generic/348

# Test creating a symlink, fsync its parent directory, power fail and mount
# again the filesystem. After these steps the symlink should exist and its
# content must match what we specified when we created it (must not be empty
# or point to something else).