Для запуска из чистого состояния мне нужно сбросить жесткий диск до пустого состояния из командной строки.
Речь идет не о запуске утилиты стирания, данные не должны быть перезаписаны.
Этот вопрос очень похож на удаление всех разделов из командной строки
Решение там работает довольно хорошо,
dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc
но если я хочу работать с таким перезаписанным диском, я получаю сообщение об ошибке, что устройство все еще используется.
root@grml ~ # blockdev --rereadpt /dev/sda
BLKRRPART: Device or resource busy
или
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.
Поэтому приходится вручную отключать все, что «сидит» на устройстве
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
после этого partprobe
команда работает.
есть ли команда, которая работает проще? подобно
harddiskreset /dev/sda
так что его легко можно использовать в системах с разным расположением разделов / lvm / md?
Ответы:
wipefs
Программа позволяет легко удалить раздел стола подпись:Вы все равно должны остановить любой процесс, использующий устройство, например, LVM.
От
man wipefs
источник
Я всегда просто использовал parted для этого. Он хорошо работает для изменения типа метки диска и добавления / удаления разделов, тем более что он может работать с современными большими жесткими дисками в отличие от fdisk.
Вы можете запустить
Это поможет вам начать работу и доставит вас в разделенный терминал. Затем вы можете запустить команду справки, чтобы показать все доступные команды. Это само за себя.
Я упомяну, что да, у вас должны быть все разделы диска, которые вы хотите отформатировать, размонтированными. Если бы вы просто искали более быстрый способ размонтирования всех разделов, я думаю, вы могли бы сделать это с помощью регулярного выражения в команде umount, но это кажется глупым.
Используя parted для управления жестким диском, мне никогда не приходилось принудительно обновлять диск или что-то подобное.
Чтобы полностью обновить диск для нового использования, я обычно делаю следующее:
1) начать расстаться, запустив
sudo parted /dev/sda
2) найти любые существующие разделы, запустив
print
3) удалить существующие разделы, запустив
rm 1
замену 1 номером раздела, который вы хотите удалить. Затем повторите для всех оставшихся разделов на диске.4) сбросьте
mklabel gpt
метку диска, запустив я использую тип метки gpt, но вы можете использовать стандартные msdos или что-то другое. Вот список типов меток диска5) Создайте новые разделы, запустив
mkpart
Это запустит вас через мастер создания разделов. Начальная и конечная точки по умолчанию являются секторами. Вы можете изменить это, выполнивunit
команду перед запуском.mkpart
Таким образом, вы можете указать ее в ГБ, ТБ или МБ и т. Д.6) проверьте свои результаты, используя
print
для просмотра информации о новой таблице разделов7) Затем вам нужно отформатировать разделы. Это не должно быть сделано через parted, хотя некоторые варианты для этого доступны. Я бы предложил вместо этого запустить
quit
выход из терминала с разделением, а затем использоватьmkfs
для форматирования разделов. Не забудьте запустить mkfs в / dev / sda1 вместо / dev / sda, потому что вы форматируете раздел, а не диск в целом.Вот и все.
Надеюсь, это ответит на ваш вопрос.
Кроме того, вот справочное руководство по расставанию для справки: https://www.gnu.org/software/parted/manual/html_node/index.html.
РЕДАКТИРОВАТЬ:
ОП хотел делать такие вещи из скрипта, а не из терминала. Вы можете выполнить процедуру такого же типа через скрипт, запустив parted с помощью однострочных команд, а не внутри терминала parted.
Например команда
Распечатает информацию о диске и таблицу разделов на консоль bash, которой затем можно будет управлять, используя grep и т. Д., Для создания переменных или чего угодно в сценарии bash.
источник
parted /dev/sda print
, распечатает таблицу разделов для / dev / sda. Вы можете сделать то же самое, что я описал выше, с помощью однострочных команд, если вам нужно сделать это в скрипте bash.parted /dev/sda
также я должен знать, сколько разделов находится на диске для вызоваrm 1
, я ищу команду, чтобы просто очистить диск, чтобы я мог перераспределить его, без всякой ручной работы по отключению md, удалению lv и так далее.df
если диск установлен. Как вы планируете создать «сценарий», если вы не можете получить местоположение диска? 2) его достаточно просто запуститьparted $drive print
и получить результаты, чтобы найти все доступные номера разделов и затем сохранить их в массиве. Затем используйте эти значения для запускаparted $drive rm $partition
. Все это довольно простой сценарий bash.Используйте улучшенную неинтерактивную версию fdisk, которая является sfdisk
Чтобы удалить таблицу разделов, используйте эту команду:
источник
В основном эта ошибка
появляется, когда вы пропускаете какой-либо параметр при разбиении диска. Вы можете исправить эту ошибку, присмотревшись к параметрам, которые вы определили при разбиении.
Используйте:
fdisk -l
для проверки параметров вашего диска:источник