ENOSPC : btrfs 잔액이 필요한 이유는 무엇입니까? 그것은 무엇을합니까?

iv id = “를 받으면서 단일 장치 파일 시스템에서 btrfs balance를 실행해야했습니다. daf4df6dc3 “>

실제로 여유 공간이 있었지만

이 작업을 실행해야하는 이유는 무엇입니까?

잔액은 실제로 어떤 역할을합니까?

Answer

대부분의 기존 파일 시스템과 달리 BTRFS는 2 단계 할당자를 사용합니다. 첫 번째 단계에서는 특정 유형의 데이터에 대해 청크로 알려진 넓은 공간 영역을 할당합니다. , 두 번째 단계는 이러한 큰 영역 내에 일반 파일 시스템과 같은 블록을 할당합니다. 세 가지 유형의 청크가 있습니다.

  • 데이터 청크 : 일반 파일 데이터를 저장합니다.

  • 메타 데이터 청크 : 타임 스탬프, 체크섬, 파일 이름, 소유권, 권한 및 확장 속성을 포함하여 파일에 대한 메타 데이터를 저장합니다.

  • 시스템 청크 : 이들은 다른 모든 청크가있는 위치에 대한 데이터를 저장하는 특별한 유형의 청크입니다.

청크가 할당 된 데이터 유형 만 해당 청크에 저장할 수 있습니다. 요즘 BTRFS에서 -ENOSPC 오류가 발생하는 가장 일반적인 경우는 파일 시스템이 기존 청크의 데이터 또는 메타 데이터를위한 공간이 부족하여 새 청크를 할당 할 수 없다는 것입니다. 다음 방법으로 확인할 수 있습니다. 오류가 발생한 파일 시스템에서 btrfs fi df를 실행 중입니다. 데이터 또는 메타 데이터 행에 사용 된 값과 크게 다른 합계 값이 표시되는 경우 이것이 원인 일 수 있습니다.

btrfs balance가하는 일은 할당자를 통해 일을 되돌려 보내는 것입니다. 이로 인해 압축되는 청크의 공간 사용량이 발생합니다. 예를 들어 두 메타 데이터 청크가 둘 다있는 경우 40 %가 차면 잔액이 80 % 차있는 하나의 메타 데이터 청크가됩니다. 이와 같이 공간 사용량을 압축하면 균형 작업이 현재 비어있는 청크를 삭제할 수 있으므로 새 청크 할당을위한 공간을 확보 할 수 있습니다. 잔액을 실행 한 후 btrfs fi df를 다시 실행하면 잔액이 더 이상 필요하지 않은 청크를 삭제했기 때문에 Total 및 Used 값이 서로 훨씬 더 가깝다는 것을 알 수 있습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다