La dimensione del settore fisico predefinito da 512 byte è appropriata per i dischi SSD su Linux?


10

GSmartControl e qualsiasi strumento altra riga di comando (come fdisk, smartctl, cat /sys/block/sd*/queue/hw_sector_size, cat /sys/block/sd*/queue/physical_block_size) avevo usato lo stesso rapporto per entrambi i miei dischi:

Sector Size: 512 bytes logical/physical

Questa è un'installazione predefinita di Ubuntu 18.10 (successivamente aggiornata a 19.04). Tuttavia, il stat -fcomando su entrambi i dischi riporta:

Block size: 4096       Fundamental block size: 4096

Entrambi i miei dischi sono SSD e i dischi SSD AFAIK richiedono una dimensione del settore di 4K . Va bene o mi sto perdendo qualcosa? Le informazioni restituite da stat(= 4K) assicurano che il sistema operativo invierà sempre IO sul disco in multipli di 4K e questi blocchi non attraverseranno mai i confini 4K (i blocchi IO saranno sempre allineati a 4K)?

Nota il seguente output ( sdb2è la mia partizione di root , sdaè il mio /homedisco):

# 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

Sì. Contiene informazioni utili. Ma non ho trovato una risposta autorevole alla domanda: le informazioni restituite da stat (4K) assicurano che il sistema operativo invierà sempre IO sul disco in multipli di 4K e questi blocchi non attraverseranno mai i confini 4K (i blocchi IO saranno sempre essere allineato a 4K)?
FedonKadifeli,

Non so cosa sia "stat (4K)". Ma la maggior parte dei sistemi operativi moderni sa come gestire i trasferimenti I / O 4K nativi. E no, ciò non significa che i blocchi non attraverseranno mai i confini 4K sul disco a meno che le partizioni non siano allineate correttamente. Utilizzare fdisk -lper verificare la presenza di problemi di allineamento. E apparentemente il lavoro di SSD è leggermente diverso, a causa della loro costruzione fisica, ma non sono un esperto in quella zona.
heynnema,

Risposte:


7

Ai vecchi tempi, i settori a 512 byte erano la norma per i dischi. Il sistema usava leggere / scrivere settori solo un settore alla volta, ed era il massimo che i vecchi dischi rigidi potevano fare.

Ora, con le unità moderne che sono così fitte, e così veloci e così intelligenti, i settori di lettura / scrittura solo un settore alla volta rallenta davvero il rendimento totale.

Il trucco era ... come si accelera il throughput totale, mantenendo comunque la compatibilità con i sottosistemi di dischi vecchi / standard? Si crea una dimensione di blocco 4096 composta da otto settori fisici da 512 byte. 4096 è ora il trasferimento minimo in lettura / scrittura da / verso il disco, ma è distribuito in mandrini da 512 byte compatibili al sistema operativo.

Ciò significa che anche se il sistema necessita solo di un settore di informazioni da 512 byte, l'unità legge otto settori da 512 byte per ottenerlo. Se, tuttavia, il sistema ha bisogno dei prossimi sette settori, li ha già letti, quindi non è necessario che si verifichi l'I / O del disco ... quindi un aumento della velocità del throughput totale.

I moderni sistemi operativi possono sfruttare appieno le dimensioni dei blocchi nativi 4K di unità moderne.


+1 ma 4096/512 = 8, quindi penso che dovrebbero esserci 8 settori (logici) di 512 b in un settore fisico di 4096 b. Uso partedper mostrare sia la dimensione del settore logico che fisico.
sudodus,

@sudodus Buona cattura. Modifica eseguita.
heynnema,

Questo è il motivo per cui è importante allineare le partizioni a un limite di 4k, altrimenti ogni carico / negozio di blocchi 4k tocca effettivamente due settori hardware. (I filesystem all'interno delle partizioni usano spesso blocchi 4k allineati all'inizio della partizione). Alcuni strumenti di formattazione allineano la prima partizione di 1 MiB, lasciando inutilizzato un intero MiB ad eccezione della tabella delle partizioni. Dischi moderni non riportano la loro dimensione del settore fisico come 4k, si separano dalla loro dimensione del settore logico che è ancora 512B.
Peter Cordes,

@PeterCordes, Non solo il settore di avvio e la tabella delle partizioni (nei primi 512 byte) sono memorizzati nel primo Mibibyte. In una tabella delle partizioni MSDOS, grubinserisce codice aggiuntivo nel primo Mibibyte per l'avvio in modalità BIOS. (In un GPT, è grubnecessaria una piccola partizione con il bios_grubflag per l'avvio di quel codice in modalità BIOS).
sudodus,

