1. 블록 스토리지
- 데이터를 잘게 나눠서 저장
- 디스크처럼 동작한다.
- OS가 그 위에 파일 시스템을 만들어서 사용한다.
- 매우 빠르다.
- 기본적으로는 한 번에 하나의 서버, 노드만 쓸 수 있다. → 두 서버가 동시에 같은 디스크를 쓰면 충돌이 난다
- 바로 사용할 수 없고
- 예시
→ 디스크만 줌
블록스토리지는 그냥 아무것도 없는 디스크 이기 떄문에 바로 사용하지 못한다.
반드시 초기작업(포맷팅, 마운트)이 필요하다.
- 포맷팅 : 디스크에 파일 시스템 구조를 초기화해서 생성하는 과정 → 파일 저장할 수 있는 틀을 만듦
아래는 포맷팅시 발생하는 단계이다.
- 슈퍼블록 생성
- inode 테이블 생성
- 블록 그룹 구성
- 루트 디렉토리 생성 (/)
- 파일 시스템 메타데이터 초기화
디렉토리 트리
/(루트경로)
/ \
home var
|
user
마운트 = 파일 시스템을 OS의 디렉토리에 연결 하는 작업 → 마운트는 파일 시스템을 디렉토리 트리에 연결하여 접근 가능하게 만드는 작업이다.
- 포맷팅만 진행하면 디스크에 파일시스템은 생성이 되지만, OS의 디렉토리 트리에 연결되지 않는다. (접근경로)
- 마운트를 진행하면 “파일시스템과 경로가 연결이 된다”
- 해당 경로로 이동하면 연결된 파일시스템에서 작업이 가능하게 된다.
2. 파일 스토리지
- 데이터를 파일 + 폴더 구조로 저장
- 일반적인 파일 시스템
- 여러 서버가 동시 접근 가능하다
- 예시
→ 디스크 뿐만 아니라 이미 파일 시스템까지 포함된 상태
→ 파일 시스템은 이미 있지만, OS의 디렉토리 트리에 “연결”되어 있지 않아서 마운트가 필요하다.
3. 오브젝트 스토리지
- 데이터를 객체(파일+메타데이터)로 저장
- 파일 시스템 없음
- 클라우드에서 많이 사용하는 방식
- 파일을 객체로 저장한다
- 메타데이터를 포함하며 url, api로 접근한다.
- 거의 무한대로 확장 가능하다.
- 예시
- 마운트라는 개념도 없다.
- 디렉터리가 있는것처럼 보이지만 실제로는 모든 데이터가 같은 레벨에 존재한다.(flat구조)
- "home/user/file.txt", "home/user2/test.png"이렇게 되어있어도 실제로는 문자열(key)일 뿐이다.
- UI가 폴더처럼 보이게 만들어주는 것 뿐이다.
# 한 줄 정리
블록은 성능, 파일은 편의성, 오브젝트는 확장성과 클라우드에 최적화된 저장 방식이다.