Linux заполнить диск случайными данными

Как заполнить жесткий диск в Linux

Я тестирую фрагмент кода, и я хочу заполнить жесткий диск данными. Я обнаружил, что dd может делать огромные файлы в одно мгновение, но df не согласен. Вот что я пробовал:

dd if=/dev/zero of=filename bs=1 count=1 seek=$((10*1024*1024*1024))

ls -lh показывает файл 10G. Однако df -h показывает, что раздел не сжимался. Итак, что мне нужно сделать, чтобы сделать df распознать данные теперь? Я надеюсь на что-то быстрое, что я код в единичном тесте.

7 ответов

Проблема с трюком seek= заключается в том, что файловая система (обычно) умна: если часть файла никогда не была написана (и, следовательно, все нули), он не хочет выделять для этого какое-либо пространство — так, как вы видели, у вас может быть 10-гигабайтный файл, который не занимает места (это называется «разреженный файл», и может быть очень полезен в некоторых случаях, например, в некоторых реализациях базы данных).

Вы можете заставить пространство быть выделенным (например):

, который займет гораздо больше времени, но фактически заполнит диск. Я рекомендую сделать размер блока намного выше, чем один, потому что это определит, сколько системных вызовов обрабатывает процесс dd — чем меньше размер блока, тем больше системных вызовов, и, следовательно, медленнее будет работать. (Хотя за пределами 1 МБ или около того он, вероятно, не будет иметь большого значения и может даже замедлить работу . )

В качестве другого варианта для этого вы можете использовать да вместе с одной строкой и примерно в 10 раз быстрее, чем запуск dd if = /dev /urandom of = largefile. Как этот

Вы создали так называемый «разреженный файл» — файл, который, поскольку большая часть его пуста (т.е. читается как \ 0), не занимает места на диске, кроме того, что на самом деле написано (1B , после 10 ГБ пробела).

Я не верю, что вы могли бы создавать огромные файлы, занимая фактическое дисковое пространство в одно мгновение — физическое пространство означает, что файловой системе необходимо выделить блоки диска для вашего файла.

Я думаю, что вы застряли со старомодным «dd if = /dev /zero of = filename bs = 100M count = 100», который ограничен скоростью последовательной записи вашего диска.

Если вы просто проверяете случаи с заполненными файловыми системами, возможно, fallocate достаточно хорош. И быстрее! например.

Остановить использование seek и использовать очень большой bs и /или count . Поскольку вы делаете разреженный файл , и, очевидно, вам не нужно этого делать.

Если вы хотите буквально заполнить жесткий диск, сделайте следующее:

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

Как упоминалось выше, вы получите лучшую производительность, если вы установите размер блока 1 МБ (bs = 1M) вместо 1 B (bs = 1). Это займет некоторое время, но если вы хотите проверить ход выполнения своей команды, откройте отдельную консоль и запустите следующие команды:

Используйте PID dd в этой команде (замените PID на PID dd):

Затем перейдите на свой dd-терминал. Конечно, это ограниченное использование, когда вы просто пытаетесь заполнить диск (вы можете просто использовать df или du ​​для проверки свободного места на диске или размера файла соответственно). Однако есть и другие моменты, когда удобно делать вывод dd о его прогрессе.

Дополнительный кредит: одно практическое использование для обнуления свободного пространства заключается в том, что после этого вы можете удалить «нулевые» файлы и dd весь раздел (или диск, если вы обнулили все разделы), на образ диска файл (скажем, disk-backup.dd), а затем сжать файл. Свободное пространство теперь сильно сжимаемо, поэтому сжатое dd-изображение будет намного меньше исходного блочного устройства, содержимое которого оно содержит.

Shenanigans: запишите большой файл нулей и отправьте его по электронной почте всем своим друзьям. Скажите им, что это действительно здорово.

Читайте также:  Windows boot manager что это значит

Вы создаете не разреженный файл 1 ТБ со следующей командой:

Это было полезно при тестировании того, что происходит, когда квоты превышены, или файловая система заполняется.

