6P by neo 11달전 | favorite | 댓글 1개

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 드라이브에 저장함. 메타데이터를 메모리에 캐시하기 쉬워 복잡성을 늘리는 것보다 혜택이 크지 않을 수 있음.