Storage 정리
RAID 종류별 동작 방식과 장단점
| RAID 종류 |
동작 방식 |
장점 |
단점 |
| RAID 0 (스트라이핑) |
데이터를 여러 디스크에 분산 저장하여 성능 향상 |
빠른 읽기/쓰기 속도, 모든 디스크의 용량 활용 가능 |
내결함성 없음 (디스크 하나라도 고장 나면 데이터 손실) |
| RAID 1 (미러링) |
동일한 데이터를 두 개 이상의 디스크에 복제 |
높은 데이터 안정성, 디스크 하나 고장 나도 복구 가능 |
디스크 사용 효율이 50%로 감소 |
| RAID 5 (패리티 스트라이핑) |
데이터를 블록 단위로 나누어 저장하고 패리티 정보를 추가 |
데이터 안정성과 성능 균형, 하나의 디스크 장애 허용 가능 |
패리티 계산으로 인해 쓰기 성능 저하, 3개 이상의 디스크 필요 |
| RAID 6 (이중 패리티 스트라이핑) |
RAID 5와 유사하지만 두 개의 패리티 블록을 저장 |
두 개의 디스크 장애까지 허용 가능 |
패리티 연산으로 인한 성능 저하, 최소 4개의 디스크 필요 |
| RAID 10 (1+0, 미러링+스트라이핑) |
RAID 1과 RAID 0을 결합하여 미러링된 디스크를 스트라이핑 |
높은 성능과 내결함성 제공 |
디스크 사용 효율이 절반으로 감소, 최소 4개의 디스크 필요 |
AWS 환경에서 RAID 적용
AWS 환경에서는 RAID 구성보다는 EBS의 내장 기능을 활용하는 것이 일반적임. 하지만 특정 요구사항에 따라 RAID를 적용할 수 있음.
RAID 0 적용
- 사용처: 높은 성능이 필요한 애플리케이션 (예: 캐싱, 데이터 분석)
- AWS에서의 적용 방법:
- 여러 개의 EBS 볼륨을 묶어 RAID 0을 구성
- EC2에서
mdadm을 사용하여 소프트웨어 RAID 0 설정
RAID 1 적용
- 사용처: 데이터 안전성이 중요한 환경 (예: 데이터베이스, 로그 저장)
- AWS에서의 적용 방법:
- EBS 스냅샷이나 AWS의 다중 AZ RDS를 활용하는 것이 일반적
- 하지만 OS 레벨에서 RAID 1을 적용하려면
mdadm으로 설정 가능
RAID 5 / 6 적용
- 사용처: 대용량 저장소가 필요한 경우 (예: 빅데이터, 데이터 웨어하우스)
- AWS에서의 적용 방법:
- EBS 볼륨 여러 개를 묶어 RAID ⅚으로 설정할 수 있으나, AWS에서는 별로 추천되지 않음
- 대신 S3, EFS, FSx 같은 AWS 네이티브 솔루션이 더 적합함
RAID 10 적용
- 사용처: 데이터 안정성과 성능이 동시에 필요한 환경
- AWS에서의 적용 방법:
- EBS 볼륨을 RAID 10으로 구성 가능
- 다만, AWS의 EBS 프로비저닝된 IOPS 옵션이 RAID 10보다 성능 면에서 유리할 수 있음
RAID와 LVM의 연관성
LVM(Logical Volume Manager)이 RAID에 미치는 영향
LVM은 물리적 볼륨(PV)을 논리적 볼륨(VG, LV)으로 관리하는 방식으로, RAID와 함께 사용할 경우 다음과 같은 이점이 있음.
LVM + RAID 0
- 특징: LVM의
striping 기능을 사용하여 RAID 0과 유사한 효과를 얻을 수 있음
- 장점: RAID 0과 비슷하게 성능 향상 가능, 볼륨 크기 조정 용이
LVM + RAID 1
- 특징: LVM의
mirroring 기능을 사용하여 RAID 1과 유사한 효과 제공
- 장점: RAID 1의 데이터 보호 기능을 유지하면서 논리적 볼륨 관리 기능 추가
LVM + RAID ⅚
- 특징: LVM의
striping with parity 기능을 통해 RAID ⅚과 유사한 데이터 보호 효과 가능
- 단점: 패리티 연산이 OS 레벨에서 수행되어 성능 저하 가능성 있음
LVM + RAID 10
- 특징: LVM의
mirroring과 striping을 결합하여 RAID 10과 유사한 구성 가능
- 장점: 성능과 데이터 안정성을 동시에 제공, 유연한 볼륨 크기 확장 가능
AWS에서 LVM과 RAID 활용
- LVM을 사용하면 RAID와 조합하여 디스크 확장 및 관리를 유연하게 수행 가능
- AWS에서는 RAID보다 EBS의 내장 기능을 활용하는 것이 더 효율적인 경우가 많음
- EBS의 IOPS 설정이나 EFS, S3 같은 서비스를 고려하는 것이 더 좋은 선택일 수 있음
결론
- AWS에서는 RAID보다 EBS, RDS, S3 등의 네이티브 서비스를 활용하는 것이 일반적임
- RAID를 사용해야 한다면 RAID 0 (성능 목적)이나 RAID 1 (안정성 목적)이 주로 사용됨
- LVM과 RAID를 함께 사용하면 유연한 스토리지 관리를 할 수 있으나, AWS에서는 필요성이 낮을 수 있음
- EBS IOPS 조정 + LVM을 활용하면 RAID를 쓰지 않고도 높은 성능과 확장성을 확보 가능
Object Storage vs Block Storage
개념 및 동작 방식
| 스토리지 유형 |
동작 방식 |
| Object Storage |
데이터를 오브젝트 단위로 저장하며, 메타데이터와 함께 키-값 형태로 저장됨. 개별 파일(오브젝트)에 고유한 ID(URI)가 부여되며, API를 통해 접근 가능 |
| Block Storage |
데이터를 블록 단위로 나누어 저장하며, 각 블록이 특정 주소를 가짐. 운영체제가 직접 관리하며 디스크처럼 동작 |
사용 사례
| 스토리지 유형 |
주요 사용 사례 |
| Object Storage |
백업 및 아카이빙, 정적 웹사이트 호스팅, 빅데이터 저장, CDN 캐시, 머신러닝 데이터 저장 |
| Block Storage |
데이터베이스 저장, 가상 머신 디스크(VM), 트랜잭션 처리, 고성능 애플리케이션 |
차이점 비교
| 비교 항목 |
Object Storage |
Block Storage |
| 데이터 저장 방식 |
오브젝트 단위 저장 (파일 + 메타데이터 + ID) |
블록 단위 저장 (파일을 여러 블록으로 나눔) |
| 주소 지정 방식 |
URI 또는 키-값 기반 접근 |
블록 주소를 기반으로 운영체제가 관리 |
| 파일 수정 |
파일 전체를 다시 저장해야 함 |
특정 블록만 수정 가능 |
| 액세스 방식 |
API 기반 (HTTP, S3 API 등) |
OS에서 디스크처럼 마운트하여 사용 |
| 성능 |
대량의 데이터를 저장하고 읽을 때 최적화됨 |
낮은 지연시간과 높은 성능을 제공 |
| 확장성 |
매우 뛰어남 (수십 페타바이트 이상 확장 가능) |
제한적 (스토리지 크기에 따라 확장) |
| 비용 |
일반적으로 저렴 |
상대적으로 고가 |
장단점
| 스토리지 유형 |
장점 |
단점 |
| Object Storage |
무한 확장 가능, 비용 효율적, 내구성 높음 |
낮은 성능 (랜덤 읽기/쓰기 부적합), 파일 수정이 어려움 |
| Block Storage |
빠른 읽기/쓰기 속도, OS에서 직접 관리 가능 |
확장성이 제한적, 비용이 상대적으로 높음 |
AWS에서 Object Storage와 Block Storage의 동작 방식 및 결합
AWS에서 Object Storage
- Amazon S3 (Simple Storage Service)
- AWS의 대표적인 Object Storage 서비스
- 데이터를 "버킷(Bucket)" 단위로 관리
- HTTP 기반 API(S3 API)로 데이터 업로드 및 다운로드 가능
- 정적 웹사이트 호스팅, 백업/아카이빙, 빅데이터 저장소로 활용
AWS에서 Block Storage
- Amazon EBS (Elastic Block Store)
- EC2 인스턴스에 연결되어 디스크처럼 동작
- 고성능 IOPS 제공 가능 (Provisioned IOPS 지원)
-
스냅샷 기능을 통해 백업 가능
-
Amazon Instance Store
- EC2에 직접 연결된 초고속 로컬 스토리지
- 일시적인 저장소로 사용되며, 인스턴스 종료 시 데이터 삭제됨
- 데이터베이스 캐시, 임시 저장소 용도로 활용
AWS에서 Object Storage와 Block Storage 결합 방식
- S3 + EBS: 애플리케이션의 정적 데이터(예: 로그, 이미지)는 S3에 저장하고, 운영 데이터(예: 데이터베이스)는 EBS에 저장
- EBS + S3 백업: EC2에서 EBS를 운영 디스크로 사용하고, 정기적으로 EBS 스냅샷을 S3에 저장하여 비용 절감
- S3 + Glacier: 자주 접근하지 않는 데이터는 S3에, 장기 보관용 데이터는 Glacier로 이동하여 비용 최적화
결론
- Object Storage (S3)는 대규모 데이터를 저장하고 접근하는 데 적합하지만, 파일 수정이 어렵고 높은 성능이 필요한 경우 부적합함.
- Block Storage (EBS)는 높은 성능이 필요한 데이터베이스 및 애플리케이션 운영에 적합하지만, 확장성이 제한적이고 비용이 높음.
- AWS에서는 S3 + EBS 조합을 통해 확장성과 성능을 모두 고려한 하이브리드 스토리지 아키텍처를 구성하는 것이 일반적.
주요 파일 시스템 비교
| 파일 시스템 |
특징 |
장점 |
단점 |
| EXT4 |
리눅스 기본 파일 시스템, 저널링 지원 |
안정적, 대부분의 리눅스 배포판에서 기본 지원, 대용량 파일 지원(최대 16TB) |
성능이 XFS나 Btrfs보다 낮음, 확장성이 제한적 |
| XFS |
고성능 저널링 파일 시스템, 병렬 입출력(IO) 최적화 |
대용량 파일과 다중 쓰레드 환경에서 뛰어난 성능, 빠른 데이터 복구 |
작은 파일 처리 성능이 EXT4보다 낮음, 볼륨 크기 축소 불가 |
| Btrfs |
스냅샷 및 데이터 중복 제거 지원, Copy-on-Write(COW) 방식 |
스냅샷 기능 제공, RAID 기능 내장, 자동 파일 시스템 복구 |
EXT4나 XFS보다 성숙도가 낮음, 일부 배포판에서 기본 지원하지 않음 |
| ZFS |
고급 데이터 보호 및 압축 기능 제공 |
데이터 무결성 보장, 내장된 RAID-Z 지원, 대규모 데이터 처리 최적화 |
메모리 사용량이 높음, 리눅스에서 기본적으로 포함되지 않음 |
| NTFS |
윈도우 기본 파일 시스템, 저널링 지원 |
파일 및 폴더 권한 관리, 윈도우 환경에서 최적화됨 |
리눅스에서 쓰기 성능이 낮음, 조각 모음 필요 |
| FAT32 |
범용 파일 시스템, 거의 모든 OS에서 인식 가능 |
높은 호환성, 간단한 구조 |
4GB 이상의 파일 저장 불가, 보안 기능 부족 |
Inode 개념
- Inode(아이노드)는 리눅스 및 유닉스 기반 파일 시스템에서 파일 메타데이터를 저장하는 데이터 구조임.
- 파일의 실제 데이터(내용)와는 별도로, 파일의 속성 정보(메타데이터)를 저장하는 역할을 함.
Inode에 저장되는 정보
Inode는 파일 자체의 내용이 아닌, 다음과 같은 메타데이터를 저장함.
| 속성 |
설명 |
| 파일 크기 |
파일의 총 크기 (바이트 단위) |
| 파일 유형 |
일반 파일, 디렉터리, 심볼릭 링크 등 |
| 파일 권한 |
읽기/쓰기/실행 권한 (rwx) |
| 소유자 및 그룹 |
해당 파일의 소유 사용자 및 그룹 |
| 파일 시간 정보 |
파일의 상태 변경·수정·접근 시간 (ctime, mtime, atime). 생성 시간은 crtime/btime |
| 하드 링크 수 |
해당 파일을 참조하는 링크 개수 |
| 데이터 블록 위치 |
파일의 실제 데이터가 저장된 디스크 블록 주소 |
- Inode에 저장되지 않는 정보
- 파일명은 Inode에 저장되지 않으며, 디렉터리 엔트리(directory entry)에서 별도로 관리됨.
Inode와 파일 시스템의 관계
| 파일 시스템 |
Inode 사용 방식 |
특징 |
| EXT4 |
Inode 기반 파일 시스템 |
각 파일마다 Inode가 생성되며, 디렉터리가 파일명과 Inode 번호를 매핑 |
| XFS |
Inode 기반, 동적 할당 |
Inode를 미리 할당하지 않고 필요할 때 동적으로 생성 |
| Btrfs |
Inode 사용, Copy-on-Write (COW) 적용 |
데이터 보호를 위해 스냅샷 및 RAID 기능 내장 |
| ZFS |
Inode + 데이터 무결성 보장 |
Inode와 데이터 블록을 함께 관리하여 오류 감지 및 자동 복구 가능 |
Inode의 중요성
- 파일이 생성될 때마다 Inode가 할당됨.
- Inode가 부족하면 더 이상 파일을 생성할 수 없음 (디스크 공간이 남아 있어도).
df -i 명령어로 현재 사용 가능한 Inode 개수 확인 가능.
Instance Store vs. EBS 비교
| 항목 |
Instance Store |
EBS (Elastic Block Store) |
| 스토리지 위치 |
물리적 서버 내부의 디스크 (로컬 스토리지) |
네트워크를 통해 연결된 분리된 블록 스토리지 |
| 데이터 휘발성 |
인스턴스 중지/종료 시 데이터 삭제 |
영구 저장 가능 |
| 성능 |
초고속 I/O (낮은 지연시간, 높은 처리량) |
SSD 기반으로 안정적이지만 네트워크 지연 가능 |
| 장애 복구 |
복구 불가 (인스턴스 종료 시 데이터 손실) |
스냅샷 및 복제 가능 |
| 주요 사용 사례 |
캐시, 임시 데이터 저장, 고성능 처리 |
OS 및 애플리케이션 데이터 저장 |
Instance Store를 사용하면 좋은 경우
고성능 캐시 저장소
- Redis, Memcached 같은 인메모리 데이터베이스의 백업 캐시 스토리지로 활용 가능
- 휘발성이지만 낮은 지연시간(Low Latency)이 필요할 때 적합
임시 데이터 저장 (Temporary Storage)
- ETL(Extract, Transform, Load) 프로세스에서 임시 파일 저장
- 동영상/이미지 처리 중간 파일 저장
- 로그 파일 및 빅데이터 분석을 위한 임시 저장소
고속 읽기/쓰기 요구되는 애플리케이션
- Hadoop, Spark 같은 빅데이터 프레임워크의 중간 결과 저장소
- 대용량 트랜잭션 처리 시스템(OLTP)의 단기 데이터 저장소
- CI/CD 빌드 및 컴파일 과정에서 임시 파일 저장
비용 절감
- EC2 비용만 지불하면 되므로 EBS 비용을 절감할 수 있음
- 하지만, 인스턴스 종료 시 데이터가 삭제되므로 영구 저장소가 필요할 경우 EBS 또는 S3 사용 추천