xfs는 파일에 필요한 것보다 15-30% 더 많은 디스크 공간을 사용하는 것으로 보입니다.
# du
0 .
# dd if=/dev/zero of=test bs=1M count=5k
5120+0 records in
5120+0 records out
5368709120 bytes (5,4 GB) copied, 10,527 s, 510 MB/s
# ls -l
total 8388608
-rw-r--r-- 1 root root 5368709120 Oct 19 16:04 test
# du
8388608 .
전체 파일 시스템에 대해 어느 정도 이 작업을 수행하는 것 같습니다. 파일 시스템 크기의 1% 미만인 파일을 추가하면 파일 시스템에서 디스크가 꽉 찼다고 보고합니다.
# df
/dev/sdb6 40957913088 35624042728 5333870360 87% /xfs-export
mkxfs를 실행할 때 일부 멋진 옵션(ext2에 예약된 5%와 유사)으로 인해 발생합니까?
# uname -a
Linux server 2.6.39-bpo.2-amd64 #1 SMP Tue Jul 26 10:35:23 UTC 2011 x86_64 GNU/Linux
답변1
환경 변수 BLOCKSIZE를 640으로 설정했기 때문에 이상한 숫자가 표시되는 것 같습니다. BLOCKSIZE는 ls, du 및 df 인쇄에 영향을 미칩니다. BLOCKSIZE를 "1024" 또는 "1k"로 설정하면 예상되는 출력이 표시됩니다.
답변2
이 문제를 재현한 지 오랜 시간이 지났습니다. 이제 이해가 된 것 같습니다.
$ ls -l
total 0
$ dd if=/dev/md0 >> a bs=10000k &
$ ls -l
total 9111552
-rw-r--r-- 1 rt rt 5816320000 Jan 7 23:31 a
dd
일시 중단된 경우에도 완료(또는 종료)될 때까지 이 상태로 유지됩니다 dd
. 그 후에는 상황이 정상적으로 보입니다.
$ kill %1; ls -l
total 20120000
-rw-r--r-- 1 rt rt 20602880000 Jan 7 23:33 a
따라서 xfs가 파일 확장자를 위한 공간을 예약하는 것처럼 보입니다.
질문의 내용은 dd
완전하지만 보존을 정당화할 수 있는 다른 열려 있는 파일이 있을 수 있습니다.
답변3
XFS에는 동적 추측적 EOF 사전 할당이라는 기능이 있습니다. 파일 조각화를 줄이기 위해 더 많은 바이트를 쓸 것으로 예상하여 더 많은 공간을 할당할 수 있습니다. (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=055388a3188f56676c21e92962fc366ac8b5cb72)