Самый быстрый способ отформатировать диск в Linux?

2177
tjt263

Это для скрипта bash / shell. По сути, я хочу отформатировать или стереть запоминающее устройство USB (или SD); с одной командной строкой.

Я собирался использовать fdisk, но, кажется, требует взаимодействия с пользователем, где я хочу автоматизации.

Итак, я решил попробовать обнулить его с помощью
dd if=/dev/zero of=/dev/<target disk>:;
но это только кажется нулевым 2,0 ГБ свободного или неиспользованного дискового пространства.


root@linux:~# dd if=/dev/zero of=/dev/mmcblk0 dd: writing to '/dev/mmcblk0': No space left on device 3842249+0 records in 3842249+0 records out 1967230976 bytes (2.0 GB, 1.8 GiB) copied, 2.9054 s, 677 MB/s

В идеале я говорю о переформатировании любого съемного запоминающего устройства и / или подготовке его к созданию .isoобраза с помощью файла изображения (через dd).

Переформатирование не всегда требуется, но оно также стирает данные; и очистка устройства от любых сохраненных данных, вероятно, должна быть поведением по умолчанию / стандартной процедурой, для такого рода вещей в любом случае.

0
Вы хотите отформатировать как в «обнулении каждого сектора», или как «создать пустую файловую систему»? Не то чтобы _either_ вообще нужно, так как запись изображения через dd уже перезаписывает все _в любом случае _... grawity 7 лет назад 1
@ grawity Это правда? Я этого не знал. Я думал, что необходимо очистить диск перед созданием образа. Но чтобы ответить на ваш вопрос; Я хотел бы предоставить опцию для пользователей, и позволить им решать в каждом конкретном случае. Другими словами, я предполагаю, что ответ: * оба *. Я был бы очень признателен, ура. tjt263 7 лет назад 0
Да, это так - ну, не диск _whole_, а только столько данных, сколько занимает сам ISO - но независимо от того, что, заменив образ в `/ dev / sdb` или тому подобное, вы полностью закроете таблицу разделов, загрузчик, разделы, файловые системы и т. д. На флеш-накопителе объемом 8 ГБ, например, имеется один раздел размером 700 МБ (или любой другой ISO) и 7,3 ГБ «неразмеченного пространства», на которое ОС даже не смотрит. grawity 7 лет назад 0
@ Grawity Не знаю точно, как и почему, но это буквально просто растопило мою SD-карту. tjt263 7 лет назад 0
Похоже, ошибка. grawity 7 лет назад 0

1 ответ на вопрос

1
grawity

Итак, это зависит от

  1. ваше определение «форматирования» диска;
  2. тип этого диска.

«Формат» может быть одним из самых запутанных терминов в потребительских технологиях. Даже ваш пост уже смущает два-три разных действия ...

Обычно он охватывает три уровня:

  1. Подготовка самого носителя (например, запись секторных маркеров на жесткий диск) - в настоящее время обычно выполняется на заводе, но, по крайней мере, в дни IBM PC это может быть сделано самим ПК. Это часто называют «низкоуровневым форматированием».

  2. Запись таблицы разделов (пустой или с некоторыми разделами) на первые несколько секторов диска - вот что fdiskделает.

  3. Запись пустой файловой системы в каждый раздел - это то, что format c:или mkfsделать. Раньше это называлось «форматированием высокого уровня».

За исключением того, что некоторые люди называют шаг № 2 «низкоуровневым форматом» теперь, когда № 1 больше нет. И иногда люди называют стирание всего диска «форматированием», хотя там ничего не записано с реальным форматом. Иногда люди называют переустановку Windows «форматированием», даже если все файлы остались нетронутыми.


В любом случае, остальная часть ответа зависит от желаемого результата :

  • Если вы хотите, чтобы диск был полностью пустым (например, ничего, что могло бы найти приложение для восстановления данных), у вас есть два варианта: удаление или ручное удаление.

    Функция «сброс» называется TRIM в твердотельных накопителях и также поддерживается SD-картами - она ​​говорит самому диску выбрасывать все данные. В Linux blkdiscardинструмент можно использовать для этой цели - укажите устройство, и через несколько секунд оно будет пустым. (Подобные инструменты mkfs.ext4также автоматически отбрасывают содержимое раздела перед записью в него новой файловой системы.)

    Если диск не поддерживает удаление - например, если это магнитный жесткий диск или флэш-накопитель USB, интерфейс Mass Storage которого не понимает эту команду, - тогда единственным вариантом для вас является ручное отключение каждого сектора, т. Е. Заполнение это /dev/zeroкак вы уже сделали.

    В то время как отбрасывать обычно занимает всего несколько секунд, ручная нулевая начинка не может идти быстрее, чем сам диск может принимать операции записи ( в конце концов, вы будете писать много данных).

  • Если вы не заботитесь об остаточных данных, а просто хотите, чтобы ОС увидела пустой диск, вы можете просто очистить область, где находится таблица разделов . Для MBR это всегда сектор 0, но не забывайте, что многие диски используют таблицу разделов GPT.

    Это очень быстрый метод, поскольку вам нужно всего лишь удалить несколько килобайт. В Linux wipefsкоманда хирургическим путем сделает содержимое диска более не распознаваемым для ОС. (По умолчанию инструмент только распечатывает то, что он будет стереть - используйте опцию, --allчтобы заставить это фактически делать это.)

Кстати, теперь у вас есть диск, который ОС считает пустым.

  • Если вы хотите, чтобы на удаленном диске было несколько разделов, используйте такие инструменты, как fdisk или parted. В то время как регулярный FDISK является интерактивным, есть много инструментов, которые могут быть легко скриптовыми - sfdisk, sgdisk, partedнесколько примеров. Windows имеет diskpart.

  • Если вы также хотите, чтобы разделы имели файловые системы, используйте такие инструменты, как mkfs.ext4или mkfs.vfat(эквивалентно Windows ' format).


Наконец, как уже упоминалось в комментариях выше: если вы планируете просто записать изображение (файл .iso) на диск, то вам вообще не нужно ничего делать.

Такая запись изображения начинается в секторе 0, поэтому она удаляет все, что было на диске ранее (вплоть до размера изображения). Независимо от того, были ли в нем разделы и файлы, или он был пустым, он не имеет значения - он просто перезаписывается собственными разделами изображения и всеми остальными.

Все, что превышает размер изображения, останется таким, каким оно было, но ОС не будет об этом беспокоиться - поскольку таблица разделов образа говорит, что там нет раздела. Хотя, конечно, выбрасывать или очищать диск все еще хорошая идея, если вы собираетесь отдать его кому-то другому.

Да, я думаю, я бы предпочел уничтожить все старые данные, на всякий случай. Я включу функцию с `read` &` if`, `then`,` else`; или `case` утверждение. Таким образом, пользователь может решить. tjt263 7 лет назад 0

Похожие вопросы