# Пример создания software Raid-1 на Sparc машинах

Нурлан Мухамедьевич Тлеушев

Пример создания software RAID 1 на SPARC машине


Примечание: есть отличия создания RAID 1 на x86, кому интересно - обращайтесь


Дано:

Допустим, есть система с двумя дисками:

c0t0d0 и c1t0d0

Желательно, чтобы оба были абсолютно одинаковые (!!!!): где c0t0d0 является загрузочным. Он разбит так:


slice size (mb) mount point

----------------------------------------------------------------

0 1024 /

1 256 swap

2 4096 (entire disk space)

3 64 (slice for metadb's replicas)

4 0

5 0

6 0

7 2752 /export


Кроме того, предположим, что во время установки ОС мы предусмотрели слайс размером 64 Мб для размещения на нем реплик metadb

Также, установлено ПО Solstice DiskSuite (для версий Solaris 8 и ниже, а на 9 и 10 Solaris Volume manager ставиться автоматически)


Задача:

установить зеркала на все существующие слайсы: root, swap, /export


План решения:

1. root будет на зеркале d10, которое будет состоять из d11 (c0t0d0s0) и d12 (c1t0d0s0)

2. swap будет на зеркале d20, которое будет состоять из d21 (c0t0d0s1) и d22 (c1t0d0s1)

3. /export будет на зеркале d30, которое будет состоять из d31 (c0t0d0s7) и d32 (c1t0d0s7)


Решение:

сначала необходимо привести разбивку диска c1t0d0 к виду c0t0d0

для этого воспользуемся следующим методом:

# prtvtoc /dev/rdsk/c0t0d0s2 > /tmp/disk_c0t0d0

# fmthard -s /tmp/disk_c0t0d0 /dev/rdsk/c1t0d0s2


Следующей командой добавляем строки в /etc/system для ускорения процесса синхронизации зеркал (можно скопировать 3 строки, помеченные курсорсивом и вставить их в командную строку)

echo "*

set md_mirror:md_resync_bufsz=2048

*" >> /etc/system


Создаем по 3 реплики на обоих дисках

# metadb -f -a -c3 /dev/rdsk/c0t0d0s3 /dev/rdsk/c1t0d0s3

# init 6

настоятельно рекомендую перегрузить систему после этого шага


теперь создаем первые половинки зеркал (основные)

# metainit -f d11 1 1 /dev/rdsk/c0t0d0s0

# metainit -f d21 1 1 /dev/rdsk/c0t0d0s1

# metainit -f d31 1 1 /dev/rdsk/c0t0d0s7


создаем вторые половинки зеркал (будущие копии)

# metainit d12 1 1 /dev/rdsk/c1t0d0s0

# metainit d22 1 1 /dev/rdsk/c1t0d0s1

# metainit d32 1 1 /dev/rdsk/c1t0d0s7


Делаем резервную копию файла /etc/vfstab

# cp /etc/vfstab /etc/vfstab.original


Создаем первое (root) зеркало и указываем основную половинку

# metainit -f d10 -m d11

# metaroot d10

# lockfs -af

# reboot


Создаем зеркало swap и /export/home, и указываем их основные половинки

# metainit -f d20 -m d21

# metainit -f d30 -m d31


Теперь необходимо изменить файл /etc/vfstab (я привожу лишь часть файла)

так было:

#device

#to mount

device

to fsck

mount point

FS

type


fsck


pass


mount

at boot

Mount

options

/dev/dsk/c0t0d0s1

-

-

swap


-


no

-

/dev/dsk/c0t0d0s0

/dev/rdsk/c0t0d0s0

/

ufs


1


no

-

/dev/dsk/c0t1d0s7

/dev/rdsk/c0t1d0s7

/export

ufs


2


yes

-


так стало после редактирования:

#device

#to mount

device

to fsck

mount point

FS

type


fsck


pass


mount

at boot

Mount

options

/dev/md/dsk/d20

-

-

swap


-


no

-

/dev/md/dsk/d10

/dev/md/rdsk/d10

/

ufs


1


no

-

/dev/md/dsk/d30

/dev/md/rdsk/d30

/export

ufs


2


yes

-


Есть в Солярис dumpdevice, находится он на том же слайсе, что и swap

Проверяем:

dumpadm

Изменяем на новое имя:

dumpadm -d /dev/md/dsk/d20


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

init 6 (перезгрузка)


Прикрепляем (приаттачиваем) к зеркалам их вторые половинки:

# metattach d10 d12

# metattach d20 d22

# metattach d30 d32


теперь надо ждать окончания синхронизации зеркальных подсистем

для просмотра процесса нужно воспользоваться следующей командой:


# metastat | grep sync


В конце перезагрузить систему