저널링 파일 시스템은 정전 후 손상을 방지합니까?


28

우분투 대화방에서 문제를 제기 한 다른 사용자를 대신 하여이 질문을 하고 있습니다.

저널링 파일 시스템은 정전이 발생해도 손상이 발생하지 않도록 보장합니까?

이 답변이 파일 시스템에 따라 달라지면 손상으로부터 보호 할 수있는 것과 그렇지 않은 것을 표시하십시오.

답변:


21

보장은 없습니다. 저널링 파일 시스템은 복원력이 뛰어나고 부패하기 쉽지만 면역력은 없습니다.

모든 저널은 최근 파일 시스템에 수행 된 작업 목록입니다. 중요한 부분은 작업이 수행 되기 전에 분개가 작성된다는 것입니다 . 대부분의 작업에는 여러 단계가 있습니다. 예를 들어 파일을 삭제하면 파일 시스템의 목차에서 파일 항목을 삭제 한 다음 드라이브의 섹터를 사용 가능한 것으로 표시해야합니다. 두 단계 사이에 문제가 발생하면 저널 파일 시스템은 즉시 모든 것을 일관성있게 유지하기 위해 필요한 정리를 수행하고 수행 할 수 있습니다. 저널링되지 않은 파일 시스템의 경우에는 볼륨의 전체 내용을보고 오류를 찾아야합니다.

이 저널링은 저널링하지 않는 것보다 손상이 덜 발생하기는하지만 여전히 손상이 발생할 수 있습니다. 예를 들어, 하드 드라이브가 기계적으로 오작동하거나 저널 자체에 대한 쓰기가 실패하거나 중단 된 경우입니다.

저널링의 기본 전제는 저널 항목을 작성하는 것이 일반적으로 실제 트랜잭션보다 훨씬 빠르다는 것입니다. 따라서 OS가 (저널) 쓰기를 주문하는 것과 그것을 수행하는 하드 드라이브 사이의 기간은 일반적인 쓰기보다 훨씬 짧습니다.

추가 자료


왜 이것이 사실인지 조금 자세히 설명해 주시겠습니까? 특정 시나리오에서 손상이 발생하는 방법에 대한 예를 제공 할 수 있습니다.
Nathan Osman

1
@George Edison 확장 된 답변보기.
앤드류 램버트

2
마지막 비트가 잘못되었습니다. 잘못 될 일이 없습니다. 시작하기 전에 수행 할 작업을 기록하므로 작업 중 발생하는 지점에 관계없이 정전 후 작업을 다시 시작할 수 있습니다. 타이밍 문제가 아니라 주문 문제입니다.
psusi

@psusi에는 여전히 저널 쓰기가 중단되는 창이 있습니다. 저널 쓰기는 OS에 원자 적으로 나타날 수 있지만 여전히 디스크에 쓰기입니다.
앤드류 램버트

5
@ 시퀀스 번호 및 / 또는 체크섬이 있기 때문에 원자 적이므로 저널 항목이 완전히 기록되거나 기록되지 않습니다. 완전히 기록되지 않은 경우 시스템이 다시 시작된 후에는 무시되며 fs에 대한 추가 변경 사항이 없으므로 일관성을 유지합니다.
psusi

18

아니.

메타 데이터 저널링이라고하는 가장 일반적인 저널링 유형은 데이터가 아닌 파일 시스템의 무결성 만 보호합니다. 기본 모드 xfs에서는 및 ext3/ ext4가 포함 data=ordered됩니다.

비 저널링 파일 시스템에서 충돌이 발생 fsck하면 다음 부팅시 이를 검사 합니다. 파일 시스템에서 fsck모든 inode 를 스캔 하여 사용 된 것으로 표시되었지만 도달 할 수없는 (즉, 파일 이름이없는) 블록을 찾고 해당 블록을 사용하지 않는 것으로 표시합니다. 이렇게하는 데 시간이 오래 걸립니다.

메타 데이터 저널링 파일 시스템을 사용하면을 수행하는 대신 fsck변경 도중에 어떤 블록이 있는지 알고 있으므로 전체 파티션을 검색하지 않고도 사용 가능한 것으로 표시 할 수 있습니다.

데이터 저널링이라고하는 덜 일반적인 유형의 저널링이 있는데, ext3data=journal옵션을 사용하여 마운트하면 어떻게 됩니다 .

논리 연산 목록뿐만 아니라 각 쓰기의 전체 내용을 저널에 기록하여 모든 데이터를 보호하려고합니다. 그러나 데이터를 두 번 쓰기 때문에 속도가 훨씬 느려질 수 있습니다.

다른 사람들이 지적했듯이 하드 드라이브가 운영 체제에 데이터를 저장했다는 사실을 하드 드라이브의 캐시에 그대로 두었을 때 하드 드라이브가 운영 체제에 알릴 수 있기 때문에 이것이 보장조차되지 않습니다.

