11P by GN⁺ 3일전 | ★ favorite | 댓글 3개
  • Framework 노트북과 JBOD를 활용해 자체 S3 스토리지를 구축하여 10TB 용량을 저렴하게 운영하고 있으며, 4개월간 관리 없이도 안정적으로 작동
  • 화면이 없는 중고 Framework 노트북에 ZFS와 garage S3를 설치하여 홈 서버로 활용, AppGoblin의 SDK 추적 프로젝트를 위한 대용량 저장소로 사용 중
  • 4개월간 서버를 전혀 신경 쓰지 않았다가 로그인했을 때 10TB가 사용되었고 업그레이드 대기 상태였으며, 재시작 후에도 모든 것이 정상 작동
  • garage S3를 v1에서 v2로 업그레이드하는 과정도 문제없이 완료되어 안정적인 운영 경험 확보
  • USB로 노트북과 JBOD를 연결하는 비표준 ZFS 구성으로 초기에 문제가 있었으나, 메타데이터를 노트북 내부로 이동하여 해결

프로젝트 배경 및 동기

  • 5개월 전 자체 S3 호스팅 결정
    • AppGoblin의 상위 10만 개 Android 및 iOS 앱 SDK 추적 작업 진행 중
    • 대용량 저장 공간이 필요했지만 비용 절감을 원함
    • 기존 클라우드 S3 대신 셀프 호스팅 방식 선택

하드웨어 구성

  • Framework 노트북 활용
    • 화면이 없는 중고 Framework 노트북을 저렴하게 구매
    • 구형 모델이어서 홈 서버로 사용하기에 적합
    • 노트북의 휴대성과 저전력 특성 활용
  • JBOD(Just a Bunch of Disks) 추가
    • 대용량 저장을 위한 외장 디스크 어레이
    • USB를 통해 노트북과 연결

소프트웨어 스택

  • ZFS 파일 시스템
    • 데이터 무결성과 스냅샷 기능 제공
    • JBOD를 ZFS 풀로 구성
  • garage S3
    • 경량 분산 S3 호환 스토리지 솔루션
    • Deuxfleurs에서 개발한 오픈소스 프로젝트
    • S3 API 호환성 제공

4개월간의 무관리 운영

  • 설치 후 4개월간 서버를 전혀 신경 쓰지 않음
    • 여행, 업무, 바쁜 일상 중에도 S3는 지속적으로 사용
    • 서버에 대해 생각할 필요가 없었음
  • 로그인 후 발견한 사항
    • 10TB의 저장 공간이 사용됨
    • 시스템이 업그레이드를 위한 재시작을 참을성 있게 기다리고 있었음
  • 재시작 결과
    • 긴장하며 재시작을 실행
    • 모든 것이 정상적으로 다시 작동하여 안도

garage S3 업그레이드

  • v1에서 v2로의 업그레이드
    • 대기 중이던 주요 버전 업그레이드 발견
    • 업그레이드 과정이 문제없이 진행됨
    • 좋은 주말이었다고 평가

기술적 경고 사항 및 해결

  • 비표준 ZFS 구성에 대한 인지
    • USB를 통해 노트북과 JBOD를 연결하는 것은 다소 비표준적인 ZFS 사용 사례
    • Reddit 커뮤니티로부터 이에 대한 경고를 받음
  • 초기 문제 발생
    • garage가 대량의 읽기와 쓰기를 수행할 때 ZFS 문제 발생
    • 초기 설정에서 SQLite 메타데이터도 JBOD/ZFS에 저장되어 있었음
  • 문제 해결
    • 메타데이터를 노트북의 내부 스토리지로 이동
    • 이후 ZFS 문제가 해결되고 안정적으로 작동

자체 호스팅을 도전하는 것 자체가 대단합니다.

비록 가격대는 많이 차이가 나지만 Framework 메인보드가 현대의 라즈베리파이가 된 것 같네요

