웨스턴 디지털이 새로운 리눅스용 파일 시스템인 Zonefs를 개발했습니다. EXT4, Btfs, XFS, ZFS 같은 범용 파일 시스템이 아니라 특수한 용도의 파일 시스템입니다.
SMR 하드디스크는 저장 밀도를 높이지만 성능과 안정성이 부족합니다. SSD도 사용하면 사용할수록 쓰기 속도나 내구성이 떨어지는 문제가 있습니다.
Zonefs는 하드디스크 LGA 공간을 여러 블럭으로 나누고, 각 블럭의 시작 부분부터 순서대로 데이터를 기록하도록 하며, 데이터를 마음대로 덮어 쓰지 못하게 합니다.
이렇게 하면 SMR 하드디스크나 SSD에서 데이터를 기록하는 문제를 해결해, 더 이상 랜덤 데이터 기록에 관련된 문제가 사라집니다. 처음부터 순서대로 기록하니까요.
아직까지 리눅스 소스 코드에 제출한 zonefs 파일 시스템 코드는 1500줄에 불과합니다. 어쨌건 파일 시스템을 완전히 대체하는 게 아니라 특별한 파티션을 위한 파일 시스템입니다.
B-tree는 “정렬이 잘 된” 형식 답게 새로운 데이터를 넣을 때, 일반적으로 썼던 자리를 읽어서 다시 쓰는 방식의 업데이트를 하게 됩니다. ram용량 대비 가격이 무지막지한 당시의 알고리즘 답게 ram은 그저 읽기 위주의 캐시로 사용되죠. 이런 탓에, 쓰기 성능에서 손해를 보는 경우가 많습니다. 쓰기 부하가 큰 최근의 데이터베이스 사용 형태를 생각해보면 꽤 큰 페널티입니다.
Lsm 트리의 경우에는 램을 많이 쓰는 대신 디스크에 저장할 때는 이미 저장된 녀석을 직접 읽어 수정하는 대신, 별도의 스레드가 이미 저장된 놈과 새로 써질 놈을 결합(merge)하는 형태로(실제 디스크에 쓸 때는 이것도 일종의 구역화를 통한 sharding을 합니다.) 진행하기 때문에 쓰기 성능이 크게 개선되는 탓에, 다수개의 코어가 보편화되어 있어 병렬 처리에 부담이 없고, 용량 큰 데이터를 핸들링해야 하는 현재의 추세에 맞는 백엔드가 되었지요.
원본 게시글에서도 언급된 내용 때문에 뻘글 같은 내용을 위에 달았는데요, 암튼 인접부위를 같이 갱신하는 탓에 업데이트 페널티가 큰 smr 하드디스크와, 이와 유사하게 셀 업데이트로 수명에 대한 페널티를 받는 ssd를 생각해보면 zonefs와 같이 구역화된 쓰기 구조를 파일시스템 단에서 제공함으로, 대용량 데이터를 다뤄야하는 데이텁이스를 구동할 파일시스템으로 쓰면 위의 두 페널티를 효과적으로 완화할 수 있을 듯 합니다. 일반적인 데스크탑이나 읽기 위주의 부하상황에서는 어울리지 않지만요.