Come utilizzare il comando DD in Linux

Come utilizzare il comando DD in Linux
IL dd Il comando è usato per fare molte cose importanti. L'uso più comune e diffuso del dd Il comando è quello di realizzare unità USB avviabile da un Iso O Img file immagine. Lo uso molto per realizzare unità USB avviabile di diverse distribuzioni Linux. Ma ci sono altri usi del dd anche comando. Ad esempio, il dd Il comando può essere utilizzato per effettuare un backup della tabella delle partizioni, convertire testi e file, installare un bootloader su un'unità disco rigido, unità SSD o USB. IL dd Il comando può anche essere utilizzato per verificare le prestazioni di dispositivi di archiviazione come la latenza del disco rigido, la velocità di lettura e scrittura del disco rigido ecc.

In questo articolo, ti mostrerò alcuni degli usi comuni del dd Comando in Linux. Userò Debian 9 Stretch per la dimostrazione. Ma dovrebbe funzionare su qualsiasi altra distribuzione di Linux. Iniziamo.

Fare un'unità USB avviabile con DD:

Realizzare un'unità USB avviabile del tuo sistema operativo preferito con il dd Il comando è molto facile. Tutto ciò di cui hai bisogno è un drive USB e un Iso O Img Immagine del sistema operativo di cui si desidera creare un USB avviabile di.

Supponiamo che tu abbia scaricato un Iso Immagine di alpino Linux e il file viene salvata su ~/Download directory come Alpine-Standard-3.8.0-X86_64.iso

Ora, puoi elencare tutti i dispositivi di archiviazione o blocco connessi con il seguente comando:

$ sudo lsblk

Come puoi vedere, tutti i dispositivi di archiviazione o blocco connessi sono elencati. Qui, /dev/sdb è il mio drive USB. Ha due partizioni, /dev/sdb1 E /dev/sdb2. Ma quando fai unità avviabile USB, devi usare il /dev/sdb, l'intero dispositivo a blocchi, non nessuna partizione.

Ora crea un'unità USB avviabile di Alpine Linux con il seguente comando:

$ sudo dd if = ~/downloads/alpine-standard-3.8.0-X86_64.ISO di =/dev/sdb bs = 1m

Qui, if =~/Downloads/alpine-standard-3.8.0-X86_64.iso l'opzione viene utilizzata per dirlo dd che il file di input è nel percorso ~/Downloads/alpine-standard-3.8.0-X86_64.iso e di =/dev/sdb l'opzione viene utilizzata per dirlo dd che il file di output è nel percorso /dev/sdb. Il BS =1 m dice dd da leggere da ~/Downloads/alpine-standard-3.8.0-X86_64.iso e scrivi a /dev/sdb 1 megabyte di dati alla volta.

Come puoi vedere, il file ISO viene copiato sul dispositivo di blocco /dev/sdb. Ora puoi usarlo per installare Alpine Linux.

Questo comando è molto distruttivo. IL dd Il comando si asciuga la tabella delle partizioni e altri metadati, flag dal dispositivo di blocco. Quindi devi stare attento.

Visualizzazione della barra di avanzamento:

Per impostazione predefinita, il dd Il comando non mostra alcuna barra di avanzamento. Ma puoi dirlo dd per mostrarlo con il status = progresso opzione.

Ad esempio, per copiare i dati da /dev/sda A /dev/sdb 1 megabyte alla volta e mostra anche la barra di avanzamento, esegui il seguente comando:

$ sudo dd if =/dev/sda di =/dev/sdb bs = 1m status = progress

Come puoi vedere, viene visualizzata la barra di avanzamento. Puoi vedere quanto dei dati vengono copiati e la velocità con cui vengono copiati.

Misurare le prestazioni di lettura e scrittura di un dispositivo di archiviazione con DD:

Puoi misurare la velocità di lettura e scrivere di un dispositivo di archiviazione con dd molto facilmente. Naturalmente, ci sono molti software grafici che forniscono queste informazioni, ma gli amanti della linea di comando troverebbero questo molto interessante.

Innanzitutto, devi montare la partizione o il dispositivo di archiviazione sul filesystem. Se non hai una partizione sul tuo dispositivo di archiviazione, puoi sempre crearla con il fdisk comandalo e formattalo al filesystem desiderato (come FAT32, Ext4, Ntfs, XFS eccetera). Qui, presumo che tu abbia una partizione /dev/sdb1 ed è formattato come Ext4.

Diciamo, vuoi montare /dev/sdb1 partizione a /mnt directory, quindi eseguire il seguente comando:

$ sudo monte /dev /sdb1 /mnt

Come puoi vedere, la partizione /dev/sdb1 è montato /mnt directory.

$ df -h

Ora creiamo un file da 1 GB testtrw nel /mnt directory con dd:

$ sudo dd if =/dev/zero di =/mnt/testrw bs = 1g conteggio = 1 oflag = diretto

Qui, conteggio = 1 significa leggere BS = 1G che è 1 gigabyte da /dev/zero, e scrivilo a /MNT/TESTRW file.

IL oflag = direct L'opzione viene utilizzata per disabilitare la memorizzazione nella cache del disco. Se la memorizzazione della cache del disco è abilitata, non otterrai risultati molto accurati.

NOTA: Ricorda, per questa operazione, devi avere almeno 1 GB di memoria libera o RAM sul tuo computer. Se non puoi permetterti così tanta RAM gratuita, riduci la dimensione BS. Ad esempio, imposta BS = 128m o anche meno, BS = 64m.

Come puoi vedere, la velocità di scrittura della mia unità USB è circa 6.1 MB al secondo.

Puoi anche testare la velocità di lettura del dispositivo di archiviazione con il seguente comando:

$ sudo dd if =/mnt/testrw di = ~/downloads/test bs = 1g count = 1 oflag = direct

Come puoi vedere, posso leggere a 4.3 mb al secondo.

Latenza del dispositivo di archiviazione di test con DD:

La latenza di un dispositivo di archiviazione è il tempo necessario per accedere al dispositivo. È un parametro importante che possiamo determinare con l'aiuto del dd comando.

Per testare la latenza, possiamo scrivere o leggere piccoli blocchi di dati (circa 512 byte alla volta) X volte e vedere quanto tempo ci vuole. Quindi possiamo calcolare quanto tempo ci vuole per leggere o scrivere un singolo pezzo di dati molto facilmente. Questa è chiamata latenza del dispositivo di archiviazione.

Ad esempio, supponiamo che tu voglia calcolare la latenza di scrittura. Ora esegui il seguente comando per scrivere 512 byte chunk circa 1000 volte:

$ sudo dd if =/dev/zero di =/mnt/testx bs = 512 count = 1000 oflag = direct

Come puoi vedere, ci vuole 16.4541 secondi per scrivere 1000 blocchi di 512 Dati byte. Ora, per scrivere un singolo pezzo di dati, impiega circa (16.4541s / 1000 = 0.0164 s) 0.0164 secondi. Quindi la latenza di scrittura è di circa 0.0164 secondi per questo dispositivo di archiviazione.

Puoi calcolare la latenza di lettura allo stesso modo.

È così che usi DD e test le prestazioni di un dispositivo I/O con esso. Grazie per aver letto questo articolo.