ext 파일 시스템의 기본 예약 블록 비율은 5%입니다. 4TB 데이터 드라이브의 경우 200GB로 나에게는 너무 큰 것 같습니다.
분명히 이것은 tune2fs를 통해 조정될 수 있습니다:
tune2fs -m <reserved percentage> <device>
그러나 tune2fs의 매뉴얼 페이지에는 이러한 예약된 블록의 이유 중 하나가 조각화를 피하기 위한 것이라고 명시되어 있습니다.
따라서 다음 사항을 고려하십시오(큰 의견 차이를 피하기 위해 구체적으로 설명하려고 노력 중입니다).
- ~4TB 하드 드라이브
- 대용량 파일 저장용(모두 500MB 이상)
- 가득 차면 거의 쓰지 않습니다(한 달에 한 번 1~5개의 파일이 교체될 수 있음).
- 데이터만(드라이브에서 운영 체제나 애플리케이션을 실행하지 않음)
- 적당한 독서량(주당 약 20tb, 3개월에 한권씩 읽음)
- HDD 마모가 문제이고 20GB를 절약하기 위해 HDD를 없애는 것은 이상적이지 않습니다(아직도 문제인가요?).
조각화를 일으키지 않고(성능 및/또는 하드 드라이브 마모 관점에서 볼 때) 드라이브를 채울 수 있는 최대 비율은 얼마입니까?
빅 데이터 하드 드라이브를 높은 비율로 채우거나 예약된 블록 수를 0.1%로 설정하는 데 다른 문제가 있습니까?
답변1
단편화의 가장 큰 문제는여유 공간 잔해즉, 파일 시스템이 가득 차고 더 이상 여유 공간이 없으면 파일 시스템 성능이 급격하게 떨어집니다. 각각의 새 파일은 한 번에 작은 공간만 할당할 수 있으므로 매우 조각화되어 있습니다. 다른 파일을 삭제하더라도 이전에 기록된 파일은 디스크에 흩어져서 새로운 파일이 다시 조각나게 됩니다.
위에서 설명한 사용 사례(~500MB 파일, 상대적으로 적은 양의 새 파일 덮어쓰기 또는 쓰기, 오래된 ~500MB 파일의 주기적 삭제, 일종의 비디오 저장 시스템이라고 가정)에서는 조각화가 상대적으로 거의 발생하지 않습니다. - 파일을 가정합니다. 크기는 비교적 일정하게 유지됩니다. 쓰기가 단일 스레드인 경우 특히 그렇습니다. 여러 쓰기 스레드가 적은 양의 여유 공간을 놓고 경쟁하지 않고 블록 할당에 시차를 두지 않기 때문입니다. 디스크에서 제거된 모든 오래된 파일에 대해 수백 MB의 연속 공간을 확보하고(파일이 처음부터 조각화되지 않았다고 가정) 다시 채워집니다.
동시 작성자가 여러 명인 경우 fallocate()
각 파일에 대해 큰 공간을 예약하고 truncate()
마지막에 남은 공간을 비우면 조각화를 피할 수도 있습니다. 이것이 없어도 ext4는 최악의 조각화를 피하기 위해 파일을 쓸 때 약 8MB의 공간(메모리 내)을 예약하려고 시도합니다.
여유 공간을 모두 소모하지 않고 영구적인 여유 공간 조각화를 도입하지 않도록 여유 파일 크기의 적절한 배수(예: 16GB 이상)를 유지하는 것이 좋습니다.