Hacker News 의견
  • 화면 없이 메인보드만 있다면 CoolerMaster와 같은 전용 케이스에 넣을 수도 있음 CoolerMaster Framework 케이스 링크
    • 이것들 정말 멋짐, 하지만 내가 강조하고 싶었던 건 이 노트북 자체가 굉장히 잘 동작함임, 팬 소리도 없고 발열도 거의 없음, 부하가 적을 때 전력소모도 정말 잘 함, 이런 부분들이 노트북이 이 용도에 딱 맞게 잘 맞는 이유라고 생각함
    • Framework 마켓플레이스에서 케이스 링크를 공유함 Framework 마켓플레이스 케이스 링크 구형 메인보드를 이 케이스에 넣어서 업그레이드 한 적 있음, VESA 마운트로 모니터 뒤에 붙여 데스크탑 PC로도 썼고 지금은 HTPC(홈씨어터 PC)로 사용 중임, 아주 만족함
    • 10인치 미니 랙도 좋은 대안임 DeskPi RackMate 10인치 미니 랙
  • 기술적인 부분이 더 궁금함, 직접 똑같이 따라해보고 싶다는 게 아니라 ZFS 풀 구성을 어떻게 했는지, 그리고 Garage가 알아서 다 구성하는지, 미러가 들어가 있는지 아니면 그냥 개별 풀들이 서로 다른 디스크로 동기화하는 구조인지가 궁금함, 나는 USB 디스크 2개를 써서 저렴하게 NAS 만들고 싶은데, ZFS 미러로 할지, 독립적으로 2개의 풀을 만들고 하나를 다른 하나 백업용으로 쓸지, 아니면 SnapRAID로 가서 구형 하드들을 섞어서 하드웨어 활용도를 극대화할지 고민임
    • ZFS 미러와 독립 풀 중에서 고민 중이라면, 미러로 하면 비트 로트 보호와 자동 복구 기능(스크럽)을 얻을 수 있고 읽기 속도도 빨라짐, 두 개의 크기가 비슷한 하드디스크만 있으면 ZFS로 미러 ZDEV를 기존 풀에 추가할 수도 있고, 새로운 백업 풀을 만들 수도 있음, 미러에 들어가는 두 개의 디스크끼리만 크기가 비슷하면 되고 풀 안의 모든 디스크가 똑같을 필요는 없음
    • Garage는 특정 방식에 얽매이지 않는 구조이며, ZFS 없이도 충분히 동작 가능함, 우분투에 ZFS를 별도로 설치 후 Garage 설치함, ZFS는 단순하게 RAID5/raidz1로 구성함, 전문가는 아니지만 용량이 33% 근접하니 다시 이 부분을 고려 중임, 이런 고민에서 예전에 HN에서 본 마법 같은 코멘트가 기억남 “나는 중요한 데이터 일부는 몇 시간치 손실도 감수할 수 있다 생각해서 미러 대신 독립된 1디스크 풀 두 개로 구성, 주 풀에 몇 시간마다 스냅샷 찍고 zfs send/recv로 백업 풀에 보내는 방식”, 이런 플로우가 내 용도에 더 잘 맞을 것 같고, 원래 RAID5는 디스크 한 개 장애 시에 대비해서였는데 다른 장소에 똑같이 구성하긴 비용이 (~$1,000 USD) 꽤 들어가서 아직은 실행 못함
  • Garage라는 것을 이번에 처음 알게 되었는데 꽤 흥미로움, 나는 업무에서는 S3를 자주 쓰고 개인 홈랩 백업은 borgbase에서 borg로 해왔음, 이번에 garage를 써서 로컬 노드와 AWS glacier를 붙여서 대용량 미디어 라이브러리 저렴하게 중복 저장하는 방법이 가능한지 궁금함, 모든 읽기 트래픽이 로컬 노드에서 되는지도 알고 싶음, TFA에서는 실제 Garage 사용 경험 얘기가 별로 없어서 실제로 셀프호스팅 목적으로 쓰는 분들 의견이 듣고 싶음, 편집: glacier에는 쓸 수 없다는 걸 알게 되었음, Garage 바이너리를 실행하는 EC2 인스턴스에서 파일 시스템으로 마운트되어야 하기 때문, 그냥 borg/restic으로 glacier에 백업 스케줄링하는 게 더 나음
    • 또 다른 대안으로는 ZeroFS가 있음, 데이터를 S3에 직접 저장할 수 있음 ZeroFS GitHub
    • AWS S3와 연동해서 적극적인 라이프사이클 정책을 걸어서 데이터를 짧은 기간 후 glacier로 자동 이동할 수 있음, 예전 직장에서 이 방법으로 구성한 적 있음, 몇 일 후에 표준에서 glacier로 이동되게 한 경험임, 본인 상황이라면 X를 1일로 두면 됨
    • Garage 자체를 직접 다룰 필요는 없었음, awscli, s3cmd, rclone, Boto3 같은 S3 API 도구로 충분히 활용 가능했음, Garage는 단 몇 개의 명령으로 간단히 세팅하고 한 번 돌리면 4개월 동안 계속 알아서 잘 돌았음, 이런 면에서 아주 만족함
  • 조용하면서도 성공적인 셀프호스팅 사례를 공유하고 싶었음
    • 이 JBOD가 SSD로 구성된 것인지 궁금함, 그 정도 수의 HDD면 꽤 시끄러울 수 있음
    • 옛날에는 “컴퓨터를 직접 소유해서 뭐라도 돌리는 것”이 ‘셀프호스팅’이라는 용어로 불리는 게 참 묘하게 다가옴, 모든 컴퓨터가 이제 남의 것인 시대처럼 느껴지고, 그래서 직접 쓰고 있다는 걸 특별히 언급해야 하는 시대 같음
  • 나는 구형 Dell T30에 10TB Seagate Exos 2개를 ZFS RAID1(미러)로 했을 때가 더 안전하게 느껴질 듯함, 제안된 방식은 매일 백업을 해도 매번 불안할 것 같음, Dell T30도 완벽하게 안심되지 않지만 그래도 디스크를 다른 장치에 붙이기도 쉽고, 케이블이 쉽게 빠질 걱정도 덜함, 그래도 Garage는 꽤 괜찮아 보여서 고마움
    • 나도 ZFS를 꽤 오래 썼는데, 많은 데이터는 몇 시간 정도의 손실은 감수할 수 있다는 결론에 다다름, 그래서 미러 대신 독립된 1디스크 풀 두 개를 만들어, 주 풀에 몇 시간마다 자동 스냅샷 ⇒ zfs send/recv로 백업 풀에 복제 구조임, 덕분에 유연하게 디스크를 혼합 사용 가능(예: 하나는 SSD, 다른 하나는 HDD 등), 단 읽기 속도와 가용 시간에서 타협 필요, 외장 하드를 백업 디스크로 삼아 며칠마다 연결하는 방법도 있음, 중요한 데이터는 미러된 RAID 풀 따로 갖고 있음, 많은 ZFS 글이 RAID에 집중되어 있는데 위에서 말한 하드웨어 최소화한 구성에 대해서는 정보가 부족한 것 같음
  • Framework가 여기서 특별히 뭔가 더해주는지는 잘 모르겠음, 나는 RPi5에 디스크 몇 개 붙여서 비슷한 수준으로 호스팅함, ZFS 대신 lvm2를 쓰는데 RPi5에서 잘 동작함, ZFS는 램을 너무 많이 써서 이 용도로 적합하지 않음
  • Garage 너무 좋아함, 그냥 알아서 잘 돌아감, 몇 대의 구형 Odroid HC2에서 Garage를 k8s Velero 백업 용도로 돌리고 있고, 셋팅 후 손댈 필요 없이 방치해도 알아서 유지 중임
  • Garage 얘기가 나와서 반가움, 나도 S3 호환 셀프호스팅 대안으로 결정할 때 Garage와 SeaweedFS 중 고민함, 내 경험상 SeaweedFS가 Garage보다 수동 설정이 덜 필요해 더 편했음
  • 멋진 결과임, 나도 Framework의 메인보드를 교체하고 나스 백업 전용으로 활용하려고 시도 중임, zfs 셋업을 좀 더 자세히 듣고 싶음, 스냅샷 전용 공간으로만 쓰고 싶은데 USB 연결 속도와 실수로 분리하면 데이터 잃을 것 같아 걱정임
  • Garage에 대한 예전 토론이 있음 Hacker News Previous Discussion