df -h показывает, что доступное пространство становится меньше.

Источник

REALIX.RU — IT, компьютеры и всё остальное.

Автор: Lucky Рубрики: Linux

В жизни случаются ситуации, когда хочется бесследно избавиться от информации на жестком диске. Причин этого желания может быть много.

Одни из таких причин: Продажа жесткого диска или выбрасывание жесткого диска на свалку.

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

Способов бесследно стереть информацию существует много. О двух способах полного удаления информации с HDD я расскажу ниже.

Собрался я выбрасывать старый, но еще работающий жесткий диск. Хотя диск и сбоил, но позволял с собой работать. И мне захотелось уверенности, что никто из праздного любопытства не сможет восстановить пароли от различных интернет-ресурсов ранее хранившееся на этом HDD. Немного подумав решил воспользоваться бесплатными вариантами, реализованными в мире Linux систем.

На полке с CD/DVD дисками обнаружился установочный диск Ubuntu 12.04, которым я и решил воспользоваться. Устанавливать Ubuntu я не собирался, а хотел воспользоваться возможностью запуска этой операционной системы без установки с CD диска. Дабы ничего не перепутать я отключил все HDD, кроме того, с которого собирался бесследно удалить информацию и загрузился с установочного диска Ubuntu 12.04.

Подопытный HDD был подключен мастером на IDE шлейф, а DVD-ROM был подключен слэйвом. После загрузки с диска передо мной появился экран выбора.

Мне предлагалось выбрать: попробовать Ubuntu без установки или установить.

Я выбрал попробовать [Try Ubuntu], а языком интерфейса я оставил предложенный мне по умолчанию English. Английский я выбрал по простой причине: Я собирался в консоли вводить команды и у меня не было желания вспоминать как переключать язык ввода.

Ubuntu загрузилась и предо мной предстал “Рабочий стол”.

Первый вариант: команда dd

dd (dataset definition) — программа UNIX, предназначенная как для копирования, так и для конвертации файлов. Название унаследовано от оператора DD (Dataset Definition) из языка JCL

Будьте внимательны! Не ошибитесь с выбором файла устройства! Иначе потеряете данные.

  • Первым делом я нажал комбинацию клавиш CTRL + ALT + F1 ( Переключился на первую виртуальную консоль ).
  • Затем в консоли ввел команду sudo -i ( Становимся Суперпользователем )
  • Затем команда fdisk -l ( Выводит список доступных дисков, в выводе этой команды мы уточняем название нашего hdd ). В моем случае жесткий диск в системе был назван sda.
  • Затем: dd if=/dev/zero of=/dev/sda bs=4M ( Собственно сама команда, стирающая данные с жесткого диска. Хотя На самом деле эта команда не стирает данные, а заполняет HDD нулями. Сама операция занимает достаточно продолжительное время ).

Если же нас преследует паранойя, то после этой команды мы задаем команду, которая заполняет жесткий диск случайными данными (очень медленный процесс, сильно загружающий CPU ): dd if=dev/urandom of=/dev/sda bs=4M

Если же с паранойя совсем не дает покоя, то мы несколько раз, чередуя, запускаем эти команды.

CTRL + ALT + F7 — Вернуться в графический режим.

  • dd if=/dev/zero of=/dev/sda — заполняем диск нулями
  • dd if=/dev/urandom of=/dev/sda — заполняем диск случайными данными
  • dd if=/dev/random of=/dev/sda — заполняем диск случайными данными ( немного быстрее предыдущей)

Второй вариант: команда shred

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

Итак, перед нами “Рабочий стол” Ubuntu.

Будьте внимательны! Не ошибитесь с выбором файла устройства! Иначе потеряете данные.

  • Первым делом я нажимаем комбинацию клавиш CTRL + ALT + F1 ( Переключаемся на первую виртуальную консоль ).
  • Затем в консоли вводим команду sudo -i ( Становимся Суперпользователем )
  • Затем команда fdisk -l ( Выводит список доступных дисков, в выводе этой команды мы уточняем название нашего hdd ). В моем случае жесткий диск в системе был назван sda.
  • Затем: shred -n0 -z -v /dev/sda ( Собственно сама команда, стирающая данные с жесткого диска ).
