블록, 파일, 객체 스토리지 차이점 알아보기
블록, 파일, 객체 스토리지 차이점 알아보기
1. EBS, EFS, S3
AWS 자격증을 준비하면서 여러가지 저장 시스템을 배웠지만 EBS, EFS, S3 가 가장 중요했다. 이 저장 트리오는 AWS에서 제공하는 대표적인 스토리지 서비스로, Elastic Block Store(EBS), Elastic File System(EFS), 그리고 Simple Storage Service(S3) 의 약자다.
- EBS (Elastic Block Store): 블록 스토리지 시스템으로, EC2 인스턴스에 연결하여 디스크처럼 사용할 수 있는 서비스
- EFS (Elastic File System): 파일 스토리지 시스템으로, 여러 EC2 인스턴스에서 동시에 액세스할 수 있는 공유 파일 시스템을 제공
- S3 (Simple Storage Service): 객체 스토리지 시스템으로, 인터넷을 통해 데이터를 저장하고 접근할 수 있는 고가용성 스토리지
내가 배운 개념으로는, S3 는 대용량의 데이터 저장하는 곳이었고 EBS, EFS 는 EC2 에 붙이는 저장 공간이었다. 이때 EBS, EFS 는 여러 EC2 에서 공유할 수 있냐, 없냐로 나뉘었는데 EBS 도 설정을 잘 하면 여러 인스턴스에서 접근을 할 수 있었다. 주요한 차이는 Block 인지, File 인지인데 공부할 때는 그렇게까지 깊게 공부하지 않았었다.
괜찮은 예시 (from smileshark)
smileshark 페이지에서 읽은 괜찮은 예시다
...
블록 스토리지는 넓은 주차장으로, 블록은 주차장의 한 칸으로 비유할 수 있습니다. 우리가 특정 공간에 차를 주차하듯이 정해진 블록에 데이터를 저장하게 됩니다. 블록 스토리지에서 각 블록은 저장된 위치에 대한 고유한 주소를 가지고 있어 만약 서버에서 파일을 요청하면 이 주소를 통해 블록들을 재구성하여 데이터를 불러올 수 있습니다. 이러한 방식은 정형화된 데이터를 빠르게 처리하는 데 이상적입니다.
파일 스토리지는 도심 속 주차 타워입니다. 주차 타워에 주차된 차가 많아질수록 차가 차곡차곡 쌓이고, 그만큼 복잡해져 주차나 출차를 위한 과정이 힘들어지게 됩니다. 파일 스토리지는 데이터 양이 늘어나면서 파일과 폴더를 계속 추적하기 위한 자원 요구가 늘어나 성능이 떨어질 수도 있습니다.
마지막으로 오브젝트 스토리지는 발렛 파킹 서비스로 볼 수 있습니다. 사용자가 키만 건네면 어디에 주차하는지 알 필요없이 알아서 효율적으로 빈틈없는 주차를 해줍니다. 또한 차를 찾을 때에도 보관증만 건네기만 하면 됩니다. 오브젝트 스토리지에서 모든 객체(Object)는 계층 구조의 파일 스토리지와 달리 단일한 평면적(Flat) 공간에 저장됩니다. 이 공간에는 고유 식별자가 있고 객체는 객체 자체로 저장되므로 접근이 쉬워집니다. 또한 객체의 키(이름)만 알고 있으면 쉽고 빠르게 검색할 수 있습니다.
...
2. Block System
**블록 스토리지(Block Storage)**는 데이터를 고정된 크기의 블록으로 나누어 저장하는 방식이다. 그런 다음 블록 스토리지 시스템은 빠른 액세스 및 검색에 최적화된 방식으로 기본 물리적 스토리지에 데이터 블록을 저장한다. 사용자가 데이터를 요청하면 블록 스토리지 시스템이 데이터 저장 위치와 관계없이 관련된 데이터 블록을 다시 조합해 사용자에게 표시한다.
블록 시스템이 단일 인스턴스에서만 동작하는 이유
블록 스토리지는 운영체제(OS)가 직접 관리하는 로컬 디스크처럼 동작한다. 즉, OS가 파일 시스템을 직접 포맷하고 데이터를 저장하며, 특정 서버에 단독으로 연결한다. 다중 사용자가 접근하려면 여러 서버에서 같은 블록 스토리지에 동시에 접근해야 하는데, 여기서 몇 가지 문제가 발생한다.
문제 1: 파일 시스템 충돌
- 블록 스토리지는 기본적으로 운영체제가 파일 시스템을 직접 관리하고 때문에 단일 서버가 해당 디스크(블록)를 독점하는 것을 가정하고 동작한다.
- 만약 여러 서버가 동시에 같은 블록 스토리지에 접근하면, 각 서버가 같은 파일 시스템을 관리하게 되어 데이터 충돌(예: 메타데이터 손상, 인덱스 오류 등)이 발생할 수 있다.
문제 2: 데이터 동기화 문제
- 여러 서버가 같은 블록 스토리지를 공유하면, 하나의 서버가 파일을 수정했을 때 다른 서버는 이를 바로 반영할 방법이 없다.
- 파일 시스템이 자체적으로 동기화 기능을 제공하지 않기 때문에, 충돌을 방지하려면 **클러스터 파일 시스템(GFS, OCFS2, Lustre 등)**이 필요한데 일반적인 EBS 같은 블록 스토리지는 이런 기능을 기본적으로 제공하지 않기 때문에 다중 접근이 어렵다.
문제 3: 네트워크 블록 장치 제한
- 블록 스토리지는 특정한 서버에 직접 연결되는 형태로 동작한다. 일반적으로 한 번에 하나의 서버만 블록 디바이스를 마운트할 수 있으며, 여러 서버에서 동시에 사용할 수 있는 프로토콜을 제공하지 않는다.
- 반면, 파일 스토리지는 **네트워크를 통해 다중 접근을 고려한 프로토콜(NFS, SMB, CIFS 등)**을 사용하기 때문에 여러 사용자가 동시에 접근할 수 있다.
블록 스토리지의 장점
고성능
- 블록 스토리지는 제한된 메타데이터를 사용하지만 읽기/쓰기 작업을 위해 각 블록에 할당된 고유 식별자에 의존한다. 이를 통해 데이터 전송 오버헤드가 줄어들고 서버가 블록 스토리지의 데이터를 효율적으로 액세스하고 검색할 수 있다. 즉, 블록 스토리지 메타데이터는 제한적이기 때문에 블록 스토리지는 고성능의 작업에서 필요한 매우 짧은 지연 시간을 제공한다. 이는 데이터베이스와 같이 지연 시간에 민감한 애플리케이션에 필요한 성능이다.
높은 확장성
- 블록 스토리지 디바이스는 특정 환경으로 제한되지 않고 Windows 또는 Linux 와 같은 다양한 운영 체제에 대해 개별 블록을 구성할 수 있다. 여러 환경에서 데이터를 공유하여 고가용성을 보장할 수도 있고 용량을 늘리기 위해 기존 블록에 새 블록을 추가할 수도 있다.
세부적인 제어
- 파일 또는 객체 스토리지와 달리, 블록 스토리지는 파일을 변경할 때 영향을 받는 특정 블록만 수정할 수 있다. 예를 들어, 특정 블록에 빠르게 변화하는 데이터를 그룹화하고 다른 블록에 정적 파일을 저장하여 성능을 최적화할 수 있다. 이렇게 하면 지속적 업데이트가 전체 파일이 아닌 소수의 데이터 블록에만 영향을 주므로 시스템 성능이 향상된다. 예를 들어, 블록 스토리지를 사용하면 빠르게 변화하는 데이터를 고성능 SSD(Solid State Drive)에 계층화하고, 웜 또는 콜드 데이터를 저가형 하드 디스크 드라이브(HDD)에 저장할 수 있다.
블록 스토리지의 단점
- 비싼 비용: 고성능을 제공하는 만큼 비용이 상대적으로 높다.
- 백업 및 복원 문제: 블록 단위로 데이터를 저장하기 때문에 백업이 복잡할 수 있다.
3. File System
파일 스토리지는 파일과 폴더를 사용하여 계층 구초로 데이터를 구성하는 데이터 스토리지 아키텍처다. 데이터는 파일에 저장된 후 폴더에 정리되고 폴더는 디렉터리의 하위 디렉터리 내에 정렬된다. 파일 스토리지는 파일 이름, 파일 내 데이터 유형(확장자) 및 데이터 위치로 연결되는 특정 경로를 고유 식별자로 사용한다. 또한 파일 스토리지는 여러 사용자가 동시에 접근 가능하다. 즉, 파일 스토리지는 한마디로 파일 공유, 협업 리포지토리라고 할 수 있다.
파일 스토리지는 사용 방법이 익숙하기 때문에 가장 많이 사용되는 스토리지 유형 중 하나이며, 일반적인 사용 사례로는 웹 콘텐츠 관리, 공유 파일 및 문서 공동작업 스토리지, 소규모 로컬 파일 스토리지 등이 있다.
- 대표적인 서비스: AWS EFS, NAS(Network Attached Storage)
파일 스토리지의 장점
- 쉬운 관리: 다수에게 익숙한 파일 및 디렉토리 구조로 관리가 용이하다.
- 동시 접근 가능: 여러 사용자가 같은 파일을 동시에 공유 가능하다.
- 유연한 권한 관리: 파일 단위의 접근 제어 및 권한 설정 가능하다.
파일 스토리지의 단점
- 성능 제한: 많은 요청이 있을 경우 성능 저하가 있을 수 있다.
4. Object Storage
객체 스토리지는 객체라고 하는 비정형 형식으로 데이터를 저장하고 관리하는 기술이다. 사진, 동영상, 이메일, 웹 페이지, 센서 데이터 및 오디오 파일과 같은 다량의 비정형 데이터를 저장할 수 있다. 객체 스토리지 시스템은 이러한 데이터를 여러 대의 물리적 디바이스에 분산하지만 사용자는 단일의 가상 스토리지 리포지토리에서 효율적으로 콘텐츠에 액세스할 수 있다.
객체 스토리지는 파일을 구성하는 데이터의 조각을 결합하고 사용자가 생성한 모든 메타데이터를 해당 파일에 추가한 다음 사용자 지정 식별자를 연결한다. 여기서 계층 구조 스토리지 또는 계층화된 스토리지와 반대되는 플랫 구조가 생성되는데, 이를 버킷이라고 한다. 사용자는 파일 유형과 관계없이 해당하는 기능 및 특성을 기준으로 버킷의 모든 객체를 검색하고 분석할 수 있고 메타데이터와 함께 저장되기 때문에 객체의 검색 및 관리가 용이하다.
오브젝트 스토리지는 논리적인 스토리지라고 할 수 있다. 블록 스토리지와 파일 스토리지는 모두 OS 단에서 동작하는 반면, 오브젝트 스토리지는 어플리케이션 단에서 동작한다. 물리적 제약이 없기에 원하는 만큼 공간을 확장시킬 수 있다.
객체 스토리지와 파일 스토리지 비교
객체 스토리지와 파일 스토리지의 기본적인 차이점은 데이터 구조와 확장성에 있다. 파일 스토리지는 디렉터리와 폴더가 있는 계층으로 구성된다. 또한 파일 스토리지는 SMB, NFS 또는 Lustre와 같은 엄격한 파일 프로토콜을 따른다. 객체 스토리지는 메타데이터와 각 객체에 대한 고유 식별자가 있는 플랫 구조를 사용한다. 따라서 잠재적으로 수십억 개에 이르는 다른 객체 사이에서 객체를 더 쉽게 찾을 수 있다.
이러한 구조의 차이로 인해 파일 스토리지와 객체 스토리지는 확장할 수 있는 용량이 다르다. 객체 스토리지는 거의 무한한 확장성을 제공하며 페타바이트 규모의 수십억 개 객체로 확장할 수 있지만. 파일 스토리지는 내재하는 계층 및 경로 지정 특성으로 인해 확장에 제약이 있다.
객체 스토리지의 장점
- 확장성: 페타바이트(PB) 단위까지 확장 가능하다.
- 비정형 데이터: 대량의 구조화되지 않은 데이터를 쉽게 저장하고 관리할 수 있으므로 인공지능, 머신러닝, 예측 분석과 같은 빅데이터 사용 사례에 적합핟.
- 검색 가능성 개선. 객체 스토리지를 사용하면 메타데이터, 콘텐츠, 기타 속성을 기반으로 객체를 검색할 수 있는 고급 검색 기능을 사용할 수 있다.
- 비용 절감: 저장 비용이 블록/파일 스토리지보다 저렴하다.
객체 스토리지의 단점
- 높은 지연시간: 블록 스토리지처럼 빠르게 데이터에 접근하기 어렵다.
- 파일 시스템 미지원: 운영 체제에서 직접 마운트하여 사용할 수 없다.
5. 차이점과 공통점
구분 | 블록 스토리지 (EBS) | 파일 스토리지 (EFS) | 객체 스토리지 (S3) |
---|---|---|---|
저장 단위 | 블록 | 파일 및 디렉토리 | 객체 |
접근 방식 | 운영체제에서 직접 마운트 | 다중 사용자 접근 가능 | HTTP API 사용 |
성능 | 고성능, 저지연 | 중간 성능, 다중 접근 가능 | 저성능, 높은 확장성 |
사용 사례 | DB, VM, 트랜잭션 | 다중 사용자 파일 공유 | 백업, 정적 콘텐츠 저장 |
비용 | 상대적으로 비쌈 | 중간 수준 | 저렴함 |
EBS vs. EFS 성능 비교
저장 용량
- 단일 EBS 볼륨의 최대 크기는 최대 16TB까지 될 수 있지만 EFS 볼륨 크기는 사실상 무제한이다. 단, EFS에서 파일의 최대 크기는 47.9TB이고 EBS는 파일 크기 제한은 없다. EFS 볼륨은 워크로드 수요의 급격한 증가를 수용하기 위해 빠르며 자동으로 Scale-up/down이 가능하다.
처리량
- EBS는 디스크 지연 시간을 최소로 할 수 있다. (프로비저닝된 IOPS) EFS는 충분히 빠르지만 EBS만큼의 낮은 디스크 지연시간은 확보할 수 없다. (EBS보다 느리다) 반면에 분산 파일 저장 시스템이기 때문에, EFS는 EBS에 비해 초당 처리량은 높을 수 있다. (여러 대에서 접근하면 되니까)
- 즉, 인스턴스 1대만 접근한다면 EBS 가 빠르고 여러 대가 동시에 처리하면 절대적인 처리량 합은 EFS 가 높다는 것이다.