- CoW(Copy-on-Write) 파일 시스템의 정의 및 BTRFS에서의 write 연산 방식 분석
- 파일 복사 중 BTRFS와 EXT4 간의 write 동작을 비교할 수 있도록 커널 코드 수정
- 파일 복사/쓰기 중 디스크-메모리 업데이트를 측정 및 분석
- inode 번호와 offset 번호를 측정하여 BTRFS와 EXT4의 동작 패턴 비교
- 측정 결과를 그래프로 시각화하여 분석 보고서 작성
두 가지 다른 파일 시스템 비교: (1) BTRFS, (2) EXT4 – 시나리오: 기존 파일을 복사하여 새 파일을 반복적으로 생성.
다음 메트릭을 측정, 비교 및 분석: – 메모리에서 디스크로의 실제 쓰기 타이밍: 파일이 스토리지에 동기화되는 시점에 로그가 출력됨. – inode #: 실험을 여러 번 반복하면 새 inode 번호가 변경됨. (선택사항!): 실험을 여러 번 반복할 때 inode 번호가 어떻게 변경되는지 관찰. – offset 값: 메모리에서 디스크로의 실제 쓰기 프로세스 동안 데이터가 디스크의 새 위치에 기록됨. 값이 기록되는 새 위치 (offset 번호). – 대상 실험 디렉토리 및 복사되는 파일만 분석 • 관련 없는 다른 디렉토리 또는 파일에 대한 로깅은 제외.
메트릭: – 출력을 저장하는 데 허용되는 모든 방법 (예: printk 및 dmesg). 주의! – 커널 메모리 내의 inode 구조체 번호 또는 오프셋을 측정하는 것이 아닙니다. – 데이터가 메모리에서 디스크로 업데이트(플러시)될 때마다 시간, 업데이트된 inode 번호 및 오프셋을 측정하십시오.
측정을 수행하려면 테스트를 위해 파일을 반복적으로 복사하는 셸 스크립트를 작성하십시오. – Shell script: 셸에서 실행되는 해석된 언어입니다. – Linux 명령을 활용하여 다양한 작업을 처리합니다. – 이 프로젝트에서는 복사된 파일을 수정하지 않습니다.
평가는 파일 시스템 간의 차이점을 관찰하기 위해 많은 수의 파일 복사를 수행해야 합니다. – 100번 이상의 파일 복사를 수행해야 합니다. – 복사할 파일 크기는 2MB 이상이어야 합니다.
커널 컴파일 명령어 make -j$(nproc) sudo make modules_install sudo make install sudo update-grub sudo reboot
stat -f -c “%T” . sudo filefrag -v testfile testfile_copy_1
ext4는 wirteback engine 경로가 2개, 페이지 단위 요청 페이지 크기는 4KB → 2MB 파일 수정 시 페이지에 쓰기 500번 호출됨. 페이지 단위 요청은 블록단위로 병합되어 디스크 업데이트를 요청하게됨.