Para comenzar desde un estado limpio, necesito restablecer el disco duro a un estado vacío desde la línea de comandos.
No se trata de ejecutar una utilidad de borrado, los datos no tienen que sobrescribirse.
Esta pregunta es bastante similar a Eliminar todas las particiones de la línea de comandos
La solución allí funciona bastante bien,
dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc
pero si quiero trabajar con un disco sobrescrito de este tipo, aparece el error de que el dispositivo todavía está en uso.
root@grml ~ # blockdev --rereadpt /dev/sda
BLKRRPART: Device or resource busy
o
root@grml ~ # partprobe
Error: Partition(s) 2, 3 on /dev/sda have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. As a result, the old partition(s) will remain in use. You should reboot now before making further changes.
Error: Partition(s) 2, 3 on /dev/sdb have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. As a result, the old partition(s) will remain in use. You should reboot now before making further changes.
Así que tengo que deshabilitar manualmente todo lo que "se sienta" en el dispositivo
umount /mnt/debootstrap
umount /mnt/debootstrap/tmp
umount /mnt/debootstrap/var/log
umount /mnt/debootstrap/var
umount /mnt/debootstrap/home
service mdadm stop
service lvm2 stop
vgremove vg_main
pvremove /dev/md1
mdadm --stop /dev/md0
mdadm --stop /dev/md1
mdadm --remove /dev/md0
mdadm --remove /dev/md1
después de eso el partprobe
comando funciona.
¿hay algún comando que funcione más simple? me gusta
harddiskreset /dev/sda
entonces, ¿se puede usar fácilmente en sistemas con un diseño de partición / lvm / md diferente?
Respuestas:
El
wipefs
programa te permite eliminar fácilmente la firma de la tabla de particiones:Sin embargo, aún tiene que detener cualquier proceso utilizando el dispositivo, como LVM.
Desde
man wipefs
fuente
Siempre he usado simplemente parte para esto. Funciona bien para cambiar el tipo de etiqueta de disco y agregar / eliminar particiones, especialmente porque puede manejar HDD grandes y modernos a diferencia de fdisk.
Tu puedes correr
Esto hará que todo comience y lo llevará a la terminal separada. Luego puede ejecutar el comando de ayuda para mostrar todos los comandos disponibles. Es muy autoexplicativo.
Mencionaré que sí, debe tener todas las particiones del disco que desea formatear desmontadas. Si simplemente estaba buscando una forma más rápida de desmontar todas las particiones, supongo que podría hacerlo con una expresión regular en el comando umount, pero eso parece una tontería.
Utilizando parted para administrar el HDD, nunca he tenido que forzar una actualización del disco ni nada similar.
Para actualizar completamente una unidad para un uso completamente nuevo, generalmente hago lo siguiente:
1) comience separándose corriendo
sudo parted /dev/sda
2) encuentre las particiones existentes ejecutando
print
3) elimine las particiones existentes ejecutando
rm 1
reemplazando 1 con el número de partición que desea eliminar. Luego repita para todas las particiones restantes en el disco.4) restablecer la etiqueta del disco ejecutando
mklabel gpt
Yo uso el tipo de etiqueta gpt pero podría usar el msdos estándar o lo que sea su preferencia. Aquí hay una lista de tipos de etiqueta de disco5) Cree nuevas particiones ejecutando
mkpart
Esto lo ejecutará a través del asistente de creación de particiones. Los puntos de inicio y finalización están predeterminados por sectores. Puede cambiar esto ejecutando elunit
comando antes de ejecutarlo. Demkpart
esta manera puede especificarlo en GB o TB o MB, etc.6) verifique sus resultados usando
print
para ver la información de su nueva tabla de particiones7) Luego debe formatear las particiones. Esto no debe hacerse por separado, aunque algunas opciones para esto están disponibles. Sugeriría en su lugar ejecutar
quit
para salir del terminal dividido y luego usarmkfs
para formatear las particiones. Recuerde ejecutar 'mkfs' en / dev / sda1 en lugar de / dev / sda porque está formateando la partición y no el disco como un todo.Eso es todo.
Espero que esto responda tu pregunta.
Además, aquí está el manual separado en línea para referencia: https://www.gnu.org/software/parted/manual/html_node/index.html
EDITAR:
El OP quería hacer este tipo de cosas desde un script y no desde un terminal. Puede realizar el mismo tipo de procedimiento a través de un script ejecutando parted a través de comandos de línea única en lugar de dentro del terminal dividido.
Por ejemplo el comando
Imprimirá la información de la unidad y la tabla de particiones en la consola bash que luego se puede manipular usando grep, etc. para crear variables o lo que desee en un script bash.
fuente
parted /dev/sda print
, imprimirá la tabla de particiones para / dev / sda. Puede hacer lo mismo que describí anteriormente solo con comandos de una sola línea si necesita hacerlo dentro de un script bash.parted /dev/sda
también tengo que saber cuántas particiones hay en la unidad para llamarrm 1
, estoy buscando un comando para simplemente limpiar el disco, para poder volver a particionarlo , sin hacer todo el trabajo manual de apagar md's, eliminar lv's, etc.df
si la unidad está montada. ¿Cómo planea crear un "script" si no puede obtener la ubicación de la unidad? 2) es bastante fácil de ejecutarparted $drive print
y grep los resultados para encontrar todos los números de partición disponibles y luego almacenarlos en una matriz. Luego usa esos valores para correrparted $drive rm $partition
. Todo esto es una secuencia de comandos bash bastante simple.Utilice una versión no interactiva mejorada de fdisk, que es sfdisk
Para borrar la tabla de particiones use este comando:
fuente
Básicamente, este error
aparece cuando omite algún parámetro al particionar su disco. Puede corregir este error observando de cerca los parámetros que definió durante la partición.
Uso:
fdisk -l
para verificar los parámetros de su disco:fuente