Changwoo Hacks

Hack n. : A non-obvious solution to an interesting problem

2017/06/27

btrfs 사용

by 류창우

새 노트북에 리눅스를 설치하면서 파일시스템으로 btrfs를 사용하게 되었는데..

시작은 유행하는 랜섬웨어에 대한 대비책이 무엇일까 생각하면서부터였다. 의심스러운 앱을 아무리 샌드박스에 집어넣어서 격리해도 어차피 사용자의 문서 폴더는 열려 있어야 하므로 사용자 자료는 보호할 수 없다. 사용자 폴더에 접근할 수 있어야 “파일”->”열기” 메뉴에서 파일을 열어서 동작할 수 있을 테니까. 그렇게 보면 파일을 읽고 쓰는 대부분의 앱은 랜섬웨어에 필요한 모든 권한이 필요하다. 언제든지 무심코 다운로드한 악성 앱이, 또는 다른 앱의 취약점을 이용한 악성코드가 내 자료를 암호화해버릴지 모르는 일이다. 아이폰처럼 앱마다 데이터를 격리하는 방법도 있겠지만 불편하기 짝이 없다. 역시 백업을 열심히 하자는 결론에 다다를 수밖에 없는데.. 유저레벨에서도 Snapper(http://snapper.io/), dirvish와 같은 훌륭한 스냅샷 백업 툴이 많이 있지만 미묘하게 놓칠 가능성이 (race condition) 있는 등 아무래도 파일시스템 수준의 스냅샷의 대안으로는 모자란다.

일단 최신 버전의 커널과 btrfs-tools 사용은 필수. 최근 데비안 9.0 (stretch) 커널 4.9에서 스냅샷 기능은 꽤 안정적으로 동작한다. 위에서 언급한 Snapper를 btrfs와 같이 쓰면 파일시스템 내장 스냅샷 기능을 이용해 빠르고 공간 효율적으로 스냅샷을 만들어 주니 추천. (특별한 툴을 쓰지 않더라도 btrfs 내부에 스냅샷이 기록되지만 보기 좋게 끊어주는 툴이 있어야 좋다.) 노트북이나 데스크톱처럼 보통 1개 HDD/SSD에 사용하는 경우에는 큰 걱정하지 않고 쓸만하다고 생각한다.

하지만 “올인원” 파일시스템인 btrfs에 스냅샷 기능 외에 내장된 RAID나 암호화 같은 기능은 불안한 수준이고 최근에도 무서운 실패담이 많다. linux md의 raid 기능이나 dm crypt 같은 안정적인 대안이 있기 때문에 오히려 아직 수준이 올라오지 못했을 수도 있다. (시놀로지 NAS 제품이 btrfs를 사용하고 있다고 하지만 기존 linux md raid 위에 btrfs를 만들었지 btrfs 내장 raid는 쓰지 않는다고 함. https://goo.gl/pPgXva ) 그러니까 RAID나 암호화가 필요하면 btrfs 내장 기능을 쓰지 말고 md 또는 dm crypt를 사용한 후에 btrfs를 만드는 게 좋다. 이런 부족함에도 불구하고 스냅샷 기능 만으로도 btrfs는 사용할 만한 가치가 있다.

tags: btrfs