goletsaЦитата: Какой нафиг ZFS при аппаратном рейде.
И чем вам помешал АППАРАТНЫЙ RAID?
Я далёк от мысли что вы не в курсе, но напомню.
Аппаратный рэйд создаёт ПРОСТРАНСТВО. А чем и как вы это пространство размечаете/форматируете, это его не касается. Он даже не знает об этом. Незачем.
Таким образом мы получаем "один большой диск" размером 6 терабайт. и пусть он будет весь под ZFS.
P.S.
В чём кстати и разница между аппаратным и программным, а так же программно-аппратным (которые простенькие "виндовые" RAID интегрированные на бытовые платы или отдельно продающиеся "за пятачок пучок")
Вот это барахло сидит на драйверах и там уже могут возникнуть проблемы.
Добавлено: Цитата: Просто ZFS должен работать с сырыми дисками а не с массивами дисков.
Да похер ей. Она с устройством/ами работает. А один это физический диск или RAID она и не узнает, в случае аппаратного RAID.
Кстати даже теркамовские платы по 500р. и те уже создают массив который FreeBSD (а значит в данном случае и ZFS) видит как единое устройство.
Добавлено: Гм. И ешё.
Вот это вы походу упустили/не в курсе.
RAID-Z любой конфигурации может создаваться не только на базе физических устройств, но и на базе виртуальных.
Жалею что так и не дописал статью по сборке рейда(единого, отказоустойчивого пространства, занимающего весь объём дисков) под сабжем на ZFS из дисков разного размера.
Суть в том что собирать RAID на ZFS можно на слайсах.
...
а вы походу не в курсе.
Во. Нашёл на диске рабочий файл с недописанной статьёй.
Идея вобщем понятна.
[more=Читать дальше..]Итак приступим к созданию массива.
Давайте рассмотрим наиболее сложный вариант, когда имеющиеся у нас диски имеют различный объём. К примеру в наличии один 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фри диски перепишутся на текущие реальные....
[/more]