기본 512 바이트 물리 섹터 크기가 Linux의 SSD 디스크에 적합합니까?


11

GSmartControl 및 다른 명령 줄 도구 (같은 fdisk, smartctl, cat /sys/block/sd*/queue/hw_sector_size, cat /sys/block/sd*/queue/physical_block_size) 내 디스크 모두에 대해 동일한 보고서를 사용했다 :

Sector Size: 512 bytes logical/physical

이것은 기본 Ubuntu 18.10 (나중에 19.04로 업그레이드) 설치입니다. 그러나 stat -f두 디스크 의 명령은 다음을보고합니다.

Block size: 4096       Fundamental block size: 4096

내 디스크는 모두 SSD이며 AFAIK SSD 디스크의 섹터 크기는 4K 입니다. 괜찮습니까? 아니면 뭔가 빠졌습니까? 에 의해 반환되는 정보는 않는다 stat(= 4K) OS가 할 수 있도록 항상 에서 디스크 IO를을 보내 4K의 여러 이러한 블록이됩니다 결코 크로스 4K 경계 (IO 블록은 항상 4K로 정렬됩니다)?

다음 출력에 유의하십시오 ( sdb2루트 파티션 , sda/home디스크 임).

# fdisk -l /dev/sd?
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: SanDisk SDSSDH35
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdb: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Disk model: ADATA SU800NS38 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: xxxx....

Device       Start       End   Sectors  Size Type
/dev/sdb1     2048   1050623   1048576  512M EFI System
/dev/sdb2  1050624 500117503 499066880  238G Linux filesystem

# df / /home
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sdb2      244568380  17799136 214276188   8% /
/dev/sda       479670976 129685112 325550152  29% /home

예. 유용한 정보가 들어 있습니다. (4K) OS가됩니다 스탯에 의해 반환 된 정보를 확인 하는가 : 그러나, 나는 질문에 대한 권위있는 대답을 발견하지 않았습니다 항상 4K의 복수의 디스크 IO를 보내고 이러한 블록 것이다 결코 크로스 4K 경계 (IO 블록은 항상 것입니다 4K에 정렬)?
FedonKadifeli

"stat (4K)"가 무엇인지 모르겠습니다. 그러나 대부분의 최신 OS는 기본 4K I / O 전송을 처리하는 방법을 알고 있습니다. 그리고 파티션이 올바르게 정렬되지 않으면 블록이 디스크의 4K 경계를 넘지 않는다는 의미는 아닙니다. fdisk -l정렬 문제를 확인하는 데 사용 합니다. 그리고 물리적 구조 때문에 SSD의 작업은 약간 다르지만 그 분야의 전문가는 아닙니다.
heynnema

답변:


7

옛날에는 512 바이트 섹터가 디스크의 표준이었습니다. 이 시스템은 한 번에 하나의 섹터 만 읽고 쓸 수 있었으며 이는 기존 하드 드라이브가 할 수있는 최선이었습니다.

이제 현대 드라이브는 매우 조밀하고 빠르며 똑똑하며 한 번에 하나의 섹터 만 읽기 / 쓰기 섹터로 처리량을 크게 줄입니다.

비결은 ... 총 처리량을 어떻게 높이고 여전히 구 / 표준 디스크 하위 시스템과의 호환성을 유지 하는가? 8 개의 512 바이트 물리 섹터로 구성된 4096 블록 크기를 만듭니다. 4096은 이제 디스크와의 최소 읽기 / 쓰기 전송이지만 호환 가능한 512 바이트 척에서 OS로 전달됩니다.

즉, 시스템에 하나의 512 바이트 섹터 정보 만 필요한 경우에도 드라이브는 8 개의 512 바이트 섹터를 읽어 정보를 얻습니다. 그러나 시스템에 다음 7 개의 섹터가 필요한 경우 이미 읽은 상태이므로 디스크 I / O가 발생하지 않아도되므로 총 처리량의 속도가 증가합니다.

최신 운영 체제는 최신 4K 블록 크기의 최신 드라이브를 완전히 활용할 수 있습니다.


+1이지만 4096 / 512 = 8이므로 한 물리 섹터 4096b에는 512b의 8 개 (논리적) 섹터가 있어야한다고 생각합니다. parted논리 및 물리 섹터 크기를 모두 표시 하는 데 사용 합니다.
sudodus

@sudodus 잘 잡아. 편집이 수행되었습니다.
heynnema

따라서 파티션을 4k 경계에 맞추는 것이 중요합니다. 그렇지 않으면 모든 4k 블록로드 / 저장소가 실제로 두 개의 하드웨어 섹터에 닿습니다. (파티션 내부의 파일 시스템은 종종 파티션 시작에 맞춰 4k 블록을 사용합니다). 일부 포맷 도구는 첫 번째 파티션을 1MiB로 정렬하여 파티션 테이블을 제외하고 전체 MiB를 사용하지 않습니다. 현대 드라이브는 않습니다 , 4K로 물리적 섹터 크기를보고 여전히 512B 그들의 논리 섹터 크기에서 분리합니다.
Peter Cordes

