la dimensione del blocco fisico è di 2048 byte, ma Linux afferma che è 512


0

So che questo messaggio di errore sta perseguitando così tante persone che provano a formattare un'unità USB. Ma quando lo cerco, tutto ciò che ottengo sono le "istruzioni". Ma voglio davvero capire il background tecnico in materia.

Ho letto molto su settori, cilindri, blocchi, eccetera ... Ho capito tutto quindi penso di avere un solido background ora.

In tutti i tutorial che ho letto, nessuno ha menzionato la "dimensione del blocco fisico". Ma dalla mia comprensione fino ad ora lo avrei tradotto in "dimensioni del settore sul dispositivo". Corretta?

Penso (non ho trovato conferma da nessuna parte per questo) che il "descrittore di dispositivo USB" sia memorizzato da qualche parte dal "controller". Non fa parte del chip flash NAND. Immagino che funzioni così: il mio sistema operativo invia una sorta di richiesta GET al chip controller dell'USB. Il chip del controller restituisce il "descrittore del dispositivo". Quel "descrittore di dispositivo" contiene informazioni come il fornitore E la dimensione del settore (= dimensione del blocco fisico ??).

Ecco come il mio sistema operativo conosce la dimensione del blocco fisico. Ma come mai "Linux affermerebbe che è 512" ??? Dove sono archiviate queste informazioni, come arriva Linux a tale affermazione?


Parole da 512 x 32 bit?

mi scusi?
user3182532

forse sono quattro settori a 512 byte in un cluster a 2048 byte (cluster a 4 settori)
jsotola

Non credo che le informazioni siano esposte in modo ufficiale e standard dal firmware della memoria flash. Alcuni produttori possono fornire comandi non standard per arrivarci. Ma non è affidabile. Le unità di memoria flash USB livellano l'usura e si sono "convergenti" sulla "dimensione del blocco" da 512 byte, indipendentemente dal loro reale settore fisico. (Tuttavia, potrebbero esserci alcuni programmi che potrebbero tentare alcuni mezzi non standard per ottenere queste informazioni. Un driver Linux non se ne preoccuperà. Quindi riporterà ciò che il dispositivo riporta. E in genere NON sarà il suo settore fisico.)
Jon

Potresti mostrare il risultato dihdparm -I /dev/sdX | grep -i physical
Alex,

Risposte:


0

Penso che stai confondendo le caratteristiche fisiche del chip flash con le impostazioni del sistema operativo e del file system.

Il chip flash avrà una dimensione di blocco o settore, che è la più piccola unità di memoria che può essere cancellata e scritta elettricamente. Una dimensione del blocco di 2048 byte non è rara. Ancora una volta, questa è una caratteristica fisica dei circuiti flash ... simile ai settori di un disco rigido magnetico rotante.

La dimensione del blocco del filesystem è la più piccola unità di memoria che il sistema operativo utilizzerà per archiviare un file o parte di un file. Questo di solito viene specificato quando il supporto (ad es. Unità flash) viene formattato per la prima volta e può essere modificato solo se si riformatta il supporto di archiviazione. Se si sceglie una dimensione di blocco piccola (e 512 byte è una dimensione di blocco piccola), si spreca meno memoria durante la memorizzazione dei file. D'altra parte, la scelta di un blocco di grandi dimensioni significa che c'è una frammentazione minore di un file di grandi dimensioni quando viene archiviato. Di solito, quando il volume ha una capacità maggiore, viene utilizzata una dimensione di blocco maggiore (ad esempio 4096 byte).


grazie ma so già tutto questo, puoi rispondere alle mie ultime 2 domande? forse devo riformulare: se la dimensione del settore è (fatto fisico!) 2048 byte, perché Linux dovrebbe dire "no non lo è, è 512". Quale processo porta il sistema operativo a tale conclusione? Quale file ha letto, quali informazioni sono state recuperate da dove, quale interpolazione è stata fatta, PER arrivare a quel risultato? Perché Linux dice qualcosa che non è vero?
user3182532

Devi fornire maggiori informazioni. In quale contesto Linux "dice" esattamente che la dimensione del settore è di 512 byte? Come fai a sapere che la dimensione effettiva del settore è 2048 byte? Devi essere molto più specifico di "dice il SO".

0

Panoramica rapida (se vuoi davvero capire tutti i dettagli, dovrai leggere gli standard, che sono tutti disponibili online):

Il protocollo USB per i dispositivi di archiviazione è più o meno identico ai comandi utilizzati per i dispositivi SCSI . Quindi hai comandi per leggere e scrivere blocchi e un sacco di altri comandi. Tra questi READ CAPACITY(16)(il 16 indica che il comando è lungo 16 byte, una variante precedente era lunga solo 10 byte), che restituisce, tra le altre informazioni, sia la dimensione dei blocchi logici sia quanti blocchi logici ci sono per blocco fisico.

Quindi è così che il sistema operativo conosce le dimensioni del blocco logico e fisico. Le informazioni di risposta sono memorizzate nel firmware del controller, non sul supporto di memorizzazione.

Ora può succedere che per i dischi rigidi USB, che consistono in un'unità SATA e un bridge bridge da USB a SATA, questo chip bridge sia difettoso e non inoltri correttamente la risposta del READ CAPACITYcomando (ho un'unità con tale chip, e ho confermato di ottenere una risposta diversa tramite SATA per lo stesso disco). In tal caso, anche se il disco rigido afferma correttamente di avere una dimensione di blocco fisica di 2048, il chip bridge manterrà questa risposta in modo che il sistema operativo ottenga indietro una dimensione di blocco fisica e logica identica. Quindi questo è il solito motivo della situazione in cui la dimensione del blocco riportata è errata.

Per le chiavette USB, la situazione è di nuovo diversa: non c'è un'unità SATA dietro un ponte, il controller e la ROM flash della chiavetta USB formano un'unità stretta e se il controller sta mentendo sulla dimensione del blocco fisico, allora sta mentendo a riguardo - niente si può fare. In realtà, non lo farai nemmeno ora che sta mentendo, perché mentre la ROM flash ha blocchi di cancellazione che giustificherebbero una "dimensione del blocco fisico", non ne conosci le dimensioni.

Non è stato davvero chiaro dalla tua domanda se stai parlando di hard disk USB o ROM flash USB - per i moderni hard disk si può presumere che abbiano una dimensione fisica del blocco di 2048, per flash ROM non si può assumere nulla, quindi la tua affermazione "la dimensione del blocco fisico è 2048" in quel caso è un po 'discutibile, a meno che tu non possa spiegare come lo sai.

E infine: un "descrittore di dispositivo USB" fa parte del protocollo USB stesso e una cosa completamente diversa.

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.