ZFS 압축의 역설: 논리 블록 vs. 물리 블록

2025-04-17

압축이 활성화된 ZFS 파일 시스템에서 `dd` 명령어를 사용하여 만든 256KB 크기의 영(0) 파일이 이상한 동작을 보입니다. `ls -l` 명령어는 256KB로 표시하지만, `ls -s`와 `ls -slh` 명령어는 훨씬 작은 크기, 거의 0으로 표시합니다. 이는 ZFS의 효율적인 압축으로 인해 물리적 블록 수가 최소화되기 때문입니다. 이 글에서는 파일 크기를 측정하는 방법으로 논리적 크기(바이트), 물리적 블록 수, 논리적 블록 수의 세 가지 방법을 살펴보고, POSIX의 `st_blocks` 필드가 어떤 크기를 보고해야 하는지 명확하게 지정하지 않기 때문에 파일 시스템 간에 파일을 이동하면 `st_blocks` 값이 변경될 수 있으며, 경우에 따라 파일 크기가 늘어나 새로운 파일 시스템에 맞지 않을 수도 있음을 지적합니다.

개발