Sandisk USB SSD가 서버에 연결되어 있습니다(정확한 모델을 모르고 거기에서 찾을 수 없습니다 lsusb -v
). 에 따르면 0이 아닌 크기의 파일을 만들 때마다 du
.
$ echo "foobar" > test
$ du -h test
1.0M test
$ du --apparent-size -h test
7 test
나는 이것이 장치의 블록 크기와 관련이 있고 블록 크기는 일반적으로 1MB가 아닌 4096바이트 정도라는 것을 읽었습니다. 디스크에 훨씬 작은 파일을 많이 쓰고 있으므로 공간의 90%가 낭비됩니다.
의 출력은 fdisk
다음과 같습니다
sudo fdisk -l /dev/sda
Disk /dev/sda: 931.5 GiB, 1000204140544 bytes, 1953523712 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 1048576 bytes
Disklabel type: dos
Disk identifier: 0x007fa07a
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 1953523711 1953521664 931.5G 7 HPFS/NTFS/exFAT
이것을 구문 분석하는 방법을 모르겠습니다. NTFS 형식이라는 의미입니까? df -T
으로 신고하세요 fuseblk
.
이것은 단지 드라이브를 포맷하는 문제입니까? 블록 크기를 선택할 수 있습니까? 아니면 항상 하드웨어에 의해 결정됩니까?
답변1
당신은보고있다할당 단위 크기파일 시스템이라고도 함블록 크기파일 시스템 수준에서. 그러나 이는 하드웨어 장치 수준에서 사용되는 블록 크기와 반드시 동일할 필요는 없지만 할당 단위 크기는 확실히 하드웨어 블록 크기의 정확한 배수여야 합니다. 그렇지 않으면 비효율적입니다.
Linux의 경우 파티션 테이블에 표시된 파일 시스템 유형은 의미가 없습니다. 유형은 파티션 내의 실제 데이터를 검사하여 자동으로 감지됩니다. 그러나 다른 운영 체제의 경우 파티션 테이블에 파일 시스템 유형을 올바르게 표시하는 것이 도움이 될 수 있습니다.
fuseblk
파일 시스템이 FUSE 사용자 공간 파일 시스템 드라이버에 의해 처리됨 을 나타냅니다 . 불행하게도 ntfs-3g
FUSE 드라이버는 NTFS( ) 및 exFAT 모두에 존재하므로 여기서는 별로 도움이 되지 않습니다. 최소한 Debian/Ubuntu에서는 다음을 실행할 수 있습니다 pgrep -a mount
. 출력이 다음과 같다면
<process ID> /sbin/mount.ntfs-3g /dev/sda1 <mountpoint of the filesystem> -o <some options>
글쎄, 그것은 ntfs-3g
드라이버에 의해 처리되고 있으며 분명히 NTFS입니다. 출력 줄에는 exFAT /sbin/mount.exfat-fuse
또는 이와 유사한 내용이 포함되어야 합니다(테스트용 실제 exFAT 파일 시스템이 없습니다).
하지만 exFAT도 파일 시스템을 생성할 때 지정하지 않는 한 1MB의 할당 단위 크기를 사용해서는 안 됩니다.마이크로소프트에 따르면, 32GB보다 큰 디스크의 기본 exFAT 할당 단위 크기는 128KB여야 합니다.