13년차의 서버실

서버, 인프라, 홈랩 기술 블로그

[태그:] 데이터 마이그레이션

  • [클라우드] AWS GCS vs Azure Blob Storage, 실제 사용 비교와 마이그레이션 전략

    [클라우드] AWS GCS vs Azure Blob Storage, 실제 사용 비교와 마이그레이션 전략

    [클라우드] AWS GCS vs Azure Blob Storage, 실제 사용 비교와 마이그레이션 전략

    AWS GCS vs Azure Blob Storage 같은 검색어로 들어오시는 분들이 꽤 많습니다. 근데 여기서 먼저 짚고 갈 게 하나 있네요. AWS에는 Google Cloud Storage(GCS)가 없습니다. AWS의 객체 스토리지(Object Storage, 오브젝트 저장소)는 Amazon S3이고, GCS는 Google Cloud Storage입니다. 저도 현업에서 회의하다 보면 이 표현이 자주 섞이더라고요. 처음엔 ‘이게 뭔가 싶었는데’, 막상 마이그레이션(Migration, 데이터 이전) 설계 들어가면 이 용어 정리가 꽤 중요합니다.

    그래서 이 글에서는 검색 의도를 살려 AWS GCS vs Azure Blob Storage라는 키워드를 기준으로 설명하되, 실제 비교는 Amazon S3, Google Cloud Storage, Azure Blob Storage를 함께 놓고 보겠습니다. 특히 클라우드 스토리지 비교, 데이터 마이그레이션, 비용 최적화 관점에서 제가 직접 운영하면서 부딪혔던 포인트를 중심으로 정리해보겠습니다.

    AWS GCS vs Azure Blob Storage 비교를 위한 멀티 클라우드 아키텍처 이미지

    Amazon S3, Google Cloud Storage, Azure Blob Storage를 한눈에 비교하는 멀티 클라우드 아키텍처 개요 이미지입니다.

    1. 클라우드 스토리지 비교가 실무에서 중요한 이유

    객체 스토리지는 그냥 파일 올려두는 공간처럼 보이지만, 실제로는 백업(Backup, 백업 저장), 로그 적재(Log Ingestion, 로그 수집), 정적 웹 호스팅(Static Hosting, 정적 파일 제공), 데이터 레이크(Data Lake, 대용량 데이터 저장소)까지 거의 다 닿습니다. 한 번 올바르지 않게 설계하면 나중에 옮기는 비용이 꽤 커요. 진짜입니다.

    제가 홈랩(Home Lab, 개인 실험용 인프라)과 업무 환경에서 공통으로 느낀 건 이겁니다. 처음엔 API만 맞추면 다 비슷해 보이는데, 운영 들어가면 IAM(Identity and Access Management, 권한 관리), 네트워크 요금, 티어링(Tiering, 저장 계층 분리), 마이그레이션 툴에서 차이가 크게 납니다. 특히 여러 클라우드를 같이 쓰는 조직은 ‘어디에 원본을 두고 어디로 복제할지’부터 정책이 갈리거든요.

    2. 쉽게 말해, S3/GCS/Azure Blob은 무엇이 다를까요?

    쉽게 말해 셋 다 객체 스토리지입니다. 폴더처럼 보여도 실제로는 키(Key, 객체 이름) 기반으로 파일을 저장합니다. 서버에 디스크 마운트하듯 접근하는 블록 스토리지(Block Storage)와는 성격이 다르죠.

    • Amazon S3: AWS 생태계와 가장 자연스럽게 붙습니다. Lambda, Athena, CloudFront 같은 서비스와 연결이 편하더라고요.
    • Google Cloud Storage: GCP 데이터 분석 쪽, 특히 BigQuery나 데이터 파이프라인과 조합할 때 깔끔합니다.
    • Azure Blob Storage: Microsoft 생태계, 특히 Azure AD 기반 권한 관리와 기업 환경 연동에서 강점이 있습니다.

    여기서 중요한 포인트! 기능이 겹친다고 해서 운영 경험까지 같은 건 아닙니다. 예를 들어 버킷(Bucket, 객체 저장 컨테이너) 만들고 업로드하는 것까지는 다 쉬워요. 근데 권한 분리, 수명 주기(Lifecycle, 자동 보관 정책), 리전 간 복제(Replication, 데이터 복제)부터 슬슬 차이가 보입니다.

    3. 클라우드 스토리지 비교: 실무 기준으로 보면

    비교 항목 Amazon S3 Google Cloud Storage Azure Blob Storage
    기본 개념 Bucket 중심 객체 저장 Bucket 중심 객체 저장 Storage Account + Container 구조
    권한 모델 IAM, Bucket Policy, ACL IAM 중심 RBAC, SAS, Access Key
    생태계 연동 AWS 서비스와 강함 GCP 분석 서비스와 강함 Microsoft/Azure 서비스와 강함
    마이그레이션 난이도 도구 다양 gsutil 등 단순함 AzCopy 강력
    운영 포인트 정책 세분화 유리 구조 단순 기업 권한 체계와 잘 맞음

    제가 실제로 써보니까, S3는 유연성, GCS는 단순함, Azure Blob은 조직형 권한 관리 쪽으로 체감됐습니다. 물론 이건 워크로드(Workload, 실제 실행 업무)마다 다릅니다. 이미지 백업 위주인지, 데이터 분석용인지, 사내 파일 아카이브인지에 따라 느낌이 달라져요.

    3-1. 권한 관리가 생각보다 큰 차이를 만듭니다

    초기에는 업로드/다운로드만 되면 끝인 줄 알았는데, 운영하다 보면 누가 읽고 누가 쓰고 누가 삭제할 수 있는지가 가장 골치 아픕니다. S3는 Bucket Policy와 IAM Role 조합이 강력하지만 초반엔 살짝 복잡합니다. Azure Blob은 SAS(Shared Access Signature, 서명 기반 임시 접근 토큰)를 잘 쓰면 외부 공유가 편하더라고요. 다만 만료 시간과 권한 범위 관리를 대충 잡으면 나중에 추적이 어려워집니다.

    3-2. 비용 최적화는 저장 요금보다 전송 요금이 더 아픕니다

    이거 진짜 많이 놓칩니다. 많은 분이 GB당 저장 비용만 보시는데, 실제 청구서 보면 데이터 송신(Egress, 외부 전송) 비용이 체감상 더 아프게 들어올 때가 있습니다. 특히 멀티 클라우드 구조에서 한쪽에 저장하고 다른 쪽 컴퓨트에서 계속 읽는 구조는 생각보다 비효율적입니다. 비용 최적화 하려면 저장 위치와 소비 위치를 같이 봐야 합니다.

    4. 마이그레이션 전략: 제가 보통 이렇게 나눕니다

    데이터 마이그레이션은 무조건 한 번에 크게 옮기기보다, 단계별로 나누는 게 안전합니다. 저도 처음엔 ‘주말에 한 번에 끝내죠’ 했다가 삽질 좀 했습니다. 결국 안정적인 방식은 아래 순서더라고요.

    1. 데이터 분류: 정적 파일, 로그, 백업, 아카이브를 나눕니다.
    2. 권한 모델 정리: 기존 접근 정책을 새 환경에서 어떻게 매핑할지 정합니다.
    3. 소량 검증: 일부 Prefix(프리픽스, 객체 경로 묶음)만 먼저 옮깁니다.
    4. 동기화 반복: 초기 전체 복사 후 증분 동기화(Incremental Sync, 변경분만 반영)를 돌립니다.
    5. 애플리케이션 전환: 읽기 경로를 새 스토리지로 바꿉니다.
    6. 정합성 검증: 객체 수, 체크섬(Checksum, 무결성 검증값), 샘플 다운로드를 확인합니다.

    혹시 이런 경험 있으신가요? 데이터는 다 옮겼는데 애플리케이션이 예전 엔드포인트(Endpoint, 접속 주소)를 계속 바라보는 경우요. 이게 진짜 흔합니다. 그래서 저는 복사보다 전환 계획을 더 오래 잡는 편입니다.

    5. 실전 구현: S3에서 Azure Blob으로 옮길 때 기본 흐름

    여기서는 가장 많이 물어보시는 패턴 중 하나인 Amazon S3 → Azure Blob Storage 예시로 보겠습니다. 도구는 여러 가지가 있지만, 기본 원리는 비슷합니다. 중요한 건 사전 검증과 증분 동기화입니다.

    5-1. 사전 점검 체크리스트

    • 버킷/컨테이너 이름 규칙 확인
    • 객체 메타데이터(Metadata, 부가 속성) 유지 필요 여부 확인
    • 애플리케이션이 S3 API 의존인지 확인
    • 대용량 객체와 소형 파일 비율 확인
    • 암호화(Encryption, 데이터 암호화) 정책 확인

    5-2. AWS CLI로 원본 목록 확인

    aws s3 ls s3://example-bucket --recursive --summarize

    이 단계에서 총 객체 수와 대략적인 용량 감을 먼저 잡습니다. 저는 항상 이 결과를 따로 저장해둡니다. 나중에 검증할 때 기준점이 되거든요.

    5-3. Azure 쪽 컨테이너 준비

    az storage container create \
      --account-name mystorageaccount \
      --name archive-data \
      --auth-mode login

    Azure Blob은 Storage Account 아래에 Container를 두는 구조입니다. S3 버킷만 생각하고 접근하면 처음엔 약간 헷갈릴 수 있습니다.

    AWS GCS vs Azure Blob Storage 마이그레이션 흐름을 설명하는 동기화 구성 이미지

    S3 버킷에서 Azure Blob 컨테이너로 복사되는 흐름과 검증 단계를 표현한 구성 이미지입니다.

    5-4. AzCopy로 Azure 업로드 작업 예시

    실제로는 중간 서버를 두고 내려받았다가 다시 올리는 방식보다, 가능하면 공식 도구와 직접 경로를 검토하는 게 좋습니다. 예시는 로컬 검증용 흐름입니다.

    azcopy copy \
      "/data/migration" \
      "https://mystorageaccount.blob.core.windows.net/archive-data?<SAS_TOKEN>" \
      --recursive=true

    대규모 이전에서는 한 번에 끝내려 하지 말고, 테스트 Prefix부터 돌려보세요. 정말입니다. 저도 처음엔 전체부터 밀었다가 메타데이터 누락 확인하느라 다시 했었거든요.

    5-5. 매핑 정보를 남겨두는 설정 예시

    migration:
      source:
        type: s3
        bucket: example-bucket
        prefix: app-data/
      destination:
        type: azure-blob
        account: mystorageaccount
        container: archive-data
        prefix: app-data/
      validation:
        compare_object_count: true
        sample_download: true
        checksum_when_available: true

    이런 식으로라도 문서화해두면 팀 작업이 훨씬 편합니다. 나중에 ‘어디까지 옮겼죠?’ 하는 순간을 줄여주거든요.

    6. GCS에서 Azure Blob으로 옮길 때는 뭐가 다를까요?

    Google Cloud Storage에서 Azure Blob으로 이동할 때도 핵심은 비슷합니다. 다만 운영 도구가 달라집니다. GCS 쪽은 보통 gsutil이나 GCP 콘솔 기반 검증을 많이 쓰죠.

    gsutil ls -r gs://example-bucket

    GCS는 구조가 단순해서 처음 다루기 편한 편입니다. 근데 여기서도 조심할 게 있습니다. 애플리케이션이 GCS SDK나 이벤트 모델에 직접 의존하고 있으면, 저장소만 바꿔도 끝나지 않습니다. 저장 위치 이전과 애플리케이션 의존성 제거는 별개입니다.

    그래서 저는 마이그레이션 전략을 두 갈래로 봅니다.

    1. 저장소만 이전: 파일 위치만 바꾸고 앱은 최소 수정
    2. 플랫폼 의존성까지 제거: SDK, 이벤트, 권한 구조까지 같이 재설계

    시간이 없으면 1번으로 가되, 장기적으로는 2번을 준비하는 게 맞습니다. 멀티 클라우드 운영에서는 이 차이가 꽤 큽니다.

    7. ⚠️ 실제 겪었던 문제와 트러블슈팅

    7-1. 권한은 맞는데 접근이 안 되는 경우

    이거 정말 자주 봅니다. 키나 토큰은 있는데 네트워크 제한이나 퍼블릭 액세스 차단 정책 때문에 막히는 경우요. 특히 Azure는 계정 레벨 설정과 컨테이너 레벨 설정을 같이 봐야 할 때가 있습니다.

    • 확인 포인트: 계정 수준 퍼블릭 차단 여부
    • 확인 포인트: SAS 만료 시간
    • 확인 포인트: 방화벽/허용 IP 정책

    7-2. 파일은 다 갔는데 애플리케이션이 깨지는 경우

    원인은 대부분 경로 규칙 차이, 메타데이터 처리, 캐시(Cache, 임시 저장)입니다. 예를 들어 정적 웹 리소스는 Content-Type이 틀어지면 브라우저에서 바로 티가 납니다. 저는 이 부분 때문에 이미지가 다운로드로 열리는 문제를 겪었었는데, 메타데이터 재설정으로 해결했습니다.

    7-3. 작은 파일이 너무 많아서 속도가 안 나오는 경우

    대용량 단일 파일보다, 작은 파일 수십만 개가 더 까다롭습니다. API 호출 수가 많아지고 병렬 처리 튜닝이 필요하거든요. 이럴 땐 샘플 구간으로 성능을 먼저 재보고, 작업 창(Window, 이전 가능 시간)을 계산하는 게 안전합니다.

    AWS GCS vs Azure Blob Storage 이전 중 권한 오류와 검증 포인트를 보여주는 이미지

    권한 오류, 메타데이터 누락, 경로 불일치 같은 대표적인 마이그레이션 문제를 요약한 트러블슈팅 이미지입니다.

    8. 검증과 결과 확인: 여기까지 해야 진짜 끝입니다

    복사가 끝났다고 끝이 아닙니다. 검증(Validation, 결과 확인)이 빠지면 운영 전환 후 사고가 납니다. 저는 최소한 아래 네 가지는 꼭 봅니다.

    1. 객체 수 비교: 원본과 대상의 총 개수 확인
    2. 샘플 다운로드: 랜덤 파일 몇 개 직접 열어보기
    3. 애플리케이션 테스트: 실제 서비스 경로에서 읽기 확인
    4. 로그 모니터링: 403, 404, 타임아웃 여부 확인
    aws s3 ls s3://example-bucket --recursive | wc -l
    az storage blob list \
      --account-name mystorageaccount \
      --container-name archive-data \
      --num-results "*" \
      --auth-mode login

    실제로 써보니까, 숫자만 맞는다고 안심하면 안 되더라고요. 샘플 파일 열어보면 메타데이터나 인코딩 문제를 발견하는 경우가 있습니다. 드디어 됐다! 싶었는데 마지막 검증에서 다시 되돌아간 적도 있었네요.

    AWS GCS vs Azure Blob Storage 비교 후 마이그레이션 결과 검증 대시보드 이미지

    객체 수, 오류율, 전환 완료 상태를 보여주는 운영 검증 대시보드 이미지입니다.

    9. 정리: 어떤 선택이 더 나을까요?

    결론부터 말씀드리면, 어느 스토리지가 무조건 더 좋다기보다 현재 워크로드와 조직 구조에 더 잘 맞는 쪽이 있습니다.

    • AWS 중심 운영이면 Amazon S3가 가장 자연스럽습니다.
    • GCP 분석 워크로드가 많으면 Google Cloud Storage가 편합니다.
    • 기업 권한 체계와 Microsoft 생태계가 중요하면 Azure Blob Storage가 강점이 있습니다.

    다만 AWS GCS vs Azure Blob Storage처럼 검색하신 분이라면, 실제 의사결정에서는 S3 vs GCS vs Azure Blob 세 축으로 다시 정리해보시는 걸 권합니다. 이름이 섞인 상태로 비교를 시작하면 요구사항도 같이 꼬이거든요.

    제가 직접 해보니 마이그레이션 전략에서 제일 중요한 건 화려한 도구보다 정합성 검증, 권한 설계, 전환 순서였습니다. 이 세 가지만 잡아도 실패 확률이 확 줄어듭니다. 다음 글에서는 S3 호환(Object Storage Compatibility) 스토리지를 포함해서 MinIO 같은 대안까지 비교해볼 예정입니다. 이전 글에서 다뤘던 백업 정책 설계 글과 함께 보시면 더 연결이 잘 되실 겁니다.

    FAQ

    AWS GCS라는 서비스가 정말 있나요?

    아닙니다. AWS의 대표 객체 스토리지는 Amazon S3이고, GCS는 Google Cloud Storage입니다. 검색어에서 두 이름이 섞여 쓰이는 경우가 많습니다.

    마이그레이션 시 가장 먼저 볼 항목은 뭔가요?

    저는 권한 모델과 데이터 전송 경로를 먼저 봅니다. 저장 요금보다 전송 요금과 접근 실패가 더 큰 문제를 만들 때가 많거든요.

    비용 최적화는 어떤 방식으로 접근하면 좋나요?

    저장 계층(Tier)만 보지 말고, 데이터가 어디서 생성되고 어디서 읽히는지를 같이 봐야 합니다. 특히 멀티 클라우드에서는 Egress 비용을 꼭 확인하세요.

    워크로드, 권한, 비용, 마이그레이션 난이도 기준으로 세 스토리지를 요약 비교한 인포그래픽입니다.

  • [NAS] TrueNAS CORE에서 SCALE로: 안전한 데이터 마이그레이션 전략

    [NAS] TrueNAS CORE에서 SCALE로: 안전한 데이터 마이그레이션 전략

    TrueNAS CORE에서 SCALE로 넘어가는 여정은 많은 홈랩 사용자나 소규모 기업 NAS 관리자분들이 한 번쯤 고민해봤을 주제일 겁니다. 저도 13년차 인프라 엔지니어로서 그동안 TrueNAS CORE(이전 FreeNAS)를 정말 잘 써왔거든요. 안정적인 ZFS 파일 시스템과 FreeBSD의 견고함은 데이터를 보관하고 공유하는 데 정말 훌륭했어요.

    근데 말이죠, 요즘은 NAS 하나만으로 단순한 파일 서버 역할만 하기엔 아쉬움이 많잖아요? Docker 컨테이너나 가상 머신(VM)을 돌려서 다양한 서비스를 한 번에 운영하고 싶은 욕구가 스멀스멀 올라오더라고요. CORE의 Jail 기능도 훌륭하지만, 역시 리눅스 기반의 범용성과 확장성에는 한계가 있었습니다. 그래서 저도 작년에 TrueNAS CORE 마이그레이션을 결심하고 TrueNAS SCALE 전환을 시도했었죠. 이 과정에서 겪었던 삽질과 노하우를 오늘 탈탈 털어보려고 합니다. NAS 데이터 옮기기가 막막하셨던 분들께 좋은 가이드가 될 거예요!

    TrueNAS CORE에서 SCALE로 안전하게 마이그레이션하는 전체 로드맵

    ✅ CORE vs. SCALE: 무엇이 다른가요?

    마이그레이션 전략을 짜기 전에, 먼저 CORE와 SCALE의 근본적인 차이점을 이해하는 게 중요합니다. 쉽게 말해, 운영체제 자체가 완전히 다르거든요.

    • TrueNAS CORE: FreeBSD 기반으로, ZFS 파일 시스템의 강력함을 자랑합니다. 플러그인과 Jail(격리된 환경)을 통해 추가 기능을 제공하지만, Docker나 KVM 같은 현대적인 가상화 기술과는 거리가 있습니다. 안정성과 데이터 무결성에 강점이 있죠.
    • TrueNAS SCALE: Debian Linux 기반으로, CORE의 ZFS를 그대로 가져오면서 KVM(가상 머신)과 Docker/Kubernetes(앱) 지원을 추가했습니다. 한마디로 ‘리눅스 기반의 ZFS NAS + 컨테이너/VM 플랫폼’인 셈이죠. 확장성과 유연성이 뛰어나 홈랩 사용자들에게 특히 인기가 많습니다.

    제가 직접 써보니, CORE는 ‘데이터 금고’ 역할에 충실했다면, SCALE은 ‘데이터 금고에 스마트홈 기능까지 더한 만능 서버’ 느낌이더라고요. 그래서 FreeNAS TrueNAS 이전을 고민하는 분들이라면, 장기적인 관점에서 SCALE로의 전환을 진지하게 고려해볼 만합니다.

    💡 안전한 데이터 마이그레이션을 위한 사전 준비

    데이터 마이그레이션에서 가장 중요한 건 뭐니 뭐니 해도 데이터 안전성입니다. 아무리 좋은 기능이 추가된다고 해도 데이터가 날아가면 모든 게 의미 없잖아요? 제가 겪은 경험을 바탕으로 몇 가지 중요한 준비 사항을 알려드릴게요.

    1. 데이터 백업 (최중요!): 이건 두 번 강조해도 지나치지 않습니다. 중요한 데이터는 반드시 다른 저장장치에 백업해두세요. 저는 외장하드에 한 번, 클라우드에 한 번 더 백업했습니다. ⚠️ 만약의 사태에 대비하는 유일한 방법입니다.
    2. TrueNAS CORE 설정 백업: GUI에서 System → General → Save Config를 통해 현재 CORE의 설정 파일을 백업해둡니다. 사용자 계정, 네트워크 설정, 공유 폴더 설정 등이 포함되어 있습니다. 나중에 SCALE에서 참고하거나, 혹시 CORE로 롤백할 때 유용해요.
    3. 하드웨어 호환성 확인: TrueNAS SCALE은 CORE보다 요구 사양이 약간 더 높을 수 있습니다. 특히 메모리는 8GB 이상을 권장하며, Docker/KVM을 많이 쓸 예정이라면 더 높으면 좋죠. CPU도 가상화 기능(VT-x/AMD-V)을 지원하는지 확인하세요.
    4. 새로운 부트 드라이브 준비: CORE에서 사용하던 부트 드라이브(USB 또는 SSD)를 그대로 SCALE용으로 사용하는 것보다는, 새로운 드라이브에 SCALE을 설치하는 것을 강력히 권장합니다. 기존 CORE 부트 드라이브는 만일을 대비해 보관해두세요.

    🛠️ TrueNAS CORE에서 SCALE로: 단계별 마이그레이션

    이제 본격적으로 마이그레이션 과정을 시작해볼까요? 저는 기존 ZFS 풀은 그대로 유지하고, 운영체제만 CORE에서 SCALE로 바꾸는 전략을 사용했습니다. 이 방법이 가장 안전하고 효율적이더라고요.

    1. TrueNAS CORE에서 ZFS Pool Export

    가장 먼저 할 일은 CORE 시스템에서 현재 사용 중인 ZFS 풀을 안전하게 분리하는 겁니다. 이 과정은 데이터 삭제가 아니니 걱정하지 마세요.

    1. CORE 웹 GUI에 로그인합니다.
    2. Storage → Pools로 이동합니다.
    3. 마이그레이션할 ZFS 풀을 선택하고, 오른쪽 점 세 개 아이콘을 클릭한 후 Export/Disconnect를 선택합니다.
    4. 데이터는 유지하고 풀만 분리하는 옵션을 선택하고 진행합니다. ⚠️ 이 단계에서 ‘Destroy data’ 옵션을 절대 선택하지 마세요!

    풀이 성공적으로 Export 되면, 해당 풀에 연결된 디스크들이 시스템에서 해제됩니다. 이제 CORE 시스템은 종료해도 좋습니다.

    2. TrueNAS SCALE 설치

    CORE 시스템의 전원을 끄고, 기존 CORE 부트 드라이브를 제거한 뒤, 미리 준비해둔 새로운 부트 드라이브를 장착합니다. 그리고 TrueNAS SCALE 설치 미디어(USB)로 부팅하여 설치를 진행합니다.

    설치 과정은 일반적인 리눅스 설치와 유사합니다. 새로운 부트 드라이브에 SCALE을 설치하고, 네트워크 설정 등을 완료합니다. 설치가 끝나면 SCALE 웹 GUI에 접속할 수 있습니다.

    3. TrueNAS SCALE에서 ZFS Pool Import

    SCALE이 성공적으로 설치되고 웹 GUI에 접속했다면, 이제 기존 ZFS 풀을 가져올 차례입니다.

    1. SCALE 웹 GUI에 로그인합니다.
    2. Storage → Pools로 이동합니다.
    3. 오른쪽 상단의 Add 버튼을 클릭하고 Import an existing pool을 선택합니다.
    4. 시스템이 자동으로 연결된 디스크에서 ZFS 풀을 검색합니다. 검색된 풀 목록에서 이전에 CORE에서 사용하던 풀을 선택하고 Import를 진행합니다.

    성공적으로 임포트되었다면, Storage → Pools 화면에서 기존 풀과 데이터셋이 모두 정상적으로 표시될 겁니다. 드디어 데이터가 돌아온 거죠! 🎉

    TrueNAS SCALE 웹 GUI에서 ZFS 풀을 임포트하는 화면

    TrueNAS SCALE 웹 인터페이스에서 기존 ZFS 풀을 성공적으로 임포트하는 모습입니다. 이제 여러분의 소중한 데이터가 SCALE에서도 정상적으로 인식될 거예요.

    4. 서비스 재설정 (SMB/NFS 공유, 사용자, 앱 등)

    데이터는 돌아왔지만, 공유 설정이나 사용자 계정, 그리고 CORE에서 사용하던 Jail 기반 앱들은 다시 설정해줘야 합니다. 이건 어쩔 수 없는 부분이에요.

    • 사용자 및 그룹: CORE 설정 백업 파일을 참고하여 사용자 계정과 그룹을 다시 생성합니다. 기존의 UID/GID를 최대한 맞춰주는 것이 나중에 권한 문제로 삽질하는 걸 줄일 수 있습니다.
    • SMB/NFS 공유: Shares 메뉴에서 SMB(Windows 공유)나 NFS(Linux/macOS 공유)를 새로 생성하고, 기존 데이터셋에 연결합니다.
    • 앱 (Docker, VM): CORE의 Jail 앱들은 SCALE의 Docker 컨테이너나 KVM 가상 머신으로 새로 구성해야 합니다. 이게 SCALE로 마이그레이션하는 주된 이유 중 하나이니, 이참에 Docker Compose나 Kubernetes 앱들을 탐색해보는 것도 좋습니다.

    ⚠️ 주의사항 및 트러블슈팅: 삽질 경험담

    제가 직접 FreeNAS TrueNAS 이전을 하면서 겪었던 몇 가지 문제점과 해결책을 공유합니다. 저처럼 삽질하지 마시라고요! ㅎㅎ

    문제점 원인 해결 방법
    ZFS 풀 임포트 실패 아주 오래된 CORE 버전의 ZFS 풀이거나, 풀이 손상된 경우 먼저 CORE에서 zpool status로 풀 상태 확인. 손상되었다면 복구 시도. 버전 문제라면 CORE를 최신 버전으로 업데이트 후 다시 Export.
    네트워크 접속 불가 SCALE 설치 시 네트워크 설정 오류, 혹은 IP 주소 충돌 SCALE 콘솔에서 ip addr로 IP 확인, ping google.com으로 외부 연결 확인. 필요시 network 명령어로 재설정.
    SMB/NFS 공유 권한 문제 사용자/그룹 UID/GID 불일치, 또는 공유 설정 오류 CORE 백업 파일에서 UID/GID 확인 후 SCALE에서 동일하게 생성. 공유 설정 시 ACL 권한을 다시 설정하거나, Everyone read/write로 임시 테스트 후 세분화.
    CORE의 Jail 앱 대체 CORE의 Jail은 SCALE에서 직접 호환되지 않음 Docker Compose나 TrueNAS SCALE Apps(Kubernetes)를 활용하여 동일한 기능을 하는 컨테이너/앱으로 대체 설치.
    TrueNAS CORE와 SCALE의 핵심 기능 비교 인포그래픽

    TrueNAS CORE와 SCALE의 주요 기능 비교표입니다. CORE의 안정성과 SCALE의 현대적인 유연성을 한눈에 비교할 수 있습니다.

    ✅ 마이그레이션 결과 및 검증

    모든 설정이 끝나면, 이제 제대로 작동하는지 확인하는 단계입니다. 저의 경우, 다음 몇 가지를 중점적으로 확인했어요.

    1. 데이터 무결성 확인: 가장 중요한 부분이죠. 기존 데이터셋에 접근하여 파일들이 손상 없이 잘 있는지 확인합니다. 중요한 파일 몇 개를 열어보고, 해시값을 비교해보는 것도 좋습니다.
    2. SMB/NFS 공유 접근 테스트: Windows, Linux, macOS 클라이언트에서 각각 공유 폴더에 접속하여 파일 읽기/쓰기가 정상적으로 되는지 확인합니다.
    3. 네트워크 서비스 확인: 외부에서 NAS에 접속하는 서비스(SSH, 웹 GUI, Plex 등)가 정상적으로 작동하는지 확인합니다.
    4. 새로운 앱 동작 확인: Docker 컨테이너나 VM을 새로 구성했다면, 해당 앱들이 의도한 대로 잘 돌아가는지 확인합니다.

    모든 것이 정상적으로 작동하는 것을 확인했을 때의 그 쾌감이란! 드디어 TrueNAS CORE 마이그레이션이 성공적으로 마무리된 겁니다. 🎉

    TrueNAS SCALE 마이그레이션 후 정상 작동하는 대시보드 화면

    TrueNAS SCALE 시스템의 대시보드입니다. 모든 디스크와 풀이 정상적으로 인식되고, 시스템 리소스 사용률도 안정적인 것을 확인할 수 있습니다.

    🚀 마무리하며: SCALE의 새로운 시작

    이번 TrueNAS SCALE 전환은 저에게도 꽤나 큰 도전이었지만, 결과적으로는 아주 만족스러웠습니다. 이제 ZFS의 안정성 위에 Docker와 KVM의 유연함까지 더해져 홈랩 활용도가 훨씬 높아졌거든요. 기존 CORE 사용자로서 FreeNAS TrueNAS 이전을 고민하고 계시다면, 이 가이드가 여러분의 NAS 데이터 옮기기 여정에 큰 도움이 되었으면 좋겠습니다.

    물론 과정이 조금 복잡하게 느껴질 수도 있지만, 단계별로 차근차근 진행하고 백업만 확실히 해둔다면 충분히 혼자서도 성공적으로 마이그레이션할 수 있습니다. 여러분의 서버실도 SCALE과 함께 더욱 강력하고 유연한 환경으로 거듭나기를 바랍니다! 다음 글에서는 TrueNAS SCALE에 Docker Compose를 활용해 Plex와 다운로드 스테이션을 구축하는 방법을 다뤄볼게요. 기대해주세요!

    읽어주셔서 감사합니다. 삽질은 저 혼자 할게요, 여러분은 꽃길만 걸으세요! ㅎㅎ