В чем разница между созданием массива mdadm с использованием разделов или целых дисков напрямую

Подводя итог, вы хотите напечатать строки, начинающиеся с указанного номера строки и продолжающиеся до тех пор, пока непосредственно перед первой следующей строкой, которая начинается с даты. В вашем примере начальная строка - 3. В этом случае:

$ awk '{if (NR==3)f=1; else if (/^[0-9-]{10} /)f=0} f{print}' trace.log
2016-10-07 15:49:07,537 ERROR Some exception
 stacktrace line 1
 stacktrace line 2
 .
 .
 stacktrace line n

Приведенный выше код работает следующим образом:

  • if (NR == 3) f = 1

    В указанном вами номере строки установите переменную f к единице.

  • else if (/ ^ [0-9 -] {10} /) f = 0

    В других строках установите f равным нулю, если строка начинается с 10 цифр или тире с последующим пробелом. Другими словами, установите f равным нулю в первой строке, которая начинается с чего-то похожего на дату.

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

     awk '{если (NR == 3) f = 1; else if (/ ^ [0-9 -] {10} [0-9:] {8}, /) f = 0} f {print} 'trace.log 
     

    Дальнейшие улучшения это возможно.

  • f {print}

    Если f не равно нулю, вывести строку.

    Для краткости мы могли бы заменить f {print} просто f . Это возможно, потому что, когда действие не указано явно, используется действие по умолчанию print .

Альтернатива

Некоторые версии awk не поддерживают коэффициенты повторения, такие как {10} . Если это так в вашей системе, попробуйте:

awk '{if (NR==3)f=1; else if (/^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] /)f=0} f{print}' trace.log
26
15.11.2016, 17:12
4 ответа

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

Следует подумать об использовании раздела вместо всего диска. Это должно входить в общие рекомендации по настройке массива и, безусловно, может избавить вас от головной боли в будущем, когда возникнет необходимость в дальнейшей замене диска.

Наиболее важные аргументы:

Диски разных производителей (или даже разные модели «одинаковой» емкости от одного производителя) не обязательно имеют одинаковый размер диска и даже минимальную разницу в размерах, предотвратит замену вышедшего из строя диска на новый, если второй меньше первого. Разбиение на разделы позволяет обойти это;

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

Итак, рекомендации:

1) Разделите диски , которые будут использоваться, с немного меньшей емкостью , чем общее дисковое пространство (например, у меня есть массив RAID5 размером Диски емкостью 2 ТБ, и я намеренно разбил их на разделы, потратив около 100 МБ каждый). Затем используйте / dev / sd? 1 каждого из них для создания массива - это добавит запас прочности на случай, если на новом заменяющем диске будет меньше места, чем на исходных дисках, которые использовались для сборки массива при его создании;

2 ) Используйте диски разных производителей;

3) Используйте диски разных моделей, если вам не подходят разные производители;

4) Используйте диски из разных партий;

5) Проактивно заменяйте диски до того, как они выйдут из строя и не все одновременно. Это может показаться немного параноидальным и действительно зависит от критичности ваших данных. Я использую диски, возраст которых различается на 6 месяцев;

6) Делайте регулярные резервные копии (всегда, независимо от того, используете ли вы массив или нет). Raid не служит той же цели, что и резервное копирование. Массивы обеспечивают высокую доступность, резервные копии позволяют восстанавливать потерянные файлы (включая те, которые были случайно удалены или повреждены вирусами, некоторые примеры чего-то, от чего использование массивов не защитит вас).

OBS: За исключением всех неотъемлемых рассуждений, приведенных выше, нет особых технических различий между использованием / dev / sd? против / dev / sd? #.

Удачи

38
27.01.2020, 19:40

Другим важным аргументом является то, что некоторые системные платы могут удалять ваши суперблоки RAID , если вы используете целые дисковые устройства и не очень тщательно очищаете их при добавлении дисков в массив RAID, которые когда-то были устройствами GPT.

Я узнал об этом на горьком опыте, когда UEFI моей материнской платы ASRock сделал мой RAID непригодным для использования:

Чтобы защитить себя от этого, всегда запускайте sgdisk --zapна ранее отформатированном GPT -диске, который вы хотите использовать для всего -RAID-массива устройства.

wipefs -aтакже может работать для удаления всей оставшейся информации о разделах (не только GPT )перед добавлением устройства на диск.


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

Я никогда не знал, какие настоящие аргументы были в пользу этой передовой практики (помимо ответа @Marcelo, объясняющего, что он может работать с дисками немного разных размеров ). Теперь я знаю.

Кстати, если это произойдет с вами, ваши данные не будут потеряны. Скорее всего, вы можете просто sgdisk --zapустройство, а затем воссоздать RAID, например, с помощью.mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc /dev/sdd(mdadm сообщит вам, что он уже обнаружил прошлые данные, и спросит, хотите ли вы продолжить -использование этих данных ). Я пробовал это несколько раз, и это сработало, но я все же рекомендую сделать резервную копию, прежде чем делать это.

12
27.01.2020, 19:40

Есть пара сообщений, в которых упоминается проблема с использованием всего устройства в качестве члена RAID вместо раздела, один здесь . Я могу подтвердить, что это так.

Таким образом, если вы создаете RAID, используя все устройство (, скажем, /dev/sda, /dev/sdb,... вместо /dev/sda1, /dev/sdb1,... ), устройство RAID не не собираться после перезагрузки, даже если у вас есть конфигурация, сохраненная под mdadm.conf. Также существует вероятность перезаписи прошивки материнской платы или удаления суперблока RAID. В моей настройке запуск mdadm --assemble --scan --verboseне возвращает мне мою настройку RAID, и, похоже, это связано с тем, что суперблок RAID недоступен.

6
27.01.2020, 19:40

Чтобы избавить себя от головной боли в будущем, используйте разделы. Все приводы выходят из строя, это вопрос не «если», а «когда». Если вы используете целые диски, то после отказа диска вы должны заменить его моделью точно такого же размера. Даже несколько МБ больше из-за другого производителя или изменений процесса, что бы то ни было, приведет к сбою замены диска.

Используя разделы, когда один из ваших текущих дисков емкостью 2 ТБ выходит из строя, вы получаете замену на 4 ТБ (или что-то еще, просто нужно больше ), а затем создаете на нем раздел того же размера 2 ТБ. Да, возможно, вы зря тратите место на этом новом большом диске. Использование остальной части этого диска в качестве раздела рейда, отличного от -, возможно, но это может повлиять на производительность странным образом. После нескольких отказов и замен дисков вы в конечном итоге замените все свои оригинальные диски емкостью 2 ТБ, и теперь у вас есть возможность расширить свой RAID-массив, чтобы использовать разделы большего размера.

3
27.01.2020, 19:40

Теги

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