обнулить большое блочное устройство с распараллеленным дд

1209
palmbardier

У нас есть шестьдесят терабайтное блочное устройство, которое мы хотим обнулить с помощью dd. Можно ли распараллелить эту операцию, чтобы уменьшить количество времени, которое требуется?

Я попытался выполнить следующую команду, но это не совсем то, что я ищу:

seq 1 5 | parallel dd if=/dev/zero of=/dev/mapper/mydevice{} bs=10M count=10 
1
Это одно физическое устройство? HDD или SDD? Paul 9 лет назад 0
Если это один жесткий диск (что, я думаю, не так, учитывая размер), он не будет быстрее, так как тогда головке придется перемещаться между двумя позициями записи. Если это MD-массив, вы можете уничтожить массив и запустить dd на разных дисках параллельно. Если это диск SAN или что-то в этом роде, я думаю, вам не повезло, если только вы не используете инструменты от поставщика SAN. Sig-IO 9 лет назад 0
Это массив MD, но мы не хотим уничтожать массив. У нас есть LVM и LUKS поверх программного RAID-массива Linux. Мы хотим [распределить данные блока с нулями] (http://www.cyberciti.biz/hardware/howto-linux-hard-disk-encryption-with-luks-cryptsetup-command/), чтобы внешний мир видел это случайные данные, т.е. защита от раскрытия моделей использования. palmbardier 9 лет назад 0

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

1
Ole Tange
seq 0 600000 | parallel dd if=/dev/zero of=/dev/mapper/my60device bs=10M count=10 seek={}0 

Вы уже используете, if, of, bs, and countпоэтому я предполагаю, что вы знаете, что они делают.

seekищет nблоки в выходном файле перед выполнением dd.

Вы не пишете, как устройство на 60 ТБ физически расположено на шпинделях. Это может оказать огромное влияние. Так что это может быть быстрее:

seq 0 60000 | parallel --shuf dd if=/dev/zero of=/dev/mapper/my60device bs=10M count=100 seek={}00 

Он записывает блоки объемом 1 ГБ и тасует выполнение, что может ускоряться или замедляться в зависимости от физической компоновки.

Можете ли вы расширить свой ответ, чтобы объяснить параметры? Благодарю. fixer1234 9 лет назад 0
Спасибо! Я пытался использовать --skip вместо --seek. Первый действует на входе, последний действует на выходе. D'ха! palmbardier 9 лет назад 0
Что касается того, как 60-терабайтное блочное устройство физически расположено на шпинделях: это 12 дисков SATA на объединительной плате SAS 6 Гбит / с с программным обеспечением Linux5 RAID5 сверху. palmbardier 9 лет назад 0
Тогда распараллеливание вывода на устройство, скорее всего, не поможет: когда вы одновременно записываете блок 1 и блок n-1, оба они приводят к тому, что все диски активны = не годится. Так что, если можете, прервите рейд, дд на каждом устройстве отдельно (параллельно -j0 дд, если = / dev / zero of = {} bs = 1M ::: / dev / sd ...) и после этого заново создайте рейд. Ole Tange 9 лет назад 0
0
user474521

Если базовый драйвер устройства не поддерживает планирование двух операций ввода-вывода одновременно с помощью какой-то странной ioctlвещи, вы не можете явно выполнять параллельные операции ввода-вывода для устройства.

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

Вращение двух ddна одном блочном устройстве не изменит того факта, что большинство устройств ввода-вывода, особенно те, которые выглядят как дисковые накопители, могут действительно выполнять только одну вещь или небольшую очередь за раз - и любую оптимизацию (т.е. использование NCQ) выполняется на уровне драйвера устройства.

Да, в прошлом мы проводили тесты производительности с большими массивами с / без NCQ, но с другим аппаратным контроллером RAID и без шифрования LUKS. В прошлый раз, когда мы обнуляли массив LUKS размером 22 терабайта, это заняло около 8 часов. Я собираюсь попробовать предложение @ OleTange и посмотреть, сможем ли мы сделать лучше, чем 21 час на массиве 60 терабайт. palmbardier 9 лет назад 0

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