GN⁺: Ext4 시각화
(buredoranna.github.io)ext4 파일 시스템의 모습은 어떠한가?
- 빈 드라이브에
mkfs.ext4
명령을 실행하면, 드라이브에는 ext4 파일 시스템이 구성됨. - 이 과정에서 0x00으로 이루어진 "아무것도 없음"에서 ext4 파일 시스템의 목적있는 바이트 배열로 변모함.
- 가상 머신에 작은 보조 드라이브를 추가하거나, 루프 디바이스로 구성된 일반 파일로 작업을 단순화함.
루프 디바이스를 사용하여 실험
- 루프 디바이스 사용이 간소화되어
losetup
없이mount -o loop <foo_file> <bar_dir>
와umount <bar_dir>
만으로 마운트 및 언마운트 가능함. -
dd
명령을 사용하여/dev/zero
에서 데이터를 읽어 64x1024 바이트 크기의 블록 8개를 가진 파일 생성함.
ext4 파일 시스템 생성 후의 변화
-
mkfs.ext4
를 실행한 후의 블록 파일은od
명령의 출력을 통해 구조를 확인할 수 있음. - 이 출력에서 ext4 파일 시스템의 구조적 특징을 볼 수 있음.
시각화를 통한 ext4 구조 이해
- 각 블록이 1024x64 픽셀로, 각 픽셀이 하나의 바이트를 나타내는 시각화 이미지 제작.
- ext4 파일 시스템 생성 후의 이미지에서는 mkfs.ext4에 의해 추가된 구조와 데이터 위치를 볼 수 있음.
- ext4 데이터와 "사용자" 데이터를 구별하기 위해
/dev/urandom
에서 생성한 1024 바이트 파일을 루프 디바이스에 복사하고, 시각화 코드에서 이를 구별하여 색상 코드로 표시함.
사용자 데이터 추가 후의 시각화
- 사용자 데이터가 드라이브에 복사된 후의 이미지는 ext4 데이터와 사용자 데이터의 구분이 가능함.
- 추가적으로, 사용자 데이터 파일을 드라이브에 세 번 복사하여 애니메이션 GIF를 생성함.
ext4와 ext2 비교
- ext4 파일 시스템의 애니메이션과 비교하여 ext2 파일 시스템의 애니메이션도 제작함.
GN⁺의 의견
- 이 글은 ext4 파일 시스템이 실제로 어떻게 드라이브에 구성되는지를 시각적으로 이해하는 데 도움이 됨.
- 사용자 데이터와 시스템 데이터를 구별하는 시각화 방법은 파일 시스템의 작동 원리를 배우는데 매우 유익함.
- ext4와 ext2의 비교를 통해 파일 시스템 간의 차이점을 직관적으로 이해할 수 있는 기회를 제공함.
Hacker News 의견
-
몇 년 전 FOSDEM에서 ext4 파일 시스템의 진정한 그래픽 시각화를 했음. 시각화는 약 20분부터 시작되는 비디오가 있음. 프로젝터가 사용한 연한 파란색을 제대로 표현하지 못해 혼란스러울 수 있으나, 블로그에 올바르게 렌더링된 비디오가 있음.
-
컴퓨터 사용을 단순화하려는 많은 사람들의 목표가 교육적인 가치를 가질 수 있는 것들을 만들어냄. 예를 들어, 하드 드라이브 활동을 나타내는 빨간 불빛 같은 것은 사용자의 호기심을 자극하고 정보를 제공함. 고급 보기를 숨기되, 호기심 많은 사람들을 위해 그대로 두는 것이 좋은 절충안이 될 수 있음.
-
pixd
라는 커맨드라인 유틸리티가 비슷한 데이터 시각화를 제공하지만, 시간에 따른 파일 시스템 변경을 보여주는 애니메이션 GIF만큼 멋지지는 않음. Hilbert 곡선을 사용하여 픽셀을 배열하는 것이 라인별로 픽셀을 그리는 것보다 도움이 될 수 있음. -
파일 시스템 IO를 시각화하는 nbdkit 데모를 흥미롭게 봄.
-
파일 시스템을 시각화하는 실험을 진행함. 결과물인
a.png
는 역으로 변환 가능하여 유효한.ext4
파일을 다시 얻을 수 있음. -
데이터 시각화는 디스크 포맷이 실제로 디스크에 데이터를 어떻게 배치하는지에 대한 복잡성을 이해하는 데 도움이 될 수 있음. 예를 들어, 최소한의 사용을 위해 사전 할당된 메타데이터 등이 있음. 공간이 부족해지는 상황이 발생했을 때 어떤 일이 일어날지 궁금하지만, 애니메이션은 그 전에 멈춤.
-
저자가 이 댓글을 본다면, GIF를 비디오로 변환하여 전송하는 바이트를 절약하고 사용자에게 비디오 컨트롤(일시 정지, 스크럽, 속도 조절 등)을 제공할 수 있음.
- 예시 명령어:
ffmpeg -i ext4.gif -pix_fmt yuv420p -c:v libx264 ext4.mp4
- 예시 명령어:
-
innodb_ruby
라는 도구 세트가 InnoDB 구조를 시각화하고 배우는 데 매우 유용함. -
Kaitai IDE를 사용하여 각 바이트(또는 비트)별로 다양한 바이너리 형식을 시각화할 수 있음. ext4에 대한 정의 파일이 있음을 기억함.
-
이 다이어그램을 보며 메타데이터를 별도의 장치에 저장할 수 있는 파일 시스템이 있는지 궁금함. 예를 들어, 데이터는 HDD에, 메타데이터는 연관된 SSD 드라이브에 저장함. 메타데이터를 메모리에 캐시하기 쉬워 복잡성을 늘리는 것보다 혜택이 크지 않을 수 있음.