Come faccio a verificare se tutte le scritture sul mio disco rigido sono allineate ai suoi settori 4K?


9

Sto usando Linux con 4 dischi rigidi che utilizzano settori 4k. Esistono diversi livelli tra il mio filesystem e i dispositivi raw: Dischi> Linux Raid 5> dm-crypt> LVM.

Ogni risorsa che ho trovato ha spiegato come impostare ciascun livello per garantire che le scritture sopra quel livello siano allineate al confine del settore 4K. Tuttavia, non ho trovato nulla che spieghi come verificare che le scritture fatte sui dischi rigidi stiano effettivamente avvenendo ai limiti di 4k.

Non sono interessato a riesaminare la mia configurazione per utilizzare la logica per determinare se è allineata correttamente. Voglio esaminare cosa sta realmente accadendo quando le scritture vengono fatte sul disco.

Come posso registrare o visualizzare gli indirizzi e le dimensioni delle scritture che vengono eseguite sui miei dischi rigidi, in modo da poter verificare che siano allineate correttamente?

Risposte:


2

Mi sono posto la stessa domanda qualche tempo fa e ho semplicemente fatto quanto segue:

Ha scritto con la shell un paio di volte una stringa piuttosto insolita in un file (qualcosa come "WackaWacka") Quindi ha semplicemente cercato con un dump esadecimale (usato od ) il contenuto effettivo del disco e verificato se è stata memorizzata la prima occorrenza della stringa esattamente all'inizio di un blocco 4k.

Suggerimento: non utilizzare un editor: potrebbe creare file temporanei che non si conoscono e che potrebbero contenere anche le stringhe. Fallo in questo modo:

 $ for i in 1 2 3 4 5 ...
 >  do
 >   echo "WackaWacka!"
 >  done > mytestfile

Quindi .sh_history può contenere la stringa di ricerca, ma non 5 volte di seguito ;-)

E poi, basta cercare:

 # sync
 # od -c /dev/sda | grep 'W   a   c   k   a'

Bene, è meglio farlo su un disco piuttosto vuoto per evitare la ricerca di dati Gigabyte ;-)


1
Poiché dm-crypt è uno dei livelli nel mio stack, questa soluzione non è sufficiente, poiché questi caratteri non verranno scritti sul disco.
Brian Pellin

Questo è male. Solo un'altra soluzione che mi viene in mente è cambiare esplicitamente un blocco 4k in un file e verificare se è cambiato solo il contenuto di un blocco fisico sul disco (o se sono interessati due blocchi consecutivi) - e questo funzionerà solo se i dati non sono compressi dal livello di crittografia. Tuttavia, bisogna sapere su quale blocco del disco è memorizzato il file e la ricerca di eventuali modifiche può essere difficile su dischi di grandi dimensioni.
ktf,

2

Scrivi un blocco 4k e guarda quanti dati vengono letti / scritti con iostat(le colonne 'Blk_read' 'Blk_wrtn'). Se i dati non sono allineati, una scrittura innescherà prima le letture e genererà più di 4k di scritture.

Dovrai fare attenzione a non misurare gli aggiornamenti dei metadati, però ... o semplicemente eliminarli facendo migliaia di scritture in 4K ... Quindi assicurati che nient'altro stia eseguendo la scansione dei dischi o conservando i file aperti (penso che lsofsarebbe sufficiente?), quindi aprire un nuovo file, attendere, eseguire iostat, scrivere 4k sul file, sincronizzare la scrittura (o semplicemente aspettare un po '?) quindi ricontrollare iostat.

Questo sembra dare un risultato ragionevole per me:

iostat  -d /dev/hdb3
dd if=/dev/urandom of=/mount/path/ofhdb3/tmptest bs=4k count=10000 conv=fdatasync
iostat  -d /dev/hdb3

iostatLa pagina man di Note afferma di riportare in blocchi da 512 byte e vedo che sono stati scritti poco più di 80000 blocchi aggiuntivi e nessun blocco letto. Se il tuo allineamento è disattivato, vedrai un numero simile di letture (poiché per scrivere un 4k mal allineato, è necessario leggere i due blocchi interessati, mutarli e riscriverli). In effetti, l'unica ragione per cui l'allineamento è importante è evitare tali letture (quindi è proprio quello che vuoi cercare: un trigger di carico di lavoro in scrittura legge?)


Sai se iostat sta segnalando il numero di letture / scritture che il sistema operativo esegue sul dispositivo a blocchi o questo numero si basa sul disco che indica quanti blocchi ha letto e scritto?
Brian Pellin,

Sospetto che sia dall'astrazione del dispositivo di blocco del sistema operativo, non direttamente dall'unità, ma non lo so per certo. Non sono nemmeno sicuro che sarebbe "sopra" o "sotto" il livello dm-crypt.
PT,
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.