Linux I/O Stack의 구조를 보도록 하자.

Application->Virtual File System(VFS)->Block I/O Layer->I/O Scheduler->SCSI Layer->Block Device의 순서를 거친다.
1. Application에서 I/O 명령이 들어온다.
2. VFS, 가상 파일 시스템은 실제 파일 시스템 위의 추상 계층으로, Application이 여러 파일 시스템에 같은 방법으로 접근할 수 있도록 한다. 커널과 실제 파일 시스템과의 인터페이스와 규격을 정의하고 있다. 커널 코드는 'fs/'에 위치한다.
3. Block I/O Layer는 Kernel subsystem으로 Block 단위로 접근하는 저장 장치인 Block Device의 입출력 명령을 담당한다. 다양한 Storage Device 에 대한 추상화 작업을 진행한다. 리눅스 커널 코드는 'block/'에 위치한다.
여기서 알아볼 것은 Block I/O Layer이다. 이 Block I/O Layer에 대해 설명해둔 글이 있는데, 영어로 되어 있는 것을 한글로 번역한 블로그를 찾아 첨부하겠다.
The block I/O layer
http://everylwn.blogspot.kr/search?q=The+block+I/O+layer http://ari-ava.blogspot.kr/2014/06/opw-linux-block-io-layer-part-1-base.html Base concepts 지난 몇주동안 Linux kernel의 block I/O layer가 어..
xoit.tistory.com
Block I/O Layer는 'Block I/O 구조', Bio의 리스트를 생성한다. 이 Bio는 저장 장치에 제출되는 I/O 동작을 나타낸다. 즉, Block I/O Layer는 디스크에 요청되는 I/O 명령의 리스트인 것이다. 이는 Block Device의 특정성을 제거하고 추상적인 개념을 제공하는 역할을 한다. 간단한 I/O는 single bio로, 복잡한 I/O는 Large-sized I/Os 또는 vector I/O로 표현된다. 최종적으로 Block Layer는 I/O 명령을 특정 sector, 저장장치의 특정 영역에 대한 request로 변환하여 Disk Controller에게 전송한다. 각 Request는 하나 이상의 bio를 포함한다.
내가 이해한 대로 정리하자면, Block Layer는 디스크에 대한 추상화를 통해 위에서 내려온 I/O 명령이 실제 디스크에 적용될 수 있도록 변환하여 Disk Controller에게 전달하는 역할을 한다.
그렇다면 우리는 ZNS 하드디스크에 입출력 명령을 입력한 후 위의 과정들을 거치면서 사용되는 함수들을 분석하고, 그 함수들이 ZNS 하드디스크의 어느 부분에 데이터를 저장하게 하는지를 알아볼 필요가 있겠다.
'ZNS Isolation with Linux Container' 카테고리의 다른 글
| VNC Server 설정하기 (0) | 2022.06.23 |
|---|---|
| Linux Shell Commands (0) | 2022.06.23 |
| QEMU를 이용한 ZNS 개발환경 구축 완료 (0) | 2022.05.24 |
| 착수보고서 작성, Cgroup과 조금 친해지다 (0) | 2022.05.11 |
| ZNS와 Linux Container (0) | 2022.04.28 |