답변:
512 바이트는 실제로 기본 섹터 크기가 아닙니다. 하드웨어에 따라 다릅니다.
/sys
의사 파일 시스템을 통해 디스크가보고하는 물리 / 논리 섹터 크기를 표시 할 수 있습니다 . 예를 들면 다음과 같습니다.
# cat /sys/block/sda/queue/physical_block_size
4096
# cat /sys/block/sda/queue/logical_block_size
512
이 두 값의 차이점은 무엇입니까?
physical_block_size
드라이브 원자 동작 쓰기 할 수있는 블록의 최소 크기이다.logical_block_size
드라이브가 쓸 수있는 작은 크기 (리눅스 커널 문서를 참조)입니다.따라서 4k 드라이브가있는 경우 스토리지 스택 (파일 시스템 등)이 물리적 섹터 크기보다 크거나 같은 것을 사용하는 것이 좋습니다.
이러한 값은 다음과 같은 최신 버전에도 표시됩니다 fdisk
.
# fdisk -l /dev/sda
[..]
Sector size (logical/physical): 512 bytes / 4096 bytes
현재 리눅스 배포판에서, (최적 섹터 크기를 고려해야하는) 프로그램 mkfs.xfs
은 기본적으로 최적 섹터 크기를 선택합니다 (예 : 4096 바이트).
그러나 옵션을 통해 명시 적으로 지정할 수도 있습니다. 예를 들면 다음과 같습니다.
# mkfs.xfs -f -s size=4096 /dev/sda
또는:
# mkfs.ext4 -F -b 4096 /dev/sda
어쨌든 대부분의 mkfs
변형은 실행 중에 사용 된 블록 크기도 표시합니다.
기존 파일 시스템의 경우 다음과 같은 명령으로 블록 크기를 결정할 수 있습니다.
# xfs_info /mnt
[..]
meta-data= sectsz=4096
data = bsize=4096
naming =version 2 bsize=4096
log =internal bsize=4096
= sectsz=4096
realtime =none extsz=4096
또는:
# tune2fs -l /dev/sda
Block size: 4096
Fragment size: 4096
또는:
# btrfs inspect-internal dump-super /dev/sda | grep size
csum_size 4
sys_array_size 97
sectorsize 4096
nodesize 16384
leafsize 16384
stripesize 4096
dev_item.sector_size 4096
파티션에서 파일 시스템을 만들 때 확인해야 할 또 다른 사항은 파티션 시작 주소가 실제로 물리적 블록 크기에 정렬되어 있는지입니다. 예를 들어, fdisk -l
출력을 보고 시작 주소를 바이트로 변환하고 물리적 블록 크기로 나눕니다. 파티션이 정렬 된 경우 알림은 0이어야합니다.
fdisk -l
8로 나누고 512로 나누었습니다. 나머지는 0이 아니므로 파티션이 정렬되지 않은 것 같습니다
fdisk -l
보고서 Units = sectors of 1 * 512 = 512 bytes
2048 1026048 I 컴퓨팅에서 시작 2 개 파티션이있는 4,096분의 512 논리적 / 물리적 드라이브 따라서, - 내 리눅스 시스템 중 하나 2048*512%4096
와 1026048*512%4096
파이썬 쉘에서 예 -. 두 표현식이 모두 0이므로 해당 파티션은 4k로 정렬됩니다.
아니요, 가능하지 않거나 중요하지도 않습니다. IO는 일반적으로 어쨌든 4096 바이트 이상의 단위로 수행됩니다.
예, 가능하지만 그렇게하면 드라이브가 훨씬 빨리 채워집니다. 512K 미만의 파일의 경우, 각 파일은 전체 4096K (4MB)를 차지하고 대부분의 파일 시스템 (NTFS 등)이 파일을 섹터를 공유 할 수 없기 때문에 나머지 섹터를 0으로 채 웁니다. 파일 시스템에 가장 적합한 옵션은 가변 섹터 크기를 허용하는 것이지만 MFT (마스터 파일 테이블)의 크기를 늘리고 데이터 손상의 위험을 증가시키면서 데이터를 쉽게 복구하는 기능을 줄입니다. 즉, 경계는 복구 소프트웨어에 의해 완전히 알려지지 않았습니다. 따라서 4096K 논리 섹터 크기는 대용량 파일에 적합하지만 일반적인 일상적인 사용 PC에는 0에 불과합니다. 자, 그 말로 논리 섹터 크기보다 작은 데이터에 대해서는 MFT 자체에 데이터를 저장하는 옵션이 있습니다. 그러나 이것은 MFT가 커지고 데이터가 두 번 기록됨을 의미합니다 (HDD에는 MFT 사본이 두 개 있습니다). 또한 MFT의 최대 크기를 지정해야 최대 값에 도달하거나 드라이브 사용량이 MFT에서 사용할 수있는 용량을 초과 할 때 문제가 발생할 수 있습니다. 이 모든 것은 NTFS 파일 시스템의 사용을 기반으로합니다. 더 밝은면에서 NTFS를 사용하면 4MB 이하의 논리 섹터 크기에 대해 블록 수준의 파일에 대해 기본 압축을 사용할 수 있습니다. 이 제한은 NTFS 압축 작동 방식에 따라 적용됩니다. 논리 섹터 크기에 관계없이 4MB 블록을 읽고 압축합니다. 물론 이것은
자, 이것은 당신에게 약간의 문제를 분명히합니까?
Sector:
1) Logical Sector: Called Native Sector.
Manufacture default setting. user cannot change.
Before 2010 year: 512b/sector
After 2010 year: 4k/sector.
Few manufacture provide HDD tool to change native sector.
2) Physical Sector: Called Cluster(or allocation unit - FAT windows) or Block(Linux/Unix)
User can change physical sector size 512b,1k,2k,4k,... by format or partition tool. Physical sector contains one or few more native sectors.
(example1: if you have HDD 512b/native sector: user can set 4K/Physical sector. this mean 1 cluster = 4 native sector)
(example2: if you have HDD 4K/native sector: user can set 4K/Physical sector. this mead 1 cluster = 1 native sector)
3) File system deal with Physical sector(or block or Cluster) only.
mkfs.*
은 자동으로 최적의 섹터 크기를 사용해야합니다. 몇 가지mkfs.*
테스트를 수행하고 결과를 검사 할 수 있습니다 (mkfs의 자세한 출력 또는 관련 fs 유틸리티 프로그램에서).