- как заполнить свободное на разделе место нулями?
- Re: как заполнить свободное на разделе место нулями?
- Re: как заполнить свободное на разделе место нулями?
- Re: как заполнить свободное на разделе место нулями?
- Re: как заполнить свободное на разделе место нулями?
- Re: как заполнить свободное на разделе место нулями?
- Re: как заполнить свободное на разделе место нулями?
- Re: как заполнить свободное на разделе место нулями?
- Re: как заполнить свободное на разделе место нулями?
- Re: как заполнить свободное на разделе место нулями?
- Re: как заполнить свободное на разделе место нулями?
- Re: как заполнить свободное на разделе место нулями?
- Re: как заполнить свободное на разделе место нулями?
- Как заполнить жесткий диск в Linux
- Как заполнить жесткий диск в Linux
- 7 ответов
- Очистить неиспользуемое пространство с нулями (ext3, ext4)
- ОБНОВЛЕНИЕ # 1
- Нулевое неиспользуемое пространство
- Файловая система не установлена
- Установлена файловая система
- Уменьшение размера файла изображения
- Изображение находится в выделенном формате ВМ
- Изображение является необработанным файлом
- источники
- ОБНОВЛЕНИЕ # 1
как заполнить свободное на разделе место нулями?
Re: как заполнить свободное на разделе место нулями?
cat /dev/zero > file
Когда отвалится — значит всё свободное место забито нулями.
Re: как заполнить свободное на разделе место нулями?
file естественно должен быть на забиваемом разделе
Re: как заполнить свободное на разделе место нулями?
Или чуть быстрее
dd if=/dev/zero of=/path/file
Re: как заполнить свободное на разделе место нулями?
это с 512-байтным bs по умолчанию? Шутник.
Re: как заполнить свободное на разделе место нулями?
Оставайтесь на месте, отдел К выезжает
Re: как заполнить свободное на разделе место нулями?
Есть такое слово — называется кеширование.
Что мешает написать bs=4096?
Re: как заполнить свободное на разделе место нулями?
Re: как заполнить свободное на разделе место нулями?
sync еще неплохо бы.
Re: как заполнить свободное на разделе место нулями?
>Оставайтесь на месте, отдел К выезжает Тогда лучше использовать shred
Re: как заполнить свободное на разделе место нулями?
Только потом надо удалить файл.
Re: как заполнить свободное на разделе место нулями?
>как заполнить свободное на разделе место нулями?
А зачем, если не секрет.
Re: как заполнить свободное на разделе место нулями?
всем спасибо за ответы
>А зачем, если не секрет.
предпродажная подготовка=) продаю комп, а систему попросили не сносить
Источник
Как заполнить жесткий диск в 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 . Поскольку вы создаете разреженный файл , и, очевидно, вам не нужно этого делать.
Если вы хотите буквально заполнить жесткий диск, сделайте это:
Вы можете при желании указать количество, если вы хотите ограничить размер, но если вы опустите счет, он будет работать до тех пор, пока у вас не будет свободного места на диске.
Как упоминалось в psmears, вы получите лучшую производительность, если установите размер блока в 1 МБ (bs = 1M) вместо 1 B (bs = 1). Это все еще займет некоторое время, но если вы хотите проверить ход выполнения вашей команды, откройте отдельную консоль и выполните следующие команды:
Используйте PID dd в этой команде (замените PID на pid dd):
Тогда посмотрите на ваш терминал. Конечно, это ограниченное использование, когда вы просто пытаетесь заполнить диск (вы можете просто использовать df или du для проверки свободного места на диске или размера файла, соответственно). Однако бывают и другие случаи, когда удобно, чтобы dd выводил свой прогресс.
Дополнительный кредит: одно практическое использование для обнуления свободного места состоит в том, что после этого вы можете затем удалить «нулевые» файлы и добавить весь раздел (или диск, если вы обнулили все разделы) в файл образа диска (скажем, , disk-backup.dd), затем сожмите файл. Свободное пространство теперь очень сжимаемо, поэтому ваше сжатое dd-изображение будет намного меньше, чем оригинальное блочное устройство, содержимое которого оно содержит.
Shenanigans: заархивируйте большой файл с нулями и отправьте его по электронной почте всем своим друзьям. Скажи им, что это действительно круто.
Источник
Как заполнить жесткий диск в 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: запишите большой файл нулей и отправьте его по электронной почте всем своим друзьям. Скажите им, что это действительно здорово.
Вы создаете не разреженный файл 1 ТБ со следующей командой:
Это было полезно при тестировании того, что происходит, когда квоты превышены, или файловая система заполняется.
df -h показывает, что доступное пространство становится меньше.
Источник
Очистить неиспользуемое пространство с нулями (ext3, ext4)
Как очистить неиспользуемое пространство нулями? (Ext3, ext4)
Я ищу что-то умнее, чем
Как FSArchiver ищет «использованное пространство» и игнорирует неиспользуемый, но противоположный сайт.
Назначение: Я хотел бы сжать изображения разделов, поэтому настоятельно рекомендуется заполнять неиспользуемое пространство нулями.
Btw. Для btrfs: очистить неиспользуемое пространство с нулями (btrfs)
Такая утилита имеет zerofree .
Zerofree находит нераспределенные, необнужденные блоки в файловой системе ext2 или ext3 и заполняет их нулями. Это полезно, если устройство, на котором находится эта файловая система, является образ диска. В этом случае, в зависимости от типа образа диска, вторичная утилита может уменьшить размер образа диска после запуска zerofree. Zerofree требует, чтобы файловая система была отключена или смонтирована только для чтения.
Обычный способ достижения одного и того же результата (обнуление неиспользуемых блоков) заключается в том, чтобы запустить «dd», создать файл с нулями, который занимает все свободное место на диске, а затем удалить этот файл. У этого есть много недостатков, которые zerofree облегчает:
- он медленный
- это делает образ диска (временно) расти в максимальной степени
- он (временно) использует все свободное место на диске, поэтому другие одновременные действия записи могут завершиться неудачно.
Zerofree был написан для запуска с систем GNU / Linux, установленных как гостевые ОС внутри виртуальной машины. Если это не ваше дело, вам почти наверняка не нужен этот пакет.
ОБНОВЛЕНИЕ # 1
Описание пакета .deb содержит следующий абзац, который будет подразумевать, что это будет отлично работать с ext4.
Описание: нулевые свободные блоки из файловых систем ext2, ext3 и ext4. Zerofree находит нераспределенные блоки с ненулевым значением контента в файловой системе ext2, ext3 или ext4 и заполняет их нулями …
Резюме методов (как упоминалось в этом вопросе и в других местах) для удаления неиспользуемого пространства на ext2 / ext3 / ext4:
Нулевое неиспользуемое пространство
Файловая система не установлена
- Если «диск», на котором установлена ваша файловая система, тонко подготовлен (например, современный SSD, поддерживающий TRIM, файл VM, формат которого поддерживает разреженность и т. Д.), И ваше ядро говорит, что блочное устройство это понимает, вы можете использовать e2fsck -E discard src_fs для e2fsck -E discard src_fs неиспользуемое пространство (требуется e2fsprogs 1.42.2 или выше).
- Использование zerofree для явного написания нулей по неиспользуемым блокам.
- Использование e2image -rap src_fs dest_fs для копирования только используемых блоков (новая файловая система должна быть на нулевом диске), требует e2fsprogs 1.42.9 или новее).
Установлена файловая система
- Если «диск», на котором установлена ваша файловая система, тонко подготовлен (например, современный SSD, поддерживающий TRIM, файл VM, формат которого поддерживает разреженность и т. Д.), Ваше ядро говорит, что блочное устройство это понимает, и, наконец, драйвер ext filesystem поддерживает его, вы можете использовать fstrim /mnt/fs/ попросить файловую систему отказаться от неиспользуемого пространства.
- Использование cat /dev/zero > /mnt/fs/zeros; sync; rm /mnt/fs/zeros cat /dev/zero > /mnt/fs/zeros; sync; rm /mnt/fs/zeros cat /dev/zero > /mnt/fs/zeros; sync; rm /mnt/fs/zeros ( sfill от secure-delete использует эту технику). Этот метод неэффективен, не рекомендуется Ted Ts’o (автор ext4), может не обрезать определенные вещи и может замедлить будущие fscks.
Отсутствие файловой системы дает лучшие результаты, чем ее установка. Отбрасывание имеет тенденцию быть самым быстрым методом, когда много ранее использованного пространства должно быть обнулено, но с использованием zerofree после процесса отбрасывания иногда может быть немного нулевым дополнительным (в зависимости от того, как сброс реализован на «диске»).
Уменьшение размера файла изображения
Изображение находится в выделенном формате ВМ
Вам нужно будет использовать соответствующий инструмент для создания образа диска (например, qemu-img convert src_image dst_image ), чтобы позволить qemu-img convert src_image dst_image пространство быть восстановленным и разрешить qemu-img convert src_image dst_image файла, представляющего изображение.
Изображение является необработанным файлом
Один из следующих методов может быть использован для того, чтобы сделать файл разреженным (так что запуск нулевой остановки занимает место):
- cp —sparse=always src_image dst_image .
- fallocate -d src_image (требует использования linux v2.25 или выше).
В наши дни было бы проще использовать такой инструмент, как virt-sparsify, чтобы делать эти шаги и многое другое за один раз.
источники
- Очистить неиспользуемое пространство с нулями (ext3, ext4)
- https://ext4.wiki.kernel.org/index.php/Ext4_VM_Images
- http://article.gmane.org/gmane.comp.file-systems.ext4/42537
- http://frippery.org/uml/index.html
- освободить неиспользуемое пространство в файле qcow2-image на kvm / qemu
- http://libguestfs.org/virt-sparsify.1.html
sfill от secure-delete может сделать это и несколько других связанных заданий.
ОБНОВЛЕНИЕ # 1
Существует дерево-источник, который, по-видимому, используется проектом ArchLinux в github, который содержит источник sfill который является инструментом, включенным в пакет Secure-Delete.
Также копия sfill страницы sfill находится здесь:
Если у вас есть e2fsprogs 1.42.9, вы можете использовать e2image для создания образа раздела без свободного места в первую очередь, поэтому вы можете пропустить шаг обнуления.
Вы можете использовать sfill . Это лучшее решение для тонких томов.
Источник