본질적으로 캐시된 데이터로 많은 공간을 사용하는 응용 프로그램이 있습니다. 사용 가능한 캐시가 많을수록 애플리케이션 성능이 향상됩니다. 우리는 수백에서 수천 테라바이트에 대해 이야기하고 있습니다. 블록이 손상되면 애플리케이션은 즉시 데이터를 재생성할 수 있으므로, 나의 주요 목표는 파일 시스템에서 캐시된 데이터에 사용할 수 있는 크기를 최대화하고 파일 시스템 오버헤드를 최소화하는 것입니다.
나는 모든 신뢰성과 유연성, 그리고 "다양성" 요구 사항을 기꺼이 희생할 것입니다. 가장 중요한 것은 응용 프로그램이 고정된 크기로 캐시 파일을 쓰기 때문에 특정 볼륨에 캐시 데이터 파일이 몇 개나 있는지 정확히 알 수 있다는 점입니다. 가끔 블록이 손상되면 파일을 새 파일로 덮어쓸 수 있으면 좋겠습니다.희귀한주변에 예비 inode가 있으며 필요한 경우 전체 볼륨을 다시 포맷할 수 있습니다. 이러한 파일은 파일 시스템의 1개 디렉터리 깊이에 저장됩니다. 예를 들어 디렉터리 이름은 단일 문자로 제한될 수 있으며 해당 디렉터리도 필요하지 않습니다. 모든 파일은 볼륨 루트의 최상위 수준에도 저장될 수 있습니다. 캐시된 데이터가 기록되면 파일은 읽기만 가능하며 볼륨은 읽기 전용으로 마운트될 수 있습니다. 캐시는 다음에 유효합니다.긴시간(년).
그렇다면 고정된 파일 크기를 정확히 알고 있고 안정성, 체크섬, 로깅 등에 문제가 없다면 어떤 파일 시스템을 사용해야 하며, 오버헤드를 최대한 제거하려면 어떻게 조정해야 할까요?
답변1
이전 파일 시스템에서는 포인터 페이지의 포인터를 사용하여 각 클러스터를 참조합니다. 그런 다음 32비트 포인터를 사용하면 4KB당 거의 4바이트가 "낭비"됩니다(0.1%). 많은 사람들이 그것을 감당할 수 있습니다.
최신 파일 시스템은 범위를 사용하므로 연속 블록이 있는 파일을 할당하면 단일 범위(N도착하다쌀). 그러면 오버헤드가 거의 없습니다. 우리 모두 알고 있듯이 Ext4, Reiserfs 및 XFS는 모두 범위 기반입니다. 그러나 100,000TB의 경우 ext4는 너무 제한적입니다. XFS 제한은 8엑사바이트입니다. 그러나 매우 큰 RAID0을 갖는 것은 좋은 생각이 아닌 것 같습니다. 어쩌면 응용 프로그램이 여러 파일 시스템을 처리하도록 해야 할 수도 있습니다.