Cosa significa "allineare" le partizioni?


Risposte:


15

Allineare la partizione significa allinearla in modo che corrisponda alla vera struttura di blocco sottostante.

Da molto tempo ormai i dischi rigidi hanno usato blocchi da 512 byte. Poiché ciò è andato avanti per molto tempo, ora è quasi impossibile modificare la dimensione del blocco. Troppo software dovrebbe essere riparato.

Su un SSD la dimensione del blocco reale potrebbe essere 128 KB. Su un array RAID potrebbe essere 64 KB. Su un'unità di formato avanzato sarà di 4 KB.

Per compatibilità con le versioni precedenti, l'unità continua a funzionare con blocchi da 512 byte. Ma per motivi di prestazioni il tuo sistema dovrebbe davvero conoscere la dimensione del blocco reale.

Una delle modifiche alle prestazioni più facili da fare è allineare la partizione dell'unità con la dimensione del blocco reale in modo che quando il sistema operativo scrive 4 KB o 64 KB o 128 KB, scriva un blocco completo.

Se la partizione non fosse allineata, il risultato sarebbe scrivere 512 byte nel primo blocco e 4K - 512 byte nel secondo blocco, costringendo il disco / SSD / RAID a fare due cicli di lettura-modifica-scrittura anziché una sola scrittura.


Hai qualche suggerimento su unix.stackexchange.com/questions/248939/…
ART

@AnkurTank: No, la domanda sembra essere ben coperta.
Zan Lynx,

Grazie per l'attenzione, l'unica cosa rimasta è come confermare che le partizioni sono allineate. Perché per me parted si lamenta ancora che le partizioni non sono allineate. Inoltre ho provato ad usare altri strumenti come gdisk, ma non sono in grado di compilare gdisk per compilare. Quindi ho pensato se hai qualche suggerimento su come verificare che possa essere d'aiuto.
ART

3

Le partizioni sono sequenze di blocchi e per convenzione di vecchia data un blocco è di 512 byte.

Quindi una partizione può iniziare da qualsiasi multiplo di 512 byte all'interno di un disco, "visto" come una stringa di byte molto lunga.

L'hardware del disco sottostante, tuttavia, che originariamente aveva le stesse dimensioni del settore di 512 byte, utilizza ora una dimensione maggiore per l'efficienza. Diciamo che è 4096 byte.

Per motivi di compatibilità, il firmware che si trova tra il sistema operativo e l'hardware "parla ancora in settori". Quindi chiedi al primo settore e l'hardware recupera il primo blocco (4096 byte) e il firmware estrae e consegna lo slice appropriato. Si chiede il secondo blocco e il blocco viene probabilmente recuperato dalla cache.

Finora la mancata corrispondenza delle dimensioni del settore non ha svantaggi.

Ma il sistema operativo utilizza anche blocchi (di solito chiamati cluster ) per efficienza e li allineerà alla partizione. Quindi un cluster a 4 settori sarà composto dai settori 5, 6, 7 e 8.

Quando il sistema operativo richiede il cluster n. 2 del filesystem , al firmware vengono richiesti i settori logici 5, 6, 7 e 8. Se si trovano tutti nello stesso blocco del disco , il disco deve eseguire UNA lettura.

Ma se la partizione inizia nel settore "sbagliato", ad esempio il primo cluster nel filesystem finirà, semplificando, nei settori 2, 3, 4 e 5. E potrebbero quindi essere metà del primo blocco del disco (1 -2-3-4), metà nel secondo (5-6-7-8).

Ora hai bisogno di una lettura in più . Per rapporti OS-to-disk di 1: 1, questo equivale a raddoppiare le letture. Se il rapporto SO-disco è 2: 1, un cluster è composto da due blocchi hardware, saranno necessarie 2 + 1 = 3 letture, una penalità del 50%:

OS   |--- cluster  12 ---|--- cluster  13 ---|--- cluster  14...
     |                   |                   |
HDD  --|----|----|----|-a--|--b-|-c--|-d--|-e--|----|---        BAD
     |                   |                   |
HDD  |----|----|----|----|-a--|--b-|-c--|-d--|----|----|---     GOOD

Sopra, un cluster è composto da 4 blocchi hardware (rapporto 4: 1) di 2 settori ciascuno. Allinearsi su settori "pari" significa che per leggere un cluster queste 8 letture di settore si traducono in 4 letture di blocchi. L'allineamento su settori dispari significa che le stesse letture di 8 settori richiedono 4 + 1 = 5 letture di blocchi, una penalità di prestazione del 25% (aggiungi una lettura ogni quattro).