자세한 정보는 Wikipedia Journaling File System 기사ext4 문서 의 데이터 모드 섹션을 참조하십시오 .


1
파일 시스템 손상과 데이터 손상의 구별을 위해 +1 그 작은 구별은 실제로 두피입니다.
SplinterReality

내 무지 실례지만 data=journal, 기능으로는 전혀 이해 가되지 않습니까?
boehj

다시 한 번 OS는 드라이브가 데이터를 캐시하는 시점을 알고 일관성있는 fs를 유지하기 위해 필요할 때 강제로 플러시합니다. 전원이 꺼 졌을 때 데이터를 기록한 응용 프로그램이주의 깊게 수행하지 않았고 data = journal을 사용하는지 여부에 관계없이 적용되는 경우 데이터 파일이 손실되거나 손상 될 수 있습니다.
psusi

@psusi는 프로그램이 데이터를 쓰는 데 얼마나주의를 기울이지 않든, 많은 하드 드라이브가 자동으로 데이터를 손상시킵니다. stackoverflow.com/q/34141117/3338098
user3338098

@ user3338098, 데이터를 자동으로 손상시키는 드라이브는 끔찍하게 손상되어 사용해서는 안되며, 잘못된 일을하는 소프트웨어로 인한 손상과는 완전히 다른 대화입니다.
가우

8

파일 시스템은 전원 장애가 발생하면 하드웨어가 무엇을할지 모르기 때문에 파일 시스템의 일관성을 보장 할 수 없습니다.

하드 드라이브가 쓰기를 위해 데이터를 버퍼링하지만 OS에 데이터를 썼으며 적절한 쓰기 장벽을 지원하지 않는다고 알려 주면 이전 쓰기가 플래터에 닿지 않은 경우 비 순차적 쓰기가 발생할 수 있습니다. 있다. 자세한 내용은 이 serverfault 응답 을 참조하십시오.

또한 자기 HDD에서 헤드의 위치는 전자석으로 제어됩니다. 쓰기 도중에 전원 공급이 중단되면 헤드가 이동하는 동안 일부 데이터가 계속 기록되어 파일 시스템에 쓰려고하지 않은 블록의 데이터가 손상 될 수 있습니다.


드라이브의 펌웨어가 머리를 접을 때 쓰기를 일시 중지하기에 충분히 똑똑하지 않습니까?
Nathan Osman

@George : 드라이브에 따라 다릅니다. 거기에는 많은 것이 있으며 당신은 (싼) 드라이브가 얼마나 잘 작동하는지 알지 못합니다.
camh

1
하드 드라이브는 캐시 뒤에 쓰기를 사용하는지 OS에 알리고 OS가 올바른 순서로 플러시되도록 조치를 취합니다. 또한 드라이브는 전원이 꺼지면 쓰기가 중지되도록 설계되었습니다. ecc 업데이트가 완료되지 않았기 때문에 전원 손실시 쓰기중인 섹터가 손상되는 경우가 있지만 (정확하게 쉽게 다시 쓸 수 있음) 전원 손실로 인해 임의의 섹터가 손상되는 것을 들어 본 적이 없습니다.
psusi

3

저널링 파일 시스템은 아니지만 근접한 ZFS는 정전 후 손상이 발생하지 않도록 설계하여 보장합니다.

이러한 경우와 같이 중간에 진행중인 쓰기가 중단되는지 여부는 중요하지 않습니다. 체크섬은 확실히 올바르지 않으므로 블록이 무시됩니다. 파일 시스템이 쓰기시 복사이므로 이전의 올바른 데이터 (또는 메타 데이터)는 여전히 디스크에 있으며 대신 사용됩니다.


2

대부분의 경우 대답은 다음과 같습니다.

  • 이미 Mikel이 말했듯이 대부분의 저널링 파일 시스템은 파일 데이터 (파일 내용)가 아니라 파일 메타 데이터 (파일 이름, 크기, 권한 등의 정보) 만 보호 할 수 있습니다. 파일 데이터를 보호하면 파일 시스템이 매우 느려 (실제로는 쓸모없는) 파일 시스템이 만들어지기 때문에 이런 일이 발생합니다.
  • 저널은 하드 디스크에 저장된 특수한 종류의 파일이기 때문에 정전 후에 손상 될 수 있습니다. 따라서 저널이 손상되면 파일 시스템은 정전이 발생했을 때 발생한 불완전한 트랜잭션을 완료 할 수 없습니다.

어떤 사건으로 인해 저널이 손상 될 수 있습니까? 내가 생각할 수있는 유일한 것은 불량 섹터였습니다. 다른 것이 있습니까?
Nathan Osman

맞습니다. 하드웨어 고장이 일반적인 경우입니다.
사키 스크
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.