
개발 배경 리눅스 컨테이너는 런타임 환경에서 애플리케이션을 패키지화하고 분리하는 기술입니다. 실행에 필요한 모든 파일이 호스트 시스템과 분리되어 동작하기 때문에 컨테이너 환경에서 동작하는 프로레스는 이식과 관리가 쉽습니다. 하지만 컨테이너의 리소스가 호스트와 분리되었다고 해도 실제 스토리지에 저장되는 데이터들은 격리되지 않습니다. 즉, 하나의 스토리지를 여러 컨테이너가 공유해서 사용하고 여러 컨테이너가 동시에 한 스토리지에 접근하는 경우 I/O 간섭이 발생합니다. 만약 이러한 데이터들 사이에 격리(컨테이너 수준의 격리)가 이루어진다면 각 컨테이너들이 저장 장치에 접근할 때 I/O 간섭이 발생하지 않기에 빠르고 효율적인 처리가 가능해질 것입니다. 기존 문제점 현재 사용되는 Block Interface SS..

dm-zoned-target.c가 I/O 과정의 흐름을 담당하는 함수들이 모여있었다면, dm-zoned-metadata.c는 I/O를 실행하기 위해 필요한 메타데이터들에 관한 함수들이 모여있는 코드입니다. Write 하기 위한 zone이 chunk와 매핑되어있는지, bio가 접근하는 chunk id는 몇 번인지, device 상태는 어떤지 등과 같은 원시적인 데이터와 관련된 로직들이 모여있습니다. 이 파일은 3000 라인이 넘는 많은 양의 코드이지만, 핵심적인 함수들을 우선 파악한다면 I/O 루틴을 보다 수월하게 이해할 수 있습니다. 함수를 소개하기에 앞서, metadata.c 에서 가장 많이 사용되는 zone 구조체와 dmap 구조체를 먼저 이해하고 넘어가겠습니다 ! dm_zone struct dm_z..

ZNS ZNS란 Zoned Namespace의 약자로, 네임스페이스(Namespace)를 존(Zone) 단위로 나눠 사용하는 기술을 말합니다. 여기서 네임스페이스는 논리 블록으로 쉽게 컴퓨터 탐색기에 보이는 C:\, D:\가 각각 하나의 네임스페이스라고 이해하면 쉽습니다. ZNS는 SSD 공간을 여러 개의 zone으로 나누어 사용할 뿐만 아니라 운영체제에서 zone을 직접 관리할 수 있는 인터페이스를 제공합니다. 과거 데이터센터에는 하나의 성능 좋은 컴퓨터(Server)에서 하나의 운영체제와 응용프로그램을 구동했습니다. 요즘에는 하드웨어 위에 다수의 가상 운영체제와 응용프로그램이 구동되는 형태입니다. 즉, 다양한 프로그램이 하나의 저장장치를 동시에 읽고 쓰는 것입니다. 따라서 데이터센터에서는 속도뿐만 아..
- Total
- Today
- Yesterday
- 네트워크
- 2차 데모데이
- 백준
- 피움 6주차 회고
- 알림기능개선기
- 스프링 Logback
- Spring
- 환경 별 로깅 전략 분리
- ZNS SSD
- CI/CD
- 스프링MVC
- 스프링 부트
- 런칭 페스티벌
- 우테코 회고
- 3차 데모데이
- 5주차 회고
- ZNS
- java
- 팀프로젝트
- 알림개선기
- 8주차 회고
- dm-zoned 코드분석
- 스프링 프레임워크
- dm-zoned
- 회고
- 프로젝트
- 파이썬
- 피움
- 우테코
- jpa
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |