- 컨테이너 OverlayFS에 대한 이해
- 리눅스 파일 시스템 > UnionFS > OverlayFS(컨테이너 이미지)
- AWS Storage에 대한 이해
- InstanceStorage, EBS, EFS, S3
- Kubernetes Storage에 대한 이해
- kubernetes Volume Tyep
- Volume, emptyDir, hostPath, Persistent Storage
- kubernetes Volume 추상화
- Persistent Volume, Persistent Volume Claim
- kubernetes Volume Tyep
1. 리눅스
1-1. i-node의 동작흐름에 대한 애니메이션
[Youtube_Cd chen] Filesystem - inode & block
- ls dir /
- ls -l dir/file1
- cat dir/file1
1-2. Linux Disk Layout (Super block, Inode block, Data block)
[tistory] 37. 파일 시스템 - inode 방식과 가상 파일시스템
- Linux 파일 시스템 - Disk layout (Simple File System)
- 3개의 Block으로 구성
- Super Block
- Inode Block
- Data Block
- 3개의 Block으로 구성
블록 종류설명
블록 종류 | 설명 |
Super Block | - 파일 시스템의 메타데이터를 저장하는 블록 (파일 시스템의 전반적인 정보를 포함) - Super Block이 저장하는 정보 * 파일 시스템의 크기, 사용 가능한 공간, 사용 중인 Inode 및 데이터 블록의 수 등 |
Inode Block | - 각 파일 및 디렉터리에 대한 메타데이터를 저장하는 블록 |
Data Block | - 실제 파일 데이터가 저장되는 블록 |
[University of Notre Dame] Project 06: Simple File System
[O'REILLY] Mastering Linux Kernel Development by Raghu Bharadwaj-Superblock
1-3. VFS
The VFS (Virtual File System) in Linux Kernel V2.4
[DATA ON-AIR 칼럼] Linux VFS(Virtual File System Switch) 해부
1-4. UnionFS
[WIKIPEDIA] UnionFS
1-5. OverlayFS
[alice Blog] 168. [Linux] 투명 셀로판지 이론을 통한 Overlay FS 사용 방법과 유니온 마운트 (Union Mount) 이해하기
2. Container Layer
[taikun] How to Handle Container Storage
3. Kubernetes Storage
- Kubernetes Storage 요구사항
- 컨테이너간 데이터 공유
- emptyDir
- emptyDir + git (gitRepo)
- 워커노드 파일시스템 접근
- hostPath (시스템 레벨의 Pod - 노드의 파일시스템 접근이 필요함)
- NAS 기반 스토리지(네트워크로 접근가능한 외부 스토리지)
- gcpPersistentDisk
- awsElasticBlockStore
- nfs
- 컨테이너간 데이터 공유
- Persistent Volume, Persistent Volume Claim
- 기반 스토리지 기술과 Pod 분리
- EBS, GCP Disk, NFS등의 디스크를 필요할때마다 생성하고 (Infra 관리자) Pod에 적절한 디스크 용량을 정해서 할당(개발자)한다.
- 아래 두가지 기능을
- 스토리지 인프라 관리
- 스토리지 사용
- Pod가 죽고 다른 노드에 생성될 경우
- NAS형식으로 스토리지 접근이 가능해야한다.
3-2. kubernetes volume Type
볼륨 종류 | 설명 |
awsElasticBlockStore | AWS Elastic Block Store로 데이터를 저장하는 볼륨 (제거됨) |
azureDisk | Azure 디스크를 사용하여 데이터를 저장하는 볼륨 (제거됨) |
azureFile | Azure 파일을 사용하여 데이터를 저장하는 볼륨 (사용 중단됨) |
cephfs | Ceph 파일 시스템을 사용하여 데이터를 저장하는 볼륨 |
cinder | OpenStack Cinder 볼륨을 사용하여 데이터를 저장하는 볼륨 (제거됨) |
configMap | 쿠버네티스 ConfigMap을 볼륨으로 사용하여 애플리케이션 설정을 제공 |
downwardAPI | Pod의 환경 변수 또는 볼륨으로 Pod 및 컨테이너의 정보를 제공 |
emptyDir | 일시적인 저장 공간으로 Pod의 생명주기 동안 지속되는 볼륨 |
fc | Fibre Channel 스토리지를 사용하여 데이터를 저장하는 볼륨 |
gcePersistentDisk | Google Compute Engine Persistent Disk를 사용하여 데이터를 저장하는 볼륨 (제거됨) |
gitRepo | Git 리포지토리를 볼륨으로 사용하여 애플리케이션 코드를 가져옴 (사용 중단됨) |
glusterfs | GlusterFS 파일 시스템을 사용하여 데이터를 저장하는 볼륨 (제거됨) |
hostPath | 호스트 머신의 파일 시스템 경로를 Pod에 마운트하는 볼륨 |
iscsi | iSCSI 프로토콜을 사용하여 데이터를 저장하는 볼륨 |
local | 로컬 디스크 또는 임시 저장소를 사용하여 데이터를 저장하는 볼륨 |
nfs | NFS(Network File System)를 사용하여 데이터를 저장하는 볼륨 |
persistentVolumeClaim | 영구적인 스토리지 볼륨을 클레임하여 Pod에 할당하는 볼륨 |
portworxVolume | Portworx 스토리지를 사용하여 데이터를 저장하는 볼륨 (사용 중단됨) |
projected | 다양한 유형의 볼륨을 하나의 볼륨으로 결합하여 제공하는 볼륨 |
rbd | Ceph 블록 디바이스를 사용하여 데이터를 저장하는 볼륨 |
secret | 쿠버네티스 시크릿을 볼륨으로 사용하여 민감한 정보를 제공 |
vsphereVolume | VMware vSphere 스토리지를 사용하여 데이터를 저장하는 볼륨 (사용 중단됨) |
[kubernetes Docs] Kubernetes Documentation / Concepts / Storage / Volumes
[LinkedIn] telecomhall on LinkedIn: Kubernetes Volume Types
3-3. emptyDir
- 위치 : Pod
- 삭제 : 파드 종료시
- 공유 : Pod 내부 컨테이너
[로스카츠의 AI 머신러닝 블로그] [Infra] 쿠버네티스(kubernetes)(5) 퍼시스턴트 볼륨 스토리지
3-4. hostPath
- 위치 : Node
- 삭제 : Node에서 해당 폴더 삭제시
- 공유 : 동일한 Node의 Pod (다른 노드의 Pod는 접근 불가)
[로스카츠의 AI 머신러닝 블로그] [Infra] 쿠버네티스(kubernetes)(5) 퍼시스턴트 볼륨 스토리지
[livebook] Kubernetes in Action
3-5. PersistentVolume (PV)
- 외부 스토리지
- 외부 스토리지 시스템을 볼륨으로 사용
- hostPath > 다른 노드의 Pod가 접근 못하는 단점 해결