@PeterCordes, 부트 섹터와 파티션 테이블 (처음 512 바이트)만이 첫 번째 Mibibyte에 저장됩니다. MSDOS 파티션 테이블 grub에서 BIOS 모드로 부팅하기 위해 추가 코드를 첫 번째 Mibibyte에 넣습니다. (GPT 에서 BIOS 모드로 부팅하려면 해당 코드에 대한 플래그 grub가있는 작은 파티션이 필요 bios_grub합니다).
sudodus

4

Wikipedia에 따르면 "AF (Advanced Format)는 AFD (4096)의 4096 바이트 섹터와 같이 섹터 당 512, 520 또는 528 바이트를 초과하는 디스크 드라이브에 데이터를 저장하는 데 사용되는 디스크 섹터 형식입니다." AF (고급 형식)는 기본적으로 512 바이트 대신 4,096 바이트의 섹터 크기를 사용하는 디스크 형식입니다. 레거시 시스템과의 호환성을 유지하기 위해 AF 디스크는 512 바이트의 섹터 크기를 에뮬레이션합니다.

두 개의 SSD를 실행 stat -f하여 얻은 것과 동일한 결과를 얻었습니다 smartctl. 두 SSD는 설치 될 때 OS에서 자동으로 인식되어 구성이 필요하지 않으므로 얻은 데이터가 블록 크기 및 섹터 크기의 기본 설정 인 것으로 보입니다.


@heynnema Wikipedia에서 복사 한 "4096 바이트 섹터"에 대해서는 아무것도 할 수 없으므로 Wikipedia와 동일하게 남겨 두어야합니다.
karel

2
@heynnema : 물리적 크기가 훨씬 큽니다. SSD는 "소위"삭제 블록 "으로 물리적으로 분할 된 NAND 플래시 메모리로 만들어졌습니다. 훨씬 더 클 수 있으며 4MB도 가능합니다.
MSalters

1

기본 512 바이트 물리 섹터 크기가 Linux의 SSD 디스크에 적합합니까?

두 디스크 모두 SSD이며 AFAIK SSD 디스크의 섹터 크기는 4K입니다. 괜찮습니까? 아니면 뭔가 빠졌습니까?

구 하드웨어 및 운영 체제는 2011 년 이후 (거의) 모든 스토리지 하드웨어에 4096 (또는 더 큰 ) 바이트 섹터 가 있기 때문에 512 바이트 섹터를 사용했습니다 . 그러나 일부 하드웨어는 레거시 시스템의 512 바이트 섹터 에뮬레이션을 지원합니다. 예외적으로 Samsung 840 EVO SSD의 크기는 2048KB 입니다.

오류 정정 코드 (ECC)는 각각 512 바이트 청크에 대해 계산하고, 당신이 상상할 수있는, ECC 데이터는 저장 공간이 필요합니다. ECC 알고리즘이 변경되지 않은 상태에서 하나의 4096 바이트 섹터에는 8 개의 512 바이트 청크보다 적은 ECC 정보가 필요하다는 것은 말할 필요도 없습니다. 결국 ECC 데이터 오버 헤드가 줄어 하드 드라이브의 총 저장 용량이 증가합니다.

x86 메모리 페이지 및 많은 파일 시스템 클러스터와 같은 다른 주요 수치도 4KB 크기를 사용하므로 4K 섹터를 사용하는 것은 아키텍처 관점에서 의미가 있습니다. 고급 형식은 더욱 강력한 ECC 알고리즘을 허용하며, 이는 계속 증가하는 용량에 비추어 중요합니다. 컨트롤러는 NAND 플래시 메모리 오류 특성과 워크로드 동작을 이해함으로써 오류 수정 이외의 추가 기술 을 사용 합니다.

AF (고급 형식)는 섹터 당 512, 520 또는 528 바이트를 초과하는 하드 디스크 드라이브 (HDD)의 자기 디스크에 데이터를 저장하는 데 사용되는 디스크 섹터 형식입니다 (예 : 4096, 4112, 4160 및 4224 바이트). AFD (Advanced Format Drive)의 4KB) 섹터. 더 큰 섹터를 사용하면 더 강력한 오류 수정 알고리즘을 통합하여 더 높은 스토리지 밀도에서 데이터 무결성을 유지할 수 있습니다.

SCSI (SAS) 디스크의 경우 데이터 와 함께 각 블록에 저장된 논리적 불량 블록 검사와 함께 SCSI T10 표준화 데이터 무결성 필드 로 인해 RAID 블록 크기가 JBOD 블록 크기보다 큽니다 . SAS RAID 어댑터는 512 바이트 데이터 또는 4K 바이트 데이터를 기반으로 디스크 블록을 지원합니다. 512 디스크의 RAID 블록 크기는 섹터 당 528 바이트이고 4K 디스크의 RAID 블록 크기는 섹터 당 4224 바이트입니다.

회전 디스크 물리 섹터 크기가 아닌 메모리에 쓰려고하기 때문에 파티션이 지우기 블록 크기와 정렬되도록하는 것보다 효과가 떨어 집니다 . 그렇더라도 최신 소프트웨어 및 하드웨어를 보유하고 4K 섹터 크기를 사용하는 것이 가장 좋습니다.

더 큰 섹터 크기가 권장됩니다- " SSD 물리적 섹터 크기를 변경하여 최적의 성능을 얻으십시오 ".

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.