Se si dispone di un disco disallineato con un rapporto 4: 1, l'allineamento lo renderà più veloce del 20% (si salva una lettura ogni 5).

Per rendere "allineata" una partizione, è necessario spostare / impostare il suo offset dall'inizio del disco sul multiplo appropriato di settori 512b oppure (a seconda dello strumento) è possibile inserire una piccola partizione all'inizio del disco, con una dimensione tale che la partizione successiva inizia esattamente su un confine del settore del disco. In questo secondo caso, mentre in teoria hai bisogno della maggior parte dei settori N-1, ovvero pochissimi kilobyte, in pratica probabilmente dovrai sprecare alcune centinaia di kilobyte, possibilmente interi megabyte, al fine di spremere il maggior numero di prestazioni dal tuo disco rigido multi-gigabyte.

(Probabilmente potresti recuperare quello spazio e molto altro, scegliendo correttamente la dimensione del cluster del sistema operativo ).


1
Le letture non sono così male, sì, devi leggere un po 'di dati extra, ma leggere tre blocchi contigui non costa molto più tempo rispetto alla lettura di due. Il vero problema è quello di scrivere, per scrivere una sezione più piccola della dimensione del blocco sottostante è necessario leggere i dati, attendere che il disco esegua una rivoluzione completa e quindi riscriverlo.
lavaggio

1
Inoltre non è necessario creare partizioni extra, non esiste alcuna regola secondo cui tutto lo spazio su un disco deve essere partizionato.
lavaggio

2

Le unità sono quasi sempre divise in settori logici di 512 byte, sono possibili altre dimensioni ma vengono utilizzate raramente a causa di problemi di compatibilità. Con dischi rigidi più vecchi si trattava di settori separati che potevano essere scritti individualmente.

Fino alla metà degli anni 2000 le partizioni erano tradizionalmente allineate ai confini del "cilindro". Per ragioni storiche un "cilindro" era normalmente di 63 settori. Il settore 0 contiene il settore di avvio e la tabella delle partizioni. I settori successivi nel cilindro 0 talvolta contenevano informazioni aggiuntive per il bootloader. La prima partizione in genere iniziava all'inizio del cilindro 1.

La maggior parte dei filesystem raggruppa i settori in blocchi più grandi (a volte chiamati "cluster"). Di solito hanno dimensioni di 4KiB.

A un certo punto, i venditori di drive drive sarebbero stati più riluttanti se avessero usato anche settori fisici 4K, ma per motivi di compatibilità hanno mantenuto la dimensione del settore logico a 512 byte. Se l'host legge o scrive l'intero settore fisico in una sola volta, le cose sono veloci. Se la parte legge, le cose sono ancora piuttosto veloci in quanto l'unità può semplicemente scartare i dati indesiderati. Tuttavia, se l'host scrive solo una parte di un settore fisico, l'unità deve leggere il settore fisico, combinare i dati letti con i dati dall'host e quindi riscrivere il settore modificato. Ciò significa attendere che l'unità ruoti in posizione due volte anziché una volta.

Funziona bene se i cluster 4K del filesystem sono allineati ai settori fisici 4K dell'unità. Sfortunatamente il modo tradizionale di partizionare le unità significa che la prima partizione è sostanzialmente garantita per essere disallineata e le partizioni successive avevano solo una possibilità su 8 di essere allineate. I fornitori di unità di formato avanzato hanno quindi dovuto affrettare gli strumenti per aiutare le persone a riallineare le loro partizioni.

Considerazioni simili possono essere applicate con array di raid e SSD. Mentre una striscia di incursione è probabilmente molto più grande di un singolo cluster di filesystem, alcuni filesystem possono avere regioni o simili allineati alla potenza di due confini.

L'attuale prassi normale consiste nell'allineare le partizioni ai limiti di 1 MiB, che è una potenza sufficientemente grande di due per essere un multiplo di tutte le dimensioni di blocchi comuni.



0

Non so se questo è utile, ma la mia comprensione era che l'allineamento della partizione è quando si allinea una determinata partizione con un'unità stripe RAID sottostante.

Apparentemente, le prestazioni potrebbero risucchiare quando si utilizza un RAID basato su hardware o basato su software; potrebbero sorgere problemi se la posizione iniziale della partizione non è allineata con un limite dell'unità stripe nella partizione del disco creata sul RAID.

A seconda del factoring per la creazione di cluster di volume, è possibile creare un cluster di volume su un confine dell'unità stripe anziché accanto al confine dell'unità stripe. Questo comportamento potrebbe causare una partizione non allineata .

Potrei essere lontano e questo potrebbe non avere nulla a che fare con RAID;)

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.