오준택군은 파일 시스템 및 스토리지 분야에서의 최신 연구 동향을 파악하고 공저자로 쓰여진 BarrierFS에 발표를 하기위해 16th USENIX Conference on File and Storage(FAST’18)에 참석하였습니다.
FAST’18은 스토리지 및 파일 시스템 분야를 다루는 저명한 국제 학술 대회이다. 2002년부터 매년 개최되어 오면서 스토리지 및 파일 시스템 분야에 크게 공헌을 해왔다. 해당 학술대회에 게재되는 논문을 발표하는 세션인 Technical Session에서는 총 8개의 주제의 세션에서 23편의 논문이 발표되었다. 또한, 해당 학회에서 게재되는 논문뿐만 아니라 Work in Progress로 발표되는 논문을 포스터로 발표하는 Poster Session도 진행되었다.
이번 FAST ‘18에서는 “New Media and Old” 주제로 게재된 “Barrier-Enabled IO Stack for Flash Storage”[2]의 저자로서 참석하였다. 저자로서 포스터 세션에서 연구성과와 논문 내용을 다른 사람들과 공유를 하는 기회를 가졌다. 뿐만 아니라, 우리의 논문[2]이 Best paper로 선정되어 매우 큰 영광이었다.
현지 시각으로 2월 13일 저녁에 “Barrier-Enabled IO Stack for Flash Storage” 논문[2]을 포스터로 발표했다. 그 중 인상 깊었던 질문이 몇가지 있었다. 먼저, Rollback Recovery 가능 여부에 관한 것이었다. 사용자 프로세스가 fbarrier ()를 호출한 뒤, Crash 상황이 발생했을 때, 사용자가 쓰기를 요청한 데이터가 손실되는데, 이를 어떻게 복구하는가에 대한 질문이다. fbarrier () 는 데이터를 스토리지까지 쓰는 것을 기다리지 않는다. 단순히, 명령어가 스토리지 내 커맨드 큐에 삽입되는 것만을 기다리고, 반환한다. 즉, fbarrier () 반환 시점에서는 데이터가 전부 스토리지에 전달되지 않았을 수 있다. 하지만, fbarrer () 는 순서 보장만을 위한 연산이다. fbarrier () 반환 시점에서 이후에 쓰여지는 데이터가 나중에 쓰여지는 것만을 보장하면 된다. 그래서, Crash 상황에서의 데이터를 복구할 필요가 없다.
다음 질문은 PREBARRIER라는 명령어를 추가해야 한다는 질문이었다. 현대 IO Stack은 순서보장을 할 데이터 쓰기 요청에 PREFLUSH와 FUA 명령을 설정한다. 해당 명령이 설정된 쓰기 요청은 다음과 같이 동작한다. 먼저 해당 쓰기 요청에 대한 데이터를 쓰기 전에 스토리지 캐시 내에 있는 데이터를 전부 Flush한다. 즉, 이전까지 스토리지 캐시에 썼던 모든 데이터의 내구성을 보장한다. 그 후, 해당 쓰기 요청에 대한 데이터를 스토리지 표면에 쓴다. 즉, 해당 쓰기 요청 처리 전후로 Flush를 수행하는 것이다. 이처럼 쓰기 요청 전후로 순서 보장을 하는 명령어인 PREBARRIER라는 명령어를 추가하면 좋을 것 같다는 질문을 받았다. 현재 BARRIER 명령어는 해당 명령이 설정된 쓰기 요청 후에 받은 요청들과의 순서만을 보장한다. 그래서, Barrier-Enabled EXT4에서 fsync () 중 저널링 동작에서 저널 디스크립터 블록과 로그 블록들에 대한 쓰기 요청들은 BARRIER 명령이 설정된다. 저널 커밋 블록과의 순서를 지키기 위해서다. PREBARRIER 명령이 생긴다면, 저널 커밋 블록에만 명령들을 설정해도 된다.
다른 논문들도 눈에 띄었다. 특히, 충북대에서 발표한 “RFLUSH: Rethink the Flush” 논문[1]이 눈에 띄었다. 해당 논문은 새로운 명령어인 RFLUSH를 소개하는 논문이었다. RFLUSH는 호스트가 정의한 LBA에 대해서만 FLUSH를 수행하는 명령어이다. 해당 RFLUSH 명령으로 인해 호스트는 FLUSH의 비용을 크게 줄일 수 있다. 하지만, 쓰기 요청들에 FUA 명령어만 설정한 것과 같은 효과를 보인다. 물론, 스토리지 표면에 대한 접근 횟수를 크게 줄일 수 있으나, 자세한 것은 저자에게 메일로 질문할 예정이다. 해당 논문은 우리가 발표한 논문인 “Barrier-Enabled IO Stack for Flash Storage”와 해결하려는 이슈가 비슷하지만 관점 및 해결 방식이 다르다. 두 논문 모두, Flush의 과도한 FLUSH 비용을 이슈로 하고 있다. 하지만, RFLUSH[1]는 Flush의 범위에 대한 것을 집중하고, 우리는 Flush의 순서 보장 분리에 대해서 집중하였다. 그 결과, 다른 논문이 같은 주제에서 발표되었다.
FAST ‘18은 스토리지 및 파일 시스템 분야를 다루는 국제 학술 대회 중, 세계적으로 저명한 학회이다. FAST ‘18 에 논문을 게재할 수 있던 것도 큰 영광인데, Best paper로 선정된 것은 매우 큰 영광이며, 대한민국의 기술력을 세계에 보인 것으로도 볼 수 있다. 이러한 논문을 세계의 연구자들에게 포스터로 공유하고, 다른 연구자들의 논문을 습득하여 앞으로의 연구 방향을 정하는데 큰 도움이 되었다.
[1] Yeon et al, “RFLUSH: Rethink the Flush”, FAST ‘18
[2] Won et al, “Barrier-Enabled IO Stack for Flash Storage”, FAST ‘18