파일 시스템은 일반적인 파일 시스템이다.
파일 시스템의 구조
- SDK
- 운영 체제 계층
- 파일 시스템
- 스토리지 하드웨어
SDK
- 프로그래밍 언어에서 지원되는 파일 시스템 접근용 API
- C의 fopen, JAVA의 java.io.*의 파일 시스템 관련 라이브러리 등
운영 체제 계층
- 여러 종류의 다햐안 파일 시스템을 같은 형태의 스토리지로 추상화 해준다. ex)Linux의 VFS
- 각 다양한 파일 시스템의 메타 정보를 inode에 저장하고 파일 자체를 블록 단위로 나눠서 저장하는 구조
- 추상화된 파일은 System Call Interface로 추상화 돼서 접근 할 수 있게 된다.
- inode는 파일이나 디렉터리에 대한 메타 정보를 저장하는 데이터 구조
파일 시스템
- 디스크를 포맷 할때 어떤 파일 시스템으로 포맷할 것인가를 결정할 때 선택하는 부분 ex)FAT32, NTFS 등
- 파일 시스템은 네이티브 파일 시스템과 이런 파일 시스템 위에 설정하는 파일 시스템이 있다.
- 네이티브 파일 시스템(Native File System)은 FAT32, NTFS, ext3과 같이 OS에서 제공한다.
- 다른 파일 시스템은 NFS, GFS(Gluster File System), HDFS(Hadoop Distributed File System) 등이 있다.
스토리지 하드웨어
파일 시스템을 구성하는 스토리지 하드웨어는 크게 3가지로 구분된다.
- DAS(Direct Attached Stoage) : 서버 외부에 용량을 확장해서 그 서버에서만 사용하는 공간이다. 외장형 디스크라고 생각하면 된다.
- SAN(Storage Area Network) : 하나의 SAN 스토리지를 여러개의 볼륨을 나눠서 다수의 서버가 각각 볼륨을 외장형 디스크처럼 마운트해서 사용 단, 마운트된 볼륨은 다른 서버에서 접근 할 수 없다.
- NFS(Network File System) : 공유파일 시스템으로 하나의 스토리지를 여러 개의 서버가 공유해서 사용 한다.
아키텍처 설계에 영향을 주는 파일 시스템 옵션
- 네이티브 파일 시스템(Native File System) : 일반적인 로컬 디스크로 디스크가 붙어 있는 서버에서만 읽고 쓸 수 있다.
- NFS(Network File System) : 공유 디스크의 개념으로 다수의 서버에서 일고 쓸 수 있다.
이미지 파일을 업로드해서 여러크기로 바꿔저 저장하는 시나리오를 구현 해보자
- Dispatcher는 파일을 업로드해서 작업 영역(Working Space)에 저장한다. 그리고 파일이 저장되었다는 메세지를 메시지 큐(Message Queue)에 저장한다
- Post Processor는 메시지 큐에서 순차적으로 메세지를 읽어서 작업 영역에서 파일을 읽어서 여러 해상도로 바꿔서 뒤에 Permannent Storage에 저장한다.
공유 스토리지는 아키텍처에 다양성을 제공 해줄 수 있기 때문에 사용 용도가 많지만 로컬 디스크에 비해서 IO 성능이 비교적 떨어진다.
Object Storage
- Amazon S3나 OpenStack SWIFT와 같은 Object Storage라는 형태의 새로운 파일 스토리지가 소개 되고 있다.
- HTTP/REST와 같은 다른 파일 IO인터페이스를 사용한다
- 다른 인터페이스를 사용하기 때문에 파일 시스템으로의 접근은 OS에 대한 제약을 받지 않는다.
이전글
다음 글
더보기
이 글은 조대협의 서버사이드 대용량 아키텍처와 성능 튜닝 책을 참고하여 작성되었습니다.
이 글은 코드프레소 DevOps Roasting 코스를 수강하면서 작성한 글입니다.
'아키텍처' 카테고리의 다른 글
[조대협 대용량 아키텍처]전통적인 OLAP 방식의 분석 시스템 (0) | 2020.02.10 |
---|---|
[조대협 대용량 아키텍처]Analysis Layer (0) | 2020.02.10 |
[조대협 대용량 아키텍처]Persistent Layer - NoSQL (0) | 2020.02.09 |
[조대협 대용량 아키텍처]Persistent Layer - RDBMS (0) | 2020.02.09 |
[조대협 대용량 아키텍처]Persistent Layer (0) | 2020.02.09 |