gryu
дикий гусь | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Итак приступим к созданию массива. Давайте рассмотрим наиболее сложный вариант, когда имеющиеся у нас диски имеют различный объём. К примеру в наличии один 80ГБ, один 120ГБ и два 160ГБ. Задача собрать отказоустойчивый массив с максимальным использованием суммарного объёма дисков. Оптимальная формула использования общего пространства для отказоустойчивого массива рассчитывается по формуле «общий объём дисков, разделённый на количество дисков и умноженный на количество дисков минус один» <общий объём> / <количество дисков> х <(<количество дисков> -1)> = <объём защищённого пространства> В нашем случае это (80 + 120 + 160 + 160) / 4 х (4 -1) = 360 GB. (3/4 от 520GB общего пространства) Если мы создадим программный RAID-5, то получим объём полезного пространства равный (80+80+80+80)-80=240ГБ, т.к. RAID-5 при сборке будет ориентироваться на самый малый по объёму диск и отбросит «лишне пространство» на дисках большего объёма. Т.е. он будет видеть 4 х 80-ки из которых одна уйдёт под обеспечение отказоустойчивости. Это составит используемое пространство на 120 гиг меньше оптимального. Что нас естественно не устраивает. Однако ZFS позволяет собирать массивы, в том числе единое поле из нескольких массивов, не только на основе физических устройств разного объёма, как RAID JBOD, но в отличии от JBOD ZFS может работать и с виртуальными устройствами. Чем мы и воспользуемся. Итак. У нас в наличии 4 диска разного обьёма 80, 120, 160, 160 ГБ. Мы хотим использовать максимально доступное и при этом отказоустойчивое пространство для хранения данных. Для этого мы: 1. Представим наши диски не как 4 физических диска разного объёма, а как 13 виртуальных устройств по 40 GB каждое. 80 = 2 x 40 120 = 3 x 40 160 = 4 x 40 160 = 4 x 40 1 4 1 2 3 1 2 3 4 1 2 3 4 2. Cоберём 4 отказоустойчивых RAID-z где: Первый RAID (1) – 4 виртуальных устройства. Второй RAID (2) – 3 виртуальных устройства. Третий RAID (3) – 3 виртуальных устройства. Четвёртый RAID (4) – 3 виртуальных устройства. 3. После чего объединим их в единый массив равный 360GB. Таким образом, мы получим оптимальное использование суммарного пространства дисков. P.S. При этом обратите внимание, что при выходе из строя любого одного физического диска, базовые RAIDы перейдут в дегрейд, но при этом будут работать и информация не потеряется. Так же в той же недописанной статье есть метода замены диска в случае его выхода из строя/ Вот. Тут правда метериал для части по ЗАМЕНЕ аппаратного диска на виртуальные... но вобщем понятно Переводим в офлайн меняемый диск # zpool offline raid-z ada4 # zpool status pool: raid-z state: DEGRADED status: One or more devices has been taken offline by the administrator. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Online the device using 'zpool online' or replace the device with 'zpool replace'. scan: resilvered 103G in 3h10m with 0 errors on Wed Mar 13 04:33:55 2013 config: NAME STATE READ WRITE CKSUM raid-z DEGRADED 0 0 0 raidz1-0 DEGRADED 0 0 0 ada0s1 ONLINE 0 0 0 ada1s1 ONLINE 0 0 0 ada2 ONLINE 0 0 0 ada3 ONLINE 0 0 0 15202818205423533417 OFFLINE 0 0 0 was /dev/ada4 ada5 ONLINE 0 0 0 ada6 ONLINE 0 0 0 errors: No known data errors Затираем все данные о прошлом разбиении на диске # dd if=/dev/zero of=/dev/ada4 bs=512 count=3 3+0 records in 3+0 records out 1536 bytes transferred in 0.000330 secs (4654950 bytes/sec) Проверяем ------------- Переразбиваем диск заново создавая 2 слайса. В принципе сначала можно восстановить разбиение по умолчанию (fdisk -I ada4), а потом уже заниматся переразбиением,но это не обязательно. Можно сразу начать разбиение как нам нужно. fdisk отругается, но всё сам исправит. # fdisk -i ada4 ******* Working on device /dev/ada4 ******* parameters extracted from in-core disklabel are: cylinders=310101 heads=16 sectors/track=63 (1008 blks/cyl) Figures below won't work with BIOS for partitions not in cyl 1 parameters to be used for BIOS calculations are: cylinders=310101 heads=16 sectors/track=63 (1008 blks/cyl) Do you want to change our idea of what BIOS thinks ? [n] fdisk: invalid fdisk partition table found Media sector size is 512 Warning: BIOS sector numbering starts with sector 1 Information from DOS bootblock is: The data for partition 1 is: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD) start 63, size 312581745 (152627 Meg), flag 80 (active) beg: cyl 0/ head 1/ sector 1; end: cyl 852/ head 15/ sector 63 Do you want to change it? [n] y The static data for the slice 1 has been reinitialized to: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD) start 63, size 312581745 (152627 Meg), flag 80 (active) beg: cyl 0/ head 1/ sector 1; end: cyl 852/ head 15/ sector 63 Supply a decimal value for "sysid (165=FreeBSD)" [165] Supply a decimal value for "start" [63] Supply a decimal value for "size" [312581745] 234441585 Explicitly specify beg/end address ? [n] sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD) start 63, size 234441585 (114473 Meg), flag 80 (active) beg: cyl 0/ head 1/ sector 1; end: cyl 132/ head 15/ sector 63 Are we happy with this entry? [n] y The data for partition 2 is: <UNUSED> Do you want to change it? [n] y Supply a decimal value for "sysid (165=FreeBSD)" [0] 165 Supply a decimal value for "start" [0] 234441648 Supply a decimal value for "size" [0] 78140160 Explicitly specify beg/end address ? [n] sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD) start 234441648, size 78140160 (38154 Meg), flag 0 beg: cyl 133/ head 0/ sector 1; end: cyl 852/ head 15/ sector 63 Are we happy with this entry? [n] y The data for partition 3 is: <UNUSED> Do you want to change it? [n] The data for partition 4 is: <UNUSED> Do you want to change it? [n] Partition 1 is marked active Do you want to change the active partition? [n] We haven't changed the partition table yet. This is your last chance. parameters extracted from in-core disklabel are: cylinders=310101 heads=16 sectors/track=63 (1008 blks/cyl) Figures below won't work with BIOS for partitions not in cyl 1 parameters to be used for BIOS calculations are: cylinders=310101 heads=16 sectors/track=63 (1008 blks/cyl) Information from DOS bootblock is: 1: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD) start 63, size 234441585 (114473 Meg), flag 80 (active) beg: cyl 0/ head 1/ sector 1; end: cyl 132/ head 15/ sector 63 2: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD) start 234441648, size 78140160 (38154 Meg), flag 0 beg: cyl 133/ head 0/ sector 1; end: cyl 852/ head 15/ sector 63 3: <UNUSED> 4: <UNUSED> Should we write new partition table? [n] y fdisk: Class not found Проверяем разбиение # fdisk -s ada4 /dev/ada4: 310101 cyl 16 hd 63 sec Part Start Size Type Flags 1: 63 234441585 0xa5 0x80 2: 234441648 78140160 0xa5 0x00 Проверяем наличие новых устройств # ls /dev ... ada4s1 ada4s2 .. Либо # ls /dev | grep ada4 ada4 ada4s1 ada4s2 Заменяем выведенный в офлайн диск ada4 на первый слайс переразбитого диска ada4s1. # zpool replace raid-z ada4 ada4s1 # zpool status pool: raid-z state: DEGRADED status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Wed Mar 13 11:38:28 2013 119M scanned out of 725G at 9.89M/s, 20h51m to go 16.2M resilvered, 0.02% done config: NAME STATE READ WRITE CKSUM raid-z DEGRADED 0 0 0 raidz1-0 DEGRADED 0 0 0 ada0s1 ONLINE 0 0 0 ada1s1 ONLINE 0 0 0 ada2 ONLINE 0 0 0 ada3 ONLINE 0 0 0 replacing-4 OFFLINE 0 0 0 15202818205423533417 OFFLINE 0 0 0 was /dev/ada4 ada4s1 ONLINE 0 0 0 (resilvering) ada5 ONLINE 0 0 0 ada6 ONLINE 0 0 0 errors: No known data errors Удаляем диск ada4 из массива по устройству или по его ID # zpool detach raid-z ada4 или # zpool detach raid-z 15202818205423533417 # zpool status pool: raid-z state: ONLINE status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Wed Mar 13 11:38:28 2013 6.74G scanned out of 725G at 65.7M/s, 3h6m to go 983M resilvered, 0.93% done config: NAME STATE READ WRITE CKSUM raid-z ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 ada0s1 ONLINE 0 0 0 ada1s1 ONLINE 0 0 0 ada2 ONLINE 0 0 0 ada3 ONLINE 0 0 0 ada4s1 ONLINE 0 0 0 (resilvering) ada5 ONLINE 0 0 0 ada6 ONLINE 0 0 0 errors: No known data errors Ждём пока массив восстановится. # zpool status pool: raid-z state: ONLINE scan: resilvered 103G in 3h8m with 0 errors on Wed Mar 13 14:46:34 2013 config: NAME STATE READ WRITE CKSUM raid-z ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 ada0s1 ONLINE 0 0 0 ada1s1 ONLINE 0 0 0 ada2 ONLINE 0 0 0 ada3 ONLINE 0 0 0 ada4s1 ONLINE 0 0 0 ada5s1 ONLINE 0 0 0 ada6 ONLINE 0 0 0 errors: No known data errors Теперь добавляем в массив RAID-Z вторые слайсы на дисках. ВНИМАНИЕ! Данная операция не обратима! Вы не сможете удалить диски из пула RAID-Z. Это ограничение ZFS, а не прихоть. # zpool add raid-z raidz ada0s2 ada1s2 ada4s2 ada5s2 Смотрим что получилось # zpool status pool: raid-z state: ONLINE status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Wed Mar 13 14:52:14 2013 334G scanned out of 725G at 61.7M/s, 1h48m to go 47.5G resilvered, 46.06% done config: NAME STATE READ WRITE CKSUM raid-z ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 ada0s1 ONLINE 0 0 0 ada1s1 ONLINE 0 0 0 ada2 ONLINE 0 0 0 ada3 ONLINE 0 0 0 ada4s1 ONLINE 0 0 0 ada5s1 ONLINE 0 0 0 (resilvering) ada6 ONLINE 0 0 0 raidz1-1 ONLINE 0 0 0 ada0s2 ONLINE 0 0 0 ada1s2 ONLINE 0 0 0 ada4s2 ONLINE 0 0 0 ada5s2 ONLINE 0 0 0 errors: No known data errors Смотрим текущий обьём пула # zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT raid-z 929G 725G 204G 78% 1.00x ONLINE - Как видите мы расширили пространство нашего пула хранения данных на 114462 MB. Что может пригодится. Теперь осталось навести порядок в Web интерфейсе, где в результате наших действий мы имеем не соответствие действительности с отображаемыми характеристиками. Оно и так работать будет, но давайте всё же синхронизируем. Теперь синронизаруем текущее состояние дисков в RAID(то что прописано в конфигураторе Web интерфейса) с реальным. Диски|ZFS (Zettabyte File System)|Конфигурация|Синхронизация Для синхронизации поставьте галочку "Перезаписывать конфигурацию дисков [] Перезаписывать настройки уже сконфигурированных дисков (затрагивает только значение файловой системы)". если будешь делать синхронизацию (с текщим состоянием дисков), то там галочка есть - перетереть текущий конфиг дисков (или что то в этом роде) - если не ошибаюсь - пометив ее - в конфиге нас4фри диски перепишутся на текущие реальные.... | Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 19:48 29-08-2013 | Исправлено: gryu, 21:11 29-08-2013 |
|