Я принимаю это find
пример здесь, и Вы не интересуетесь решением, которое позволяет Вам объединить шаблоны в один find
аргумент (который был бы -regex
). Существует два возможных подхода: можно создать строку и позволить оболочке разделить ее на несколько аргументов везде, где существует пробел, или можно создать массив.
Со строковым подходом создания, с помощью замены команды, это не прибывает намного легче, чем попытка.
find . $(for X in sh pl sql; do echo "-name \\*.$X" -o; done | sed 's/-o *$//')
Вы могли также создать строку в цикле перед find
команда; я думаю, что это сделало бы для более четкого сценария ¹.
find_options=
for x in sh pl sql; do
find_options="$find_options -o -name \\*.$x"
done
find_options=${find_options# -o}
find . $find_options
Если Ваша оболочка поддерживает массивы (т.е. это - удар или ksh или zsh), я рекомендую использовать их вместо этого, таким образом, Вы не должны будете вставлять дополнительное заключение в кавычки.
find_options=()
for x in sh pl sql; do
find_options+=(-o -name "*.$x")
done
unset "find_options[0]"
find . "${find_options[@]}"
¹ На командной строке, Вы не должны волноваться о мобильности и можете заключить в кавычки так же мало по мере необходимости, так как Вы не должны волноваться о вводе данных пользователем. И можно обработать повторение посредством вставки копии.
Из того, что я понимаю, что Вы создали 3 массива RAID, каждого с присоединенным зеркалом. Можно смонтировать каждую "половину" пар как нормальные диски, но она не рекомендуется, в то время как массив работает, и обе "половины" активны, поскольку это будет десинхронизировать копии и повреждение массива. Но в случае отказа они там отдельно, и также если Вы используете его для каталогов как /boot
любые процессы, которые не понимают набег исходно, будут просто рассматривать их как идентичные копии, я использую небольшой раздел с набегом 1 со многими дисками гарантировать, что машина остается загрузочной, неважно, какой диск ОС перестает работать.
Хотя это помимо дублирования базового оборудования это не обладает никаким преимуществом и требует дополнительного обслуживания (3 массива для заботы о), и диски изолируются.
Если Вы делаете это по причинам производительности, и Вы хотите большую часть IOPS (например, для сервера базы данных) Вы более обеспечены с a raid 1+0
. Это было бы в основном дорожкой 3 дисков (примерно 3 раза скорость чтения-записи отдельного диска) и зеркало этого массива еще с 3 дисками. Текущий MD
драйверы поддерживают это исходно, и Вы не должны справиться с набегом 1 и совершить рейд на 0 массивов отдельно, но создать единственное устройство набега:
mdadm --create /dev/md0 -v --raid-devices=6 --level=raid10 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
Это означает, что Вы получаете общий размер массива суммы 3 дисков. Проблема с этой установкой состоит в том, что отказ 2 дисков может уничтожить все Ваши данные, если это - те же "половины" зеркала диска в 2 копиях. Диски имеют, вероятно, тот же возраст, что означает, что они начинают перестать работать в то же время. И напряжение восстанавливания на другой "половине" увеличений шанс отказа значительно:
С Вашей установкой вероятность выживания данных потерь похожа на это с raid-1+0:
1 drive fail = 100%
2 drives fail = 80%
3 drives fail = 40%
4 drives fail = 0%
Если Вы соглашаетесь со сбалансированным IOPS/speeds и емкостью хранения с 6 дисками, Вы получаете путь лучшая устойчивость при создании набега 6 из всех устройств:
Probability of data loss in a 3 year span:
RAID5 - 0.0125 % (1 in 80)
RAID6 - 0.0005 % (1 in 1982)
Но так как Вам нужен раздел начальной загрузки (загрузчик не может чередоваться через диски), Вам нужны 2 массива, один маленький позволяет, говорят, что 256 МБ и остальные вместе, необходимо создать эту схему с fdisk или cfdisk и удостовериться что bootable
флаги установлены для небольшого массива. Можно скопировать таблицу разделов от одного диска до другого с sfdisk, если диски являются точно тем же размером:
sfdisk -d /dev/sda | sfdisk /dev/sdb
Затем создайте 2 массива:
mdadm --create /dev/md0 -v --raid-devices=6 --level=mirror /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
mdadm --create /dev/md1 -v --raid-devices=6 --level=raid6 /dev/sda2 /dev/sdb2 /dev/sdc3 /dev/sdd4 /dev/sde5 /dev/sdf6
Установщики ОС могут заботиться об этом для Вас, хотя просто удостоверяются, что отметили первый массив, который будет использоваться для /boot
С этим Вы возвращаете 1 ценность диска устройства хранения данных (общая мощность = емкость дисков * 4), массив может пережить отказ 2 дисков, и если они не одновременно, у Вас есть более чем достаточно времени и математического шанса восстановить этот массив.
Одна вещь иметь в виду с текущим потребительским качеством (коэффициенты ошибок чтения ~10^14/error) и размеры диска (> =2Tb), Вы никогда не должны использовать raid-5
для критических данных, поскольку шанс восстановления этого массива в случае отказа составляет меньше чем 50%.
Что-то здесь не имеет смысла.
Массив RAID1 состоит из 2 или больше дисков, все из которых имеют то же содержание. Таким образом, при создании массива RAID1 с 6 дисками у Вас есть пять зеркал, не три.
Можно иметь в виду, делают три массива RAID1, каждый состоящий из двух дисков. Затем у Вас будет три различных md
устройства к доступу. Это не скроет диски /dev/sd[a-f]
, но Вы обычно не будете получать доступ к данным по ним непосредственно, когда они будут частью RAID-массива. (Вы все еще получаете доступ к ним непосредственно для вещей как smartctl
.)
Вы могли также сделать массив RAID10 с 6 дисками, который даст Вам сингл md
устройство для всех шести дисков, и эффективно имело бы три зеркала. Это также было бы быстрее.
Установщик Debian может настроить все их для Вас (я вполне уверен, он знает о RAID10, если не необходимо будет переключиться на alt-f2 и использовать mdadm непосредственно для создания RAID10).
Обычно Вы запускаете программное обеспечение Linux RAID на разделах, не все диски. Кроме того, если Вы используете уровень RAID кроме 1, я рекомендую делать два раздела: маленькие 256 МБ один на каждом диске, RAID1, для /boot
, и затем второй раздел, содержащий остальную часть диска, на любом уровне RAID, Вы хотели бы. GRUB2 имеет довольно хорошую поддержку RAID1, не так для чего-либо еще. Так /boot
является обычно лучшим как RAID1.
Обратите внимание, что, если у Вас есть встроенный RAID в BIOS, вероятно, fakeraid, и необходимо использовать программное обеспечение Linux RAID вместо этого — по крайней мере, если это - новая установка, и машина будет только для Linux. Необходимо настроить BIOS для выполнения в режиме AHCI, не режиме RAID.
(При расходовании 400$ + на фактический аппаратный RAID-контроллер проверьте его документацию на то, как настроить его. Это, вероятно, скроет диски позади него и только выставит объемы, которые Вы экспортируете.)