4

Secondo Wikipedia "Advanced Format (AF) è qualsiasi formato di settore del disco utilizzato per archiviare dati in unità disco che supera 512, 520 o 528 byte per settore, come i settori di 4096 byte di un Advanced Format Drive (AFD)". Il formato avanzato (AF) è un formato del disco che utilizza in modo nativo una dimensione del settore di 4.096 byte anziché 512 byte. Per mantenere la compatibilità con i sistemi legacy, i dischi AF emulano una dimensione del settore di 512 byte.

Ho ottenuto gli stessi risultati che hai ottenuto correndo stat -fe smartctlsu due SSD. Entrambi gli SSD sono stati riconosciuti automaticamente dal sistema operativo quando sono stati installati e hanno richiesto una configurazione zero, quindi sembra che i dati ottenuti siano le impostazioni predefinite per le dimensioni del blocco e del settore.


@heynnema Non posso fare nulla riguardo ai "settori a 4096 byte" perché è stato copiato da Wikipedia, quindi devo lasciarlo così com'è in Wikipedia.
karel

2
@heynnema: la dimensione fisica è molto più grande. Gli SSD sono costruiti dalla memoria flash NAND ", che è fisicamente partizionata nei cosiddetti" blocchi di cancellazione ". Quelli possono essere molto più grandi, 4 MB è sicuramente possibile.
MSalters

1

La dimensione del settore fisico predefinito da 512 byte è appropriata per i dischi SSD su Linux?

Entrambi i miei dischi sono SSD e i dischi SSD AFAIK richiedono una dimensione del settore di 4K. Va bene o mi sto perdendo qualcosa?

I vecchi hardware e sistemi operativi utilizzavano settori a 512 byte, dal 2011 (quasi) tutto l'hardware di archiviazione ha 4096 (o più ) settori byte; ma alcuni hardware supportano l'emulazione di settori a 512 byte per i sistemi legacy. Ci sono eccezioni, l'SSD Samsung 840 EVO ha blocchi di dimensioni 2048 KB .

Viene calcolato un codice di correzione errori (ECC) per ogni blocco da 512 byte e, come puoi immaginare, i dati ECC richiedono anche spazio di archiviazione. Va da sé che un settore di 4096 byte richiede meno informazioni ECC di otto blocchi da 512 byte se gli algoritmi ECC rimangono invariati. Alla fine, la capacità di archiviazione totale di un disco rigido aumenta a causa del minore sovraccarico di dati ECC.

L'utilizzo dei settori 4K ha senso dal punto di vista architettonico, poiché anche altre figure chiave (come le pagine di memoria x86 e molti cluster di file system) impiegano le dimensioni di 4 KB. Il formato avanzato consente algoritmi ECC più robusti, il che è importante alla luce delle capacità sempre crescenti. I controller impiegano tecniche aggiuntive oltre alla correzione degli errori attraverso la comprensione delle caratteristiche di errore della memoria flash NAND e del comportamento del carico di lavoro.

Il formato avanzato (AF) è qualsiasi formato del settore del disco utilizzato per archiviare i dati su dischi magnetici nelle unità disco rigido (HDD) che supera 512, 520 o 528 byte per settore, come 4096, 4112, 4160 e 4224 byte ( 4 KB) settori di un Advanced Format Drive (AFD). Settori più ampi consentono l'integrazione di algoritmi di correzione degli errori più forti per mantenere l'integrità dei dati a densità di archiviazione più elevate.

Per i dischi SCSI (SAS) la dimensione del blocco RAID è maggiore di una dimensione del blocco JBOD a causa dei campi di integrità dei dati standardizzati SCSI T10 insieme al controllo logico dei blocchi danneggiati memorizzati su ciascun blocco con i dati. Gli adattatori RAID SAS supportano blocchi di dischi basati su 512 byte di dati o 4K byte di dati. La dimensione del blocco RAID per i dischi 512 è di 528 byte per settore e la dimensione del blocco RAID per i dischi 4K è di 4224 byte per settore.

Poiché si sta scrivendo in memoria e non la dimensione del settore fisico di un disco rotante ha un effetto minore rispetto a garantire che le partizioni siano allineate con la dimensione del blocco di cancellazione . Tuttavia, è meglio avere software e hardware aggiornati e utilizzare le dimensioni del settore 4K.

La dimensione del settore maggiore è consigliata da Intel: " Ottieni prestazioni ottimali modificando le dimensioni del settore fisico SSD ".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.