많은 새 하드 드라이브의 물리적 섹터 크기는 4096입니다. 시스템이 기본 논리 섹터 크기인 512 대신 동일한 크기의 논리 섹터 크기를 사용하도록 할 수 있습니까?
일괄 읽기 및 쓰기 속도가 빨라지나요? 어디서 구성할 수 있나요?
답변1
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
드라이브가 쓸 수 있는 최소 크기입니다(Linux 커널 설명서 참조).
따라서 4K 드라이브가 있는 경우 스토리지 스택(파일 시스템 등)이 물리적 섹터 크기와 같거나 더 큰 것을 사용하는 것이 합리적입니다.
이 값은 최신 버전에도 표시됩니다 fdisk
. 예:
# fdisk -l /dev/sda
[..]
Sector size (logical/physical): 512 bytes / 4096 bytes
현재 Linux 배포판에서는 최적의 섹터 크기를 고려해야 하는 프로그램이 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이어야 합니다.
답변2
아니요, 그럴 수 없습니다. 설사 그렇더라도 상관없습니다. 그럼에도 불구하고 IO는 일반적으로 최소 4096바이트 단위로 수행되며 그 이상인 경우도 많습니다.
답변3
예, 가능합니다. 하지만 그렇게 하면 드라이브가 예상보다 훨씬 빨리 가득 차게 됩니다. 512K보다 작은 파일의 경우 각 파일은 전체 4096K(4MB)를 차지하고 섹터의 나머지 부분을 0으로 채웁니다. 왜냐하면 대부분의 파일 시스템(NTFS 등)에서는 파일이 섹터를 공유하는 것을 허용할 수 없기 때문입니다. 파일 시스템에 대한 최선의 옵션은 가변 섹터 크기를 허용하는 것이지만 이로 인해 MFT(마스터 파일 테이블)의 크기가 증가하고 데이터 손상 위험이 증가하는 동시에 데이터를 쉽게 복구할 수 있는 기능이 감소합니다. 즉, 복구 소프트웨어는 경계를 완전히 이해할 수 없습니다. 따라서 4096K 논리 섹터 크기는 대용량 파일에 적합하지만 일상적인 PC에서는 0에 불과합니다. 이제 데이터가 논리 섹터 크기보다 작은 경우 MFT 자체에 데이터를 저장하는 옵션이 있습니다. 그러나 이는 MFT가 거대해지고 데이터가 두 번 기록된다는 것을 의미합니다(HDD에 MFT 사본이 두 개 있음). 또한 MFT의 최대 크기를 지정해야 합니다. 이는 최대 크기에 도달하거나 드라이브 사용량이 MFT에 사용 가능한 공간을 초과하는 경우 문제를 일으킬 수 있습니다. 이 모든 것은 NTFS 파일 시스템 사용을 기반으로 합니다. 장점으로는 NTFS를 사용하면 논리 섹터 크기가 4MB 이하인 파일에 대해 블록 수준에서 기본 압축을 사용할 수 있습니다. 이 제한은 NTFS 압축이 작동하는 방식으로 인해 발생합니다. 논리 섹터 크기에 관계없이 4MB 블록을 읽고 압축합니다. 물론 섹터 크기가 4MB보다 큰 경우에는 경계를 넘어 데이터가 손실되므로 이런 일이 발생하지 않습니다.
자, 이것이 당신에게 조금 명확합니까?
답변4
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.