Как настроить RAID0 с использованием двух дополнительных дисков? [closed]

Хорошо, мне удалось обойтись простым старым sed вроде этого.

ls -1 \
    storage/{innobase,xtradb}/pars/{pars0grm.cc,pars0grm.y,pars0lex.l,lexyy.cc} \
    storage/{innobase,xtradb}/fts/{fts0blex.cc,fts0blex.l,fts0pars.cc,fts0pars.y,fts0tlex.cc,fts0tlex.l} \
    storage/innobase/include/fts0[bt]lex.h \
    | sed -re 'h; s|/pars/|/|; s|/fts/|/|; s|innobase/include|include|; H; x; s|\n| |' \
    | xargs -L1 cp -v \
    ;

Скрипт sed не такой уж тривиальный, поэтому позвольте мне объяснить пошагово (для меня в будущем):

  • h копирует текущую строку («пространство шаблонов») в регистр («удерживаемое пространство»);
  • каждый s редактирует пространство шаблонов как обычно, удерживаемое пространство не изменяется;
  • H добавляет теперь отредактированную строку к регистр удержания - который в конечном итоге содержит две строки, старое имя файла и новое, конечно, со встроенными символами \ n ;
  • x заменяет пространство удержания с пространством шаблонов, эффективно загружая новую пару из старого регистра;
  • s | \ n | | объединяет две строки в одну, разделяя их пробелом;
  • и, наконец, неявный p (от вызова sed без -n ) распечатывает результат.

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

  • ls -1 разворачивает все глобусы в имена файлов реальных существующих файлов и печатает их по одной в каждой строке;
  • sed превращает это в «$ old_filename $ new_filename» , снова по одному файлу на строку;
  • xargs -L1 вызывает cp -v $ old_filename $ new_filename в каждой строке.

Вот и все!

2
06.12.2016, 07:42
1 ответ

В этом ответе дайте понять, что все ваши данные будут уничтожены на обоих членах массива (дисках), поэтому сначала сделайте резервную копию!

Откройте терминал и станьте root (su); если у вас включен sudo , вы также можете сделать, например, sudo -i; см. man sudo для всех опций):

sudo -i

Установите необходимое и необязательное программное обеспечение.

Необходимые, это необходимые:

Необязательные программы чтобы полностью соответствовать этому ответу, вы можете обойтись без них:

Рекомендую установить все:

apt-get install mdadm gdisk pv util-linux iotop gparted

Сначала нужно стереть диски, если на них раньше были данные и файловые системы, то есть. Предположим, у нас есть 2 члена: sda и sdb.

pv < /dev/zero > /dev/sda
pv < /dev/zero > /dev/sdb

Альтернативно, если вы выполняете каждую команду с sudo, эта часть будет выглядеть так:

sudo bash -c 'pv < /dev/zero > /dev/sda'
sudo bash -c 'pv < /dev/zero > /dev/sdb'

Чтобы перепроверить, ничего ли не осталось, вы можете заглянуть в GParted на обоих дисках, и если там есть какая-либо файловая система, кроме unknown, сотрите ее:

wipefs -a /dev/sda
wipefs -a /dev/sdb

Разбиваем диски на разделы в зависимости от того, хотите ли вы MBR или GPT:

fdisk /dev/sdX

или

gdisk /dev/sdX

Предположим, вы будете использовать новый стандарт, GPT то есть.

Инициализируем оба диска таблицей разделов GUID (GPT):

gdisk /dev/sda
gdisk /dev/sdb

В обоих случаях используйте следующее:

o Enter для новой пустой таблицы разделов GUID (GPT)
y Enter для подтверждения своего решения
w Enter для записи изменений
y Enter для подтверждения своего решения

Не делайте этого с GParted, потому что в процессе будет создана файловая система, чего мы не хотим, используйте gdisk снова:

gdisk /dev/sda
gdisk /dev/sdb

В обоих случаях используйте следующее:
n Enter для нового раздела
Enter для первого раздела
Enter для значения по умолчанию первого сектора
Enter для значения по умолчанию последнего сектора
fd00 Enter для типа Linux RAID
w Enter для записи изменений
y Enter для подтверждения своего решения

Для тройной проверить, ничего ли не осталось позади, вы можете заглянуть с помощью GParted на оба вновь созданных раздела, и если они содержат любую файловую систему, кроме неизвестной, стереть ее:

wipefs -a /dev/sda1
wipefs -a /dev/sdb1

Теперь вы можете осмотреть диски:

mdadm --examine /dev/sda /dev/sdb

Теперь в скобках должно быть написано (type ee).

Если это так, теперь проверяем разделы:

mdadm --examine /dev/sda1 /dev/sdb1

Должно быть написано Суперблок md не обнаружен.

Если это так, мы можем создать массив RAID0:

mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1

Подождем, пока массив будет полностью создан, за этим процессом мы можем наблюдать:

watch -n 1 cat /proc/mdstat

После создания массива, мы должны посмотреть на его детали:

mdadm --detail /dev/md0

Там должно быть написано Активные устройства: 2, Работающие устройства: 2 и что Состояние: чистое.

Теперь создаем файловую систему на массиве, если вы используете ext4, этого лучше избегать, потому что ext4lazyinit займет заметное количество времени, отсюда и название "lazyinit":

mkfs.ext4 /dev/md0

Вместо этого, вы должны принудительно выполнить полную мгновенную инициализацию с помощью:

mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/md0

Указав эти опции, иноды и журнал будут инициализированы немедленно во время создания.

Если вы решили воспользоваться коротким путем и создали файловую систему ext4 с помощью команды "лучше избегать", обратите внимание, что ext4lazyinit займет заметное время для инициализации всех inodes, вы можете понаблюдать за ней, пока она не завершится, например, с помощью:

iotop

Любой способ инициализации файловой системы, вы должны смонтировать его после того, как он выполнит свою инициализацию:

Теперь мы создадим каталог для этого массива RAID0:

mkdir -p /mnt/raid0

И просто смонтируем его:

mount /dev/md0 /mnt/raid0

Поскольку мы, по сути, закончили, мы можем снова использовать GParted, чтобы быстро проверить, показывает ли он linux-raid файловую систему вместе с флагом raid на обоих дисках.

Если да, то мы правильно создали массив RAID0 с разделами GPT и теперь можем копировать на него файлы.

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

nano /etc/fstab

И добавить в него запись:

/dev/md0                /mnt/raid0              ext4    defaults        0 0

Вы можете проверить, правильно ли это, после сохранения изменений:

mount -av | grep raid0

Должно быть написано уже смонтировано.

Если это так, сохраняем конфигурацию массива:

mdadm --detail --scan --verbose >> /etc/mdadm/mdadm.conf

Проверяем, все ли вы сделали по плану, и если да, то можно перезапускать:

reboot
0
27.01.2020, 23:05

Теги

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