Читайте также:  Print server print to pdf windows

Подробнее о параметрах этой команды:

  • n0 — число проходов ( я указал 0, это значит что число проходов с заполнением файла случайными данными будет равно нулю).
  • z — Заполнить нулями ( будет еще один проход в который файл будет заполняться нулями )
  • v — показывать индикатор прогресса ( удобно видеть сколько процентов сделано, а сколько осталось )
  • /dev/sdb — HDD, с которого уничтожаем информацию.

CTRL + ALT + F7 — Вернуться в графический режим.

Если же нас мучает паранойя, то надо указать как минимум n1, чтобы был хотя бы один проход с заполнением файла случайными данными.

  • shred -n0 -z -v /dev/sda (только один проход с заполнением файла /dev/sda нулями с отображением индикатора прогресса)
  • shred -v /dev/sda ( Число проходов по умолчанию (3) с заполнением случайными данными файла /dev/sda с отображением индикатора прогресса )
  • shred -n4 -z -v /dev/sda ( четыре прохода с заполнением файла /dev/sda случайными данными и один проход с заполнением файла нулями с отображением индикатора прогресса

Источник

Как заполнить жесткий диск в Linux

Я тестирую часть кода и хочу заполнить жесткий диск данными. Я обнаружил, что dd может сделать огромные файлы в одно мгновение, но df не согласен. Вот что я попробовал:

dd if=/dev/zero of=filename bs=1 count=1 seek=$((10*1024*1024*1024))

ls -lh показывает файл 10G. Тем не менее, df -h показывает, что раздел не сократился. Итак, что мне нужно сделать, чтобы df распознать, что данные взяты? Я надеюсь на что-то быстрое, что я кодирую в модульном тесте.

Проблема seek= заключается в том, что файловая система (обычно) умна: если часть файла никогда не записывалась (и, следовательно, все нули), она не удосужилась выделить для нее место — так что, как вы мы видели, что у вас может быть файл размером 10 ГБ, который не занимает места (это называется «разреженным файлом» и может быть очень полезен в некоторых случаях, например, при определенных реализациях базы данных).

Вы можете принудительно распределить пространство с помощью (например):

что займет гораздо больше времени, но на самом деле заполнит диск. Я рекомендую сделать размер блока намного больше единицы, потому что это будет определять, сколько системных вызовов вызывает dd процесс — чем меньше размер блока, тем больше системных вызовов и, следовательно, тем медленнее он будет работать. (Хотя за пределами 1 МБ или около того, это, вероятно, не будет иметь большого значения и может даже замедлить процесс . )

В качестве другого варианта этого вы можете использовать yes вместе с одной строкой, и это примерно в 10 раз быстрее, чем запускать dd, если = / dev / urandom of = largefile. Так

Вы создали так называемый «разреженный файл» — файл, который, поскольку большая его часть пуста (т. Е. Читает обратно как \ 0), не занимает места на диске, кроме того, что фактически записано (1B, после 10 ГБ). разрыва).

Я не верю, что вы могли бы создавать огромные файлы, мгновенно занимая реальное дисковое пространство — занимая физическое пространство, значит, файловая система должна выделять блоки диска для вашего файла.

Я думаю, что вы застряли со старомодным «dd if = / dev / zero of = filename bs = 100M count = 100», которое ограничено скоростью последовательной записи вашего диска.

Если вы просто тестируете случаи с заполненными файловыми системами, возможно, Fallocate достаточно хорош. И быстрее тоже! например

Прекратите использование seek и используйте очень большой bs и / или count . Поскольку вы создаете разреженный файл , и, очевидно, вам не нужно этого делать.

Если вы хотите буквально заполнить жесткий диск, сделайте это:

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

Читайте также:  Менеджер приложений для linux mint

