Linux에서 'barrier'마운트 플래그는 무엇을 의미합니까?


20

'배리어'마운트 옵션의 매뉴얼은 다음과 같습니다.

barrier = 0 / 배리어 = 1

이것은 jbd 코드에서 쓰기 장벽 사용을 비활성화 / 활성화합니다. barrier = 0은 비활성화하고 barrier = 1은 활성화합니다 (기본값). 또한 장벽을 지원할 수있는 IO 스택이 필요하며 jbd가 장벽 쓰기에서 오류가 발생하면 경고와 함께 장벽을 다시 비활성화합니다. 쓰기 장벽은 저널 커밋의 적절한 온 디스크 순서를 강제로 적용하여 휘발성 디스크 쓰기 캐시를 사용하기에 안전한 성능을 제공합니다. 디스크가 어떤 방식 으로든 배터리로 백업되는 경우 장벽을 비활성화하면 성능이 안전하게 향상 될 수 있습니다.

그러나 나는 " 저널 커밋의 디스크상의 올바른 순서 "라는 문장이 무엇을 의미하는지 모른다 .

정상적인 순서-저널 1, 데이터 1; 일지 2, 데이터 2.
다음을 설정하면 다음 순서 결과 중 어떤 것이 발생 barrier=0합니까?

  1. 저널 2, 데이터 2; 저널 1, 데이터 1;
  2. 데이터 1, 저널 1; 자료 2, 저널 2.

git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/… 는 아마도 가치있는 독서 일 것입니다.
Håkan Lindqvist

1
저널링 파일 시스템에 대해 읽으면 먼저 저널을 쓴 다음 저널을 실행하여 실제 데이터를 디스크에 쓰는 것이 중요하다는 것을 알게됩니다. 장벽은 저널이 실행되기 전에 저널이 작성되도록합니다. 그렇지 않으면 우리는 쓸모없는 일지.
ctrl-alt-delor

@richard BBWC hard raid에서 "nobarrier"플래그를 사용할 때 디스크는 데이터가 실행되기 전에 저널이 작성되도록 보장 할 수 없었습니다.이 조건은 중요하지 않습니까?
leafonsword

그것이 중요한지 알 수 없습니다. 나는 더 나쁜 것은 저널이없는 것만 큼 나쁘다고 생각하지만, 내가 읽은 것은 그렇게 나쁘지는 않지만 미묘함을 식별 할 수는 없다. 나는 barrier=1있고, 그것은 나를 위해 충분히 빨리 달린다. 당신이 진짜 무거운 일을하지 않는 한 나는 그것을 남겨 두었습니다. 램 버퍼가 있으므로 응용 프로그램 속도 저하 없이 가능한 한 물건을 쓸 수 있습니다 . 디스크에 쓰는 데 약간의 지연이 있습니다. 램 버퍼 속도를 확인하려면 홈 디렉토리에 sync = 1을 추가하고 시스템을 하루나 이틀 동안 사용해보십시오.
ctrl-alt-delor

답변:


15

대부분의 최신 파일 시스템은 저널링 파일 시스템이므로 저널이라는 내부 데이터 구조에서 디스크에 아직 기록되지 않은 변경 사항을 추적합니다. 충돌이 발생하면이 쓰기 저널이 재생되어 모든 쓰기가 성공적으로 수행되어 파일 손상을 방지합니다.

실제로 데이터를 디스크에 쓸 때 쓰기 캐시는 처리량을 최대화하기 위해 쓰기 순서를 다시 지정하지만 메타 데이터 전에 실제 파일 데이터가 디스크에 기록되어 충돌이 발생하지 않도록해야합니다. 메타 데이터가 데이터와 함께 오래되지 않습니다.

문제는 많은 디스크에 쓰기를 다시 정렬 할 수있는 자체 캐시가 있다는 것입니다. 일부 파일 시스템은 이러한 상황이 발생한다고 가정하고이를 방지하기 위해 디스크가 특정 지점에서 캐시를 플러시하도록 강제합니다 ( write barriers예 : ext4 및 일반적으로 Linux 라고 함) .

최신 디스크의 경우이 작업을 수행하기위한 성능 희생은 무시할만한 수준이며 절대적으로 필요한 경우가 아니면 쓰기 장벽을 비활성화해서는 안됩니다.


1

에서 이 LWN 기사 :

파일 시스템 코드는 [journaling] 커밋 레코드를 작성하기 전에 모든 트랜잭션 정보가 저널에 작성되었는지를 반드시 확인해야합니다. 올바른 순서로 쓰기를 수행하는 것만으로는 충분하지 않습니다. 최신 드라이브는 큰 내부 캐시를 유지 관리하고 성능을 향상시키기 위해 작업 순서를 변경합니다. 따라서 파일 시스템은 커밋 레코드를 쓰기 전에 디스크에 모든 저널 데이터를 미디어로 가져 오도록 명시 적으로 지시해야합니다. 커밋 레코드가 먼저 기록되면 저널이 손상되었을 수 있습니다. 커널의 블록 I / O 하위 시스템은 장벽을 사용하여이 기능을 사용할 수있게합니다. 본질적으로, 장벽은 장벽 이전에 기록 된 모든 블록이 미디어에 투입 될 때까지 장벽 이후의 블록의 기록을 금지한다. 장벽을 사용함으로써

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.