Есть ли более быстрый способ занять только дисковое пространство, чем dd [duplicate]

На этот вопрос уже есть ответ здесь:

Чтобы проверить, что наши системы правильно определить, что им не хватает места, нам просто нужны большие файлы на диске, где мы вообще не заботимся об их содержании. В настоящий момент мы используем dd if = / dev / zero [...] для их создания, что занимает ужасно много времени, особенно при записи нескольких сотен гигабайт на диски SATA потребительского уровня.

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

2
задан 5 March 2015 в 03:27

2 ответа

Я думаю, что ограничение будет BW записи Ваших дисков . Так или иначе важно также выбрать право blocksize:

⌂89% [romano:~/tmp] % time dd if=/dev/zero of=test1.tmp count=2M
2097152+0 records in
2097152+0 records out
1073741824 bytes (1,1 GB) copied, 12,6078 s, 85,2 MB/s
dd if=/dev/zero of=test1.tmp count=2M  0,37s user 3,18s system 27% cpu 12,721 total
⌂86% [romano:~/tmp] % time dd bs=1M if=/dev/zero of=test1.tmp count=1k
1024+0 records in
1024+0 records out
1073741824 bytes (1,1 GB) copied, 11,671 s, 92,0 MB/s
dd bs=1M if=/dev/zero of=test1.tmp count=1k  0,00s user 1,10s system 9% cpu 11,783 total
⌂64% [romano:~/tmp] % time dd bs=100M if=/dev/zero of=test1.tmp count=10
10+0 records in
10+0 records out
1048576000 bytes (1,0 GB) copied, 10,3397 s, 101 MB/s
dd bs=100M if=/dev/zero of=test1.tmp count=10  0,00s user 1,16s system 11% cpu 10,457 total

..., как Вы видите, скорость более или менее ограничена приблизительно 100 МБ/с, но использование ЦП варьируется дико (значение по умолчанию blocksize dd составляет 512 байтов).

правильное решение fallocate, как в связанный дубликат .

2
ответ дан 20 November 2019 в 02:06

При использовании BTRFS можно легко уменьшить размер файловой системы:

btrfs filesystem resize <size> <mount point>

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

, Если Вы действительно хотите пойти путем для создания большого файла, я не знаю о пути быстрее, чем dd, хотя теоретически можно было присвоить свободные блоки файлу, на самом деле не пишущий в те блоки. Хотя этому был бы нужен некоторый уровень файловой системы, взламывающий †“, возможно , fallocate делает это, хотя я никогда не использовал его.

-1
ответ дан 20 November 2019 в 02:06

Другие вопросы по тегам:

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