-
프로젝트 명
- ZNS를 이용한 리눅스 컨테이너 I/O isolation 기법
-
개요
- 현재 사용되는 Block Interface SSD는 컨테이너 간에 저장 공간을 분리하지 않기 때문에 I/O 간섭 발생
- ZNS SSD(Zoned Namespace SSD)란?
- NAND flash 메모리를 zone 단위로 구별하여 사용하는 SSD로, 용도와 사용주기가 동일한 데이터를 순차적으로 저장하기 때문에 성능 및 공간 효율이 높음
-
목표
💪백견이 불여일타 (Typing is Better Than Looking)
김동욱 | 채기중 | 김지원 |
---|---|---|
201724419 | 201724596 | 201924445 |
[email protected] | [email protected] | [email protected] |
- Device Mapper에서 chunk와 zone을 매핑하기 위해 사용하는 매핑 테이블
- Ext4 파일시스템에서 ZBD에 I/O 요청을 가능하게 하는 device mapper에 매핑 테이블과 cgroup을 추가하여 구현
- ZNS에는 순차 쓰기를 위한 buffer zone과 순차 쓰기가 수행된 data zone이 존재하며, 이 두 유형의 zone을 매핑 테이블에 mapping / unmapping 하는 함수 구현
- Chunk에 새로운 I/O가 발생할 경우 zone을 할당하고 매핑 테이블에 cgroup id와 zone id 업데이트
- I/O를 실행하기 위해 컨테이너가 chunk에 접근
- Chunk에 접근하는 컨테이너 cgroup id로 해당 chunk와 zone를 컨테이너가 사용 중인지 확인
- 컨테이너가 chunk에 해당하는 zone을 사용 중이면 사용중인 zone을 반환, 사용하고 있지 않으면 unmapped zone을 할당
- 컨테이너가 chunk에 해당하는 zone을 더 이상 사용하지 않는 경우 매핑 테이블에서 cgroup id를 삭제한 후 zone 할당 해제
- Device mapper install: dm-zoned
git clone https://github.com/TypingIsBetterThanLooking/Capstone-2022-1-44.git
sudo apt update
sudo apt upgrade
sudo apt install libncurses5-dev flex bison libssl-dev wget
cp /boot/config-$(uname -r) .config
grep -c processor /proc/cpuinfo
sudo oldconfig
sudo make -j32(number of cpu cores in step 4)
sudo make modules_install -j32
sudo make install -j32
sudo update-grub
sudo reboot
sudo zbd reset /dev/nvme0n1
sudo dmzadm --format /dev/sdb(conv) /dev/nvme0n1(seq)
sudo dmzadm --start /dev/sdb(conv) /dev/nvme0n1(seq)
sudo mkfs.ext4 /dev/dm-0
sudo mount /dev/dm-0 /mnt/zns(mount point)