Cómo usar el comando DD en Linux

Cómo usar el comando DD en Linux
El dd El comando se usa para hacer muchas cosas importantes. El uso más común y generalizado del dd El comando es hacer unidades USB de arranque desde un YO ASI o Img archivo de imagen. Lo uso mucho para hacer unidades USB de arranque de diferentes distribuciones de Linux. Pero hay otros usos del dd comando también. Por ejemplo, el dd El comando se puede usar para hacer una copia de seguridad de la tabla de partición, convertir textos y archivos, instalar un gestor de arranque en una unidad de disco duro, SSD o unidad USB. El dd El comando también se puede utilizar para realizar el rendimiento de los dispositivos de almacenamiento, como la latencia de su disco duro, la velocidad de lectura y escritura de su disco duro, etc.

En este artículo, le mostraré algunos de los usos comunes del dd Comando en Linux. Usaré Debian 9 Stretch para la demostración. Pero debería funcionar en cualquier otra distribución de Linux. Empecemos.

Hacer una unidad USB de arranque con DD:

Hacer una unidad USB inicial de su sistema operativo favorito con el dd El comando es muy fácil. Todo lo que necesitas es una unidad USB y un YO ASI o Img imagen del sistema operativo que desea hacer un USB de arranque de.

Supongamos que ha descargado un YO ASI imagen de Alpine Linux y el archivo se guarda en el ~/Descargas directorio como Alpine-Standard-3.8.0-x86_64.Yo asi

Ahora, puede enumerar todos los dispositivos de almacenamiento o bloque conectados con el siguiente comando:

$ sudo lsblk

Como puede ver, se enumeran todos los dispositivos de almacenamiento o bloque conectados. Aquí, /dev/sdb es mi unidad USB. Tiene dos particiones, /dev/sdb1 y /dev/sdb2. Pero cuando realiza unidades de arranque USB, debe usar el /dev/sdb, todo el dispositivo de bloque, ni ninguna partición.

Ahora haga una unidad USB de arranque de Alpine Linux con el siguiente comando:

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

Aquí, si =~/Descargas/alpine-standard-3.8.0-x86_64.Yo asi La opción se usa para decir dd que el archivo de entrada está en la ruta ~/Descargas/alpine-standard-3.8.0-x86_64.Yo asi y de =/dev/sdb La opción se usa para decir dd que el archivo de salida está en la ruta /dev/sdb. El bs =1M contado dd leer de ~/Descargas/alpine-standard-3.8.0-x86_64.Yo asi y escribir a /dev/sdb 1 megabytes de datos a la vez.

Como puede ver, el archivo ISO se copia en el dispositivo de bloque /dev/sdb. Ahora puede usarlo para instalar Alpine Linux.

Este comando es muy destructivo. El dd El comando limpia la tabla de partición y otros metadatos, indicadores del dispositivo de bloque. Entonces debes tener cuidado.

Mostrar barra de progreso:

Por defecto, el dd El comando no muestra ninguna barra de progreso. Pero puedes decir dd para mostrarlo con el estado = progreso opción.

Por ejemplo, para copiar datos de /dev/sda a /dev/sdb 1 megabytes a la vez y también muestre la barra de progreso, ejecute el siguiente comando:

$ sudo dd if =/dev/sda of =/dev/sdb bs = 1m status = progreso

Como puede ver, se muestra la barra de progreso. Puede ver cuánto de los datos se copian y la tasa a la que se está copiando.

Medición del rendimiento de lectura y escritura de un dispositivo de almacenamiento con DD:

Puede medir la velocidad de lectura y escritura de un dispositivo de almacenamiento con dd muy facilmente. Por supuesto, hay muchos softwares gráficos que proporcionan esta información, pero los amantes de la línea de comandos encontrarían esto muy interesante.

Primero, debe montar la partición o el dispositivo de almacenamiento en su sistema de archivos. Si no tiene una partición en su dispositivo de almacenamiento, siempre puede crearla con el fdisk comandar y formatearlo en el sistema de archivos deseado (como Fat32, Ext4, NTFS, XFS etc). Aquí, supongo que tienes una partición /dev/sdb1 y está formateado como Ext4.

Digamos que quieres montar /dev/sdb1 dividir a /MNT directorio, luego ejecute el siguiente comando:

$ sudo monte /dev /sdb1 /mnt

Como puede ver, la partición /dev/sdb1 está montado en /MNT directorio.

$ DF -H

Ahora creemos un archivo de 1 GB testRW en el /MNT directorio con dd:

$ sudo dd if =/dev/cero de =/mnt/testrw bs = 1g count = 1 oflag = directo

Aquí, recuento = 1 significa, leer BS = 1G que es 1 gigabyte de /dev/cero, y escríbelo a /mnt/testrw archivo.

El oflag = directo La opción se usa para deshabilitar el almacenamiento en caché de disco. Si el almacenamiento en caché de disco está habilitado, no obtendrá resultados muy precisos.

NOTA: Recuerde, para esta operación, debe tener al menos 1 GB de memoria libre o RAM en su computadora. Si no puede permitirse tanta RAM gratis, reduzca el tamaño de BS. Por ejemplo, establecer BS = 128m o incluso menos, BS = 64m.

Como puede ver, la velocidad de escritura de mi unidad USB es aproximadamente 6.1 MB por segundo.

También puede probar la velocidad de lectura de su dispositivo de almacenamiento con el siguiente comando:

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

Como puede ver, puedo leer a las 4.3 MB por segundo.

Prueba de latencia del dispositivo de almacenamiento con DD:

La latencia de un dispositivo de almacenamiento es el tiempo que lleva acceder al dispositivo. Es un parámetro importante que podemos determinar con la ayuda del dd dominio.

Para probar la latencia, podemos escribir o leer pequeños trozos de datos (alrededor de 512 bytes a la vez) x veces y ver cuánto tiempo lleva. Entonces podemos calcular cuánto tiempo lleva leer o escribir una sola parte de datos muy fácilmente. Esto se llama latencia del dispositivo de almacenamiento.

Por ejemplo, supongamos que quiere calcular la latencia de escritura. Ahora ejecute el siguiente comando para escribir 512 bytes fragmentos aproximadamente 1000 veces:

$ sudo dd if =/dev/cero de =/mnt/testx bs = 512 count = 1000 oflag = directo

Como puede ver, se necesita dieciséis.4541 segundos para escribir 1000 trozos de 512 datos de bytes. Ahora, para escribir una sola parte de los datos, toma alrededor de (16.4541S / 1000 = 0.0164 s) 0.0164 segundos. Entonces la latencia de escritura es aproximadamente 0.0164 segundos para este dispositivo de almacenamiento.

Puede calcular la latencia de lectura de la misma manera.

Así es como usa DD y el rendimiento de la prueba de un dispositivo de E/S con él. Gracias por leer este artículo.