Как упоминалось в psmears, вы получите лучшую производительность, если установите размер блока в 1 МБ (bs = 1M) вместо 1 B (bs = 1). Это все еще займет некоторое время, но если вы хотите проверить ход выполнения вашей команды, откройте отдельную консоль и выполните следующие команды:

Используйте PID dd в этой команде (замените PID на pid dd):

Тогда посмотрите на ваш терминал. Конечно, это ограниченное использование, когда вы просто пытаетесь заполнить диск (вы можете просто использовать df или du ​​для проверки свободного места на диске или размера файла, соответственно). Однако бывают и другие случаи, когда удобно, чтобы dd выводил свой прогресс.

Дополнительный кредит: одно практическое использование для обнуления свободного места состоит в том, что после этого вы можете затем удалить «нулевые» файлы и добавить весь раздел (или диск, если вы обнулили все разделы) в файл образа диска (скажем, , disk-backup.dd), затем сожмите файл. Свободное пространство теперь очень сжимаемо, поэтому ваше сжатое dd-изображение будет намного меньше, чем оригинальное блочное устройство, содержимое которого оно содержит.

Shenanigans: заархивируйте большой файл с нулями и отправьте его по электронной почте всем своим друзьям. Скажи им, что это действительно круто.

Источник

заполнение нулями против случайного заполнения

Многие учебные пособия предполагают, что я должен заполнить диск с /dev /urandom вместо /dev /zero, если я хочу, чтобы он был неустранимым. Но я не совсем понимаю, как диск может быть восстановлен после заполнения нулями? И это только очень специализированные люди (читай правительственные учреждения), которые могут восстановить заполненный нулями диск, или что-то, что может сделать ваш обычный гик?

PS: Я НЕ ТОЛЬКО беспокоюсь о своих данных, я время от времени продаю бывшие в употреблении компьютеры, и я бы предпочел, чтобы обычные покупатели джо не получали от них ничего смешного.

7 ответов 7

Многие учебные пособия предполагают, что я должен заполнить диск с /dev /urandom вместо /dev /zero, если я хочу, чтобы он был неустранимым.

Что бы вы ни делали, не используйте /dev/urandom .

На моем i7-3770 /dev/urandom производит удивительно 1 ГБ псевдослучайно генерируемых данных в минуту. Для жесткого диска емкостью 4 ТБ одно стирание с /dev/urandom займет более 66 часов!

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

печатает бесконечный поток байтов. Он использует AES в режиме CTR и пароль, считанный из /dev/random , поэтому он криптографически защищен для любого жесткого диска размером менее 1 000 000 ТБ.

Это также быстро. Очень быстро. На той же машине ему удавалось генерировать 1,5 ГБ в секунду, так что это в 90 раз быстрее, чем /dev/urandom . Это больше, чем может выдержать любой жесткий диск потребительского уровня.

[Я] это просто очень специализированные люди (читай правительственные учреждения), которые могут восстановить заполненный нулями диск, или что-то, что может сделать ваш обычный гик?

В разделе «Перезапись данных на жестком диске: Великая борьба за стирание» авторы приходят к выводу, что перезапись исходного диска (используется только для теста) один раз неслучайными данными снижает вероятность правильного восстановления одного бита до 92%. Это означает, что один байт (один символ ASCII) может быть восстановлен только с вероятностью 51%; и нет никакого способа сказать, был ли байт восстановлен правильно или нет.

В реальных сценариях (слабо используемый диск) вероятность падает до 56% для одного бита и всего 9% для одного байта.

Они взяли новый диск, трижды протерли его, чтобы имитировать кратковременное использование, написали короткий текст и один раз сотрили диск неслучайными данными. Это были результаты:

Безопасное удаление данных — Питер Гутманн — 1996
Аннотация
С использованием все более совершенных систем шифрования злоумышленник, желающий получить доступ к конфиденциальным данным, вынужден искать информацию в других местах. Одним из способов атаки является восстановление предположительно стертых данных с магнитных носителей или оперативной памяти.

Источник

Оцените статью