Pour commencer à partir d'un état propre, je dois réinitialiser le disque dur à un état vide à partir de la ligne de commande.
Il ne s'agit pas d'exécuter un utilitaire de nettoyage, les données ne doivent pas être écrasées.
Cette question est assez similaire à la suppression de toutes les partitions de la ligne de commande
La solution fonctionne plutôt bien,
dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc
mais si je veux travailler avec un tel disque écrasé, je reçois l'erreur que le périphérique est toujours en cours d'utilisation.
root@grml ~ # blockdev --rereadpt /dev/sda
BLKRRPART: Device or resource busy
ou
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.
Je dois donc désactiver manuellement tout ce qui "se trouve" sur l'appareil
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
après cela, la partprobe
commande fonctionne.
existe-t-il une commande qui fonctionne plus simplement? comme
harddiskreset /dev/sda
donc il peut facilement être utilisé sur des systèmes avec une disposition de partition / lvm / md différente?
Réponses:
Le
wipefs
programme vous permet de supprimer facilement la signature de la table de partition:Cependant, vous devez toujours arrêter tout processus utilisant l'appareil, comme LVM.
De
man wipefs
la source
J'ai toujours utilisé simplement séparé pour cela. Il fonctionne bien pour changer le type d'étiquette de disque et ajouter / supprimer des partitions, d'autant plus qu'il peut gérer les grands disques durs modernes contrairement à fdisk.
Tu peux courir
Cela fera démarrer les choses et vous amènera dans le terminal séparé. Vous pouvez ensuite exécuter la commande d'aide pour afficher toutes les commandes disponibles. C'est très explicite.
Je mentionnerai que oui, vous devez avoir toutes les partitions du disque que vous souhaitez formater non montées. Si vous cherchiez simplement un moyen plus rapide de démonter toutes les partitions, je suppose que vous pourriez le faire avec une regex dans la commande umount mais cela semble idiot.
En utilisant parted pour gérer le disque dur, je n'ai jamais eu à forcer un rafraîchissement du disque ou quelque chose de similaire.
Pour actualiser complètement un lecteur pour une toute nouvelle utilisation, je procède généralement comme suit:
1) commencer à se séparer en courant
sudo parted /dev/sda
2) trouver toutes les partitions existantes en exécutant
print
3) supprimez les partitions existantes en exécutant le
rm 1
remplacement de 1 par le numéro de partition que vous souhaitez supprimer. Répétez ensuite pour toutes les partitions restantes sur le disque.4) réinitialiser le disklabel en exécutant
mklabel gpt
J'utilise le type d'étiquette gpt mais vous pouvez utiliser les msdos standard ou quelle que soit votre préférence. Voici une liste des types d'étiquettes de disque5) Créez de nouvelles partitions en exécutant
mkpart
Cela vous fera parcourir l'assistant de création de partition. Les points de début et de fin sont définis par défaut sur les secteurs. Vous pouvez changer cela en exécutant launit
commande avant d'exécuter. Demkpart
cette façon, vous pouvez la spécifier en Go ou TB ou MB etc.6) Vérifiez vos résultats en utilisant
print
pour afficher vos nouvelles informations sur la table de partition7) Vous devez ensuite formater les partitions. Cela ne devrait pas être fait par parted bien que certaines options soient disponibles. Je suggérerais plutôt de courir
quit
pour quitter le terminal séparé, puis d'utilisermkfs
pour formater les partitions. N'oubliez pas d'exécuter 'mkfs' sur / dev / sda1 au lieu de / dev / sda car vous formatez la partition et non le disque dans son ensemble.C'est à peu près ça.
J'espère que cela répond à votre question.
En outre, voici le manuel séparé en ligne pour référence: https://www.gnu.org/software/parted/manual/html_node/index.html
ÉDITER:
L'OP voulait faire ce genre de chose à partir d'un script et non à partir d'un terminal. Vous pouvez effectuer le même type de procédure via un script en exécutant parted via des commandes sur une seule ligne plutôt que dans le terminal parted.
Par exemple la commande
Imprime les informations du lecteur et la table de partition sur la console bash qui peut ensuite être manipulée à l'aide de grep, etc. pour créer des variables ou tout ce que vous voulez dans un script bash.
la source
parted /dev/sda print
, imprimera la table de partition pour / dev / sda. Vous pouvez faire la même chose que je décris ci-dessus uniquement avec des commandes d'une seule ligne si vous devez le faire dans un script bash.parted /dev/sda
aussi je dois savoir combien de partitions sont sur le lecteur à appelerrm 1
, je cherche une commande pour simplement nettoyer le disque, donc je peux le repartitionner, sans faire tout le travail manuel pour arrêter les md en supprimant les lv et ainsi de suite.df
si le lecteur est monté. Comment prévoyez-vous de créer un "script" si vous ne pouvez pas obtenir l'emplacement du lecteur? 2) il est assez facile d'exécuterparted $drive print
et de grep les résultats pour trouver tous les numéros de partition disponibles, puis les stocker dans un tableau. Utilisez ensuite ces valeurs pour exécuterparted $drive rm $partition
. Tout cela est un script bash assez simple.Utiliser une version non interactive améliorée de fdisk, qui est sfdisk
Pour effacer la table de partition, utilisez cette commande:
la source
Fondamentalement, cette erreur
s'affiche lorsque vous manquez un paramètre lors du partitionnement de votre disque. Vous pouvez corriger cette erreur en examinant attentivement les paramètres que vous avez définis lors du partitionnement.
Utilisez:
fdisk -l
pour vérifier les paramètres de votre disque:la source