필자는 XFS가 시스템 부팅시 fsck를 구현하지 않았으며 저널링 파일 시스템에서 선전 된 이유 중 하나는 부정확 한 종료 후 파일 시스템이 일관된 상태를 유지하는 데 도움이된다는 것을 알았습니다. 다음 마운트 (예 : 재부팅 후)에서 저널이 재생됩니다.
부정한 종료 후에도 여전히 fsck가 필요합니까? 그 이유는 무엇입니까?
답변
나는 “journalled filesystems”의 일반적인 맥락에서 이것을 대답하고있다.
조만간 전원 코드 나 무언가 를 잡아 당겨 여러 번 “정상적인 셧다운” 을 한 경우, 파일 시스템 상태가 fsck
되거나 fsck와 같은 도덕적 수준에 도달 할 것이라고 생각합니다 xfs_repair
. ext4
내 랩톱 의 fileystsm은 대부분 재부팅 할 때마다 깨끗한 종료를 포함하여 저널을 재생 하지만 가끔씩 완전히 재생됩니다 fsck
.
그러나 “저널 재생”이 무엇을하는지 스스로에게 물어보십시오. 저널을 재생하면 나머지 파일 시스템의 디스크 블록이 저널 항목이 요구하는 순서와 일치하게됩니다. 저널 재생은 작은 것 fsck
또는 전체의 일부에 해당합니다 fsck
.
나는 저널을 재생하는 것이 전통적 일의 일부를 fsck
수행하고 xfs_repair
정확히 같은 종류의 프로그램 e2fs.fsck
(또는 다른 파일 시스템 fsck
)과 같은 것입니다. 방금 믿었던 XFS 사람들이나 그들의 경험으로 인해 xfs_repair
모든 부팅에서 실행되지 않고 저널을 재생하기도했습니다.
답변
부정확 한 종료 후 파일 시스템이 일관된 상태를 유지하도록 도와줍니다.
가장 먼저 주목할 것은 XFS, reiser 및 대부분의 ext 구성은 메타 데이터 저널링 만 구현한다는 것입니다. 이는 fsck를 피하는 것입니다. 저널은 시작시 항상 재생되지는 않습니다. 저널이 불완전하면 삭제 될 수 있습니다.
완전한 데이터 저널링을 지원하는 시스템이 있지만 실제로 메타 데이터 저널링에 대한 보장 수준은 실제 시나리오에서는 매우 작습니다.
따라서 ‘일관되지 않은 상태’와 fsck로 해결 된 문제는 메타 데이터와 파일 자체의 불일치입니다. 이를 피하기 위해 OS는 제안 된 메타 데이터 변경 사항을 저널에 기록한 다음 실제 데이터를 디스크에 기록한 다음 저널에 복제 된 메타 데이터 변경 사항을 디스크에 적용합니다. 이것의 유일한 캐치는 디스크 컨트롤러가 요청을 버퍼링하고 잠재적으로 재정렬한다는 것입니다. 이를 방지하기 위해 대부분의 저널링 파일 시스템은 장벽을 구현합니다. 각 작업을 분리하고 디스크가 작업을 완료했음을 확인하기를 기다립니다. 그러나 많은 최신 디스크는 실제로 데이터가 커밋되기 전에 쓰기 완료를 확인합니다. 따라서 일이 더러워 질 수 있습니다.
부정한 종료 후에도 여전히 fsck가 필요합니까?
대부분의 파일 시스템은 마운트 횟수를 유지합니다. 일단이 횟수에 도달하면 다음에 디스크를 마운트 할 때 전체 fsck가 트리거됩니다. 디스크 데이터가 소프트웨어에 버그없이 기록되지 않은 경우에도 디스크 데이터가 손상 될 수 있습니다. 위의 psusi의 의견이 잘못되었습니다.
답변
부정확 한 종료 때문에 단순히 저널링 파일 시스템을 fsck 할 필요가 없습니다.
전체 메타 데이터 저널링의 런타임 성능 저하를 지속 이유는 파일 시스템은 파일 시스템이 정상적으로 마운트 해제 아니었다면 자동으로 마운트 다음에 메타 데이터 로그를 재생하여 다시 일관된 100 %를 할 수 있도록하는 것입니다.
fsck의 유일한 역할은 메타 데이터 일관성을 보장하는 것이므로 파일 시스템이 올바르게 마운트 해제되지 않았기 때문에 fsck를 실행하는 것이 중복됩니다.
저널링 파일 시스템은 하드웨어 오류, 드라이버 버그, 관리자 오류 등 다른 이유로 손상 될 수 있으므로 fsck 도구가 반드시 필요합니다. 부정확 한 종료로 인해 단독으로 호출 할 이유가 없습니다.