LINUX.ORG.RU
ФорумAdmin

zol, где мои dev..?

 


2

6

Я уже обращал внимание, на одну мааааленькую детальку...

А теперь вот решил вникнуть. И вот что обнаружил: zfs-0.6.3 + ubuntu 14.04. Но такие вопросы есть и от пользователей других дистрибутивов, пруф: https://github.com/zfsonlinux/zfs/issues/599

Смотрите:


root@kvm1:~# ls /dev/z
zero  zfs   


root@kvm1:~# zfs create zroot/kvm1/foo
root@kvm1:~# ls /dev/z
zero  zfs


root@kvm1:~# zfs create -V 1g zroot/kvm1/bar
root@kvm1:~# ls /dev/z
zd0   zero  zfs   zvol/ 
root@kvm1:~# ls /dev/zvol/zroot/kvm1/bar

То есть, выходит так, что пока мест, не будет указан ключ -V, в каталоге, dev не будет создано ничего.

Вопросы, ОЧЕНЬ тупые, я прошу прощения, у всех тех, кого мои посты расстраивают, много тонкостей... Надо во всё вникнуть.

У меня нету необходимости в создании тома, с ограничением размера, а следовательно, видимо, я не смогу его экспортировать, скажем по iscsi, и по сему у меня нету НИЧЕГО в /dev? Просто мне хочется понять, почему у меня нету ничего в /dev.

Второй вопрос таков: куда, собственно деваются снепшоты? :) Я правильно понимаю, что они начинают жрать место в томе? И если у меня том имеет ограниченный размер, за размером тома надо очень внимательно следить?

root@kvmbackup:~# zfs list -o space
NAME                         AVAIL   USED  USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
zroot                        3,90T  1,46T      200K    160K              0      1,46T
zroot/kvmbackup/prd2         3,90T   275G     10,3G    265G              0          0
....

Вопрос 3 - zfs clone правда, столь крутая штука, что позволяет мне создать полный клон любого тома за милисекунды, и этот клон будет не зависим от своего источника? И потом я могу как удалять клон, не беспокоясь за исходную файловую систему, так и могу изменять исходную файловую систему или её снепшоты (в том числе те, от которых я создавал клон) - делать recive скажем на неё? Какие-то ограничения же вроде есть, я вроде как не могу делать send/recive на клоне или что-то подобное...

Вопрос 4: каким образом zfs разберётся, что диск в mirror массиве вышел из строя (если там полезут битые сектора в большом кол-ве)? За это переживать особо не стоит? Или всё же нужно делать scrub периодически?

Ну пока вроде всё... Готовлюсь я к продуктивной эксплуатации сего добра... Впилил малость bash костылей для синхронизации нужных libvirt, впилил весь необходимый мне функционал через ansible (очень доволен им!).

Попробовал SSD накопители для моих СУБД, остался ОЧЕНЬ доволен (на операциях полного перестроения БД - ускорение с двух суток, до 8ми часов), скоро буду заказывать SSD накопители для отдельных инстансов, благо база не большая.

И последний вопрос, при условии того, что у меня в /dev/zfs ничего нету (т.к. тома без размерные), сколько я могу создать снепшотов? Каков best practical? У меня примерно 40 вирт. машин (с них половину для dev), от каждой я бы по десятку снепшотов бы держал... - Итого: 400. Это много? Учитывая вот это: http://habrahabr.ru/post/153461/

★★★★★

Последнее исправление: DALDON (всего исправлений: 3)

То есть, выходит так, что пока мест, не будет указан ключ -V, в каталоге, dev не будет создано ничего.

-V создает том, который можно использовать как блочное устройство в том числе и для экспорта по iSCSI/FC. Нет тома - нет устройства...ИМХО все логично....

Без ключа -V создается датасет, который можно монтировать локально или экспортировать (смонтированное локально) по NFS/CIFS

Или всё же нужно делать scrub периодически?

я делаю 1 раз в неделю...пишут что нужно хотя-бы раз в месяц, а для SATA дисков раз в неделю...

И последний вопрос, при условии того, что у меня в /dev/zfs ничего нету (т.к. тома без размерные), сколько я могу создать снепшотов? Каков best practical? У меня примерно 40 вирт. машин (с них половину для dev), от каждой я бы по десятку снепшотов бы держал... - Итого: 400. Это много? Учитывая вот это: http://habrahabr.ru/post/153461/

zfs set snapdev=hidden tank/volume решает проблему :) (кстати, snapdev=hidden у меня по дефаулту...т.е. чтоб увидеть нужно сделать snapdev=visible)

Люди пишут что пользуют снапшоты тысячами....а за местом следить нада...т.к. при удалении информации, «под снапшотом» место не освобождается а добавляется инфа об удалении «над снапшотом»

Sigizmund
()
Ответ на: комментарий от Sigizmund

Спасибо тебе огромное за столь подробный и вменяемый ответ.

я делаю 1 раз в неделю...пишут что нужно хотя-бы раз в месяц, а для SATA дисков раз в неделю...

И как? Что-то находишь не хорошего? Тут уже был мой тред, когда у меня данные на zfs и вовсе побились, но там была виновата ОЗУ. По сему, я интересуюсь этими вопросами.

DALDON ★★★★★
() автор топика

2 - снепшоты хранят изменения относительно своего состояния. Чем больше данные изменились, тем больше места занимает снепшот.

3 - правда. Клон зависит от снепшота, из которого его создали. zfs send умеет отправлять только снепшоты.

Про количество снепшотов - тебя ограничивает только объем свободного места. Если изменений мало, снепшотов можно хранить очень много. Ну и из одного снепшота можно делать несколько клонов при необходимости.

feofan ★★★★★
()
Ответ на: комментарий от DALDON

И как? Что-то находишь не хорошего?

еще ни разу ошибок не находило

Sigizmund
()
Ответ на: комментарий от Sigizmund

Поставил:

root@kvm1:~# zfs get snapdev zroot/kvm1/foo
NAME            PROPERTY  VALUE    SOURCE
zroot/kvm1/foo  snapdev   visible  local


root@kvm1:~# zfs snapshot zroot/kvm1/foo@2

root@kvm1:~# ls /dev/zvol/zroot/kvm1/

Даже перезагрузился... В той надежде, что быть может модуль zfs там прочухается... Нету ничего. Ну мне это в целом всё не надо, просто, ради интереса. Пробовал смонтировать снепшот - так же в dev ничего не появилось. Забавно.

DALDON ★★★★★
() автор топика
Ответ на: комментарий от feofan

2 - снепшоты хранят изменения относительно своего состояния. Чем больше данные изменились, тем больше места занимает снепшот.

Это я понимаю, конечно. Они так же потом хранят изменение относительно друг-друга.

3 - правда. Клон зависит от снепшота, из которого его создали. zfs send умеет отправлять только снепшоты.

Угу спасибо! Так сладко выглядит clone, но ввиду: cannot destroy 'zroot/kvm1/foo@foosnap': snapshot has dependent clones, конечно расстраивает.

Спасибо за дельные ответы, и годную ссылку!

DALDON ★★★★★
() автор топика
Последнее исправление: DALDON (всего исправлений: 1)
Ответ на: комментарий от DALDON
host:/ # zfs list -r -t all
NAME           USED  AVAIL  REFER  MOUNTPOINT
test          2,83G  1,08G   136K  /test
test/vol      2,82G  3,08G   844M  -
test/vol@BAK      0      -   844M  -

host:/ # ls -lhR /dev/zvol
/dev/zvol:
итого 0
drwxr-xr-x 2 root root 100 апр  8 10:36 test

/dev/zvol/test:
итого 0
lrwxrwxrwx 1 root root  9 апр  1 13:20 vol -> ../../zd0
lrwxrwxrwx 1 root root 11 апр  1 13:20 vol-part1 -> ../../zd0p1
lrwxrwxrwx 1 root root 11 апр  1 13:20 vol-part2 -> ../../zd0p2

host:/ # zfs get snapdev test/vol
NAME      PROPERTY  VALUE    SOURCE
test/vol  snapdev   hidden   local

host:/ # zfs set snapdev=visible test/vol

host:/ # ls -lhR /dev/zvol
/dev/zvol:
итого 0
drwxr-xr-x 2 root root 160 апр  8 10:37 test

/dev/zvol/test:
итого 0
lrwxrwxrwx 1 root root  9 апр  1 13:20 vol -> ../../zd0
lrwxrwxrwx 1 root root 10 апр  8 10:37 vol@BAK -> ../../zd16
lrwxrwxrwx 1 root root 12 апр  8 10:37 vol@BAK-part1 -> ../../zd16p1
lrwxrwxrwx 1 root root 12 апр  8 10:37 vol@BAK-part2 -> ../../zd16p2
lrwxrwxrwx 1 root root 11 апр  1 13:20 vol-part1 -> ../../zd0p1
lrwxrwxrwx 1 root root 11 апр  1 13:20 vol-part2 -> ../../zd0p2
Sigizmund
()
Ответ на: комментарий от Sigizmund

может udev не отрабатывает?

а если после

root@kvm1:~# zfs snapshot zroot/kvm1/foo@2

сделать

udevadm trigger
Sigizmund
()

сколько раз я тебе твердил у zfs есть две сущность 1. - это том zvol - блочное устройство по типу как у lvm и 2. - это ФС вложенная в ФС. В первой команде ты создаешь ФС нижнего уровня, ну типа как новая поддиректория в директории, Во второй ты создаешь блочное устройство.

axelroot
()
Ответ на: комментарий от feofan

Ну и резервное копирование никто не отменял. Мы используем https://github.com/theairkit/zbackup для многопоточного бэкапа zfs

А с какой версией zfs используете? В виду Use zbackup only for zfs versions, where next bugs are closed ... Вы используете, daily сборки какие-то zol?

DALDON ★★★★★
() автор топика

битые сектора в большом кол-ве

специально вставлял в массив порченные диски, данные остались все целы, замедлений в работе не ощутил.

axelroot
()
Ответ на: комментарий от axelroot

1. - это том zvol - блочное устройство по типу как у lvm и 2. - это ФС вложенная в ФС.

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

ИМХО «в первой» и «Во второй» местами попутаны...

Sigizmund
()
Ответ на: комментарий от axelroot

сколько раз я тебе твердил у zfs есть две сущность 1. - это том zvol - блочное устройство по типу как у lvm и 2. - это ФС вложенная в ФС. В первой команде ты создаешь ФС нижнего уровня, ну типа как новая поддиректория в директории, Во второй ты создаешь блочное устройство.

Запутался я нафиг уже с этими терминами и определениями. :( Блин.

zpool create zroot mirror /dev/disk/by-id/ata... /dev/disk/by-id/ata... создаём пул zfs.

zfs create zroot/mydata - создаём вложенную фс.

zfs create -V 5g zroot/myzvol - создаём новый zvol, пригодный для экспорта?

Кажется, теперь я во истину понял. :) Я просто не работал с iSCSI особо, и для меня ускользнула суть различия...

Спасибо огромное!

DALDON ★★★★★
() автор топика
Ответ на: комментарий от Sigizmund

1. - это том zvol - блочное устройство по типу как у lvm и 2. - это ФС вложенная в ФС.

крупно обозначил для ТС что есть две сущности 1 и 2 эта нумерация не связана с порядком команд ТС

axelroot
()
Ответ на: комментарий от Sigizmund

Так у всех, но есть расширение для лора, для firefox, мне надоело руками набирать, и поставил его себе, теперь у меня кнопочи

DALDON ★★★★★
() автор топика
Ответ на: комментарий от axelroot

Блин, спасибо огромное. Теперь я разобрался... В общем созданный zvol можно отдать виртуальной машине, заэкспортить по iSCSI, и т.д. Понял. И по этому, мы применяем ограничение на его размер. Спасибо! Теперь разница стала ясна. Спасибо, что не поленился, и таки втемяшил эту в общем то простую и очевидную вещь в меня.

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

создаём новый zvol, пригодный для экспорта?

и не только для экспорта, его можно использовать как локальный жесткий диск и отдавать его виртуалкам, а еще можно резервировать его размер в пуле, а можно не резервировать.

axelroot
()
Ответ на: комментарий от axelroot

специально вставлял в массив порченные диски, данные остались все целы, замедлений в работе не ощутил.

О как. Спасибо! Т.е. zfs видимо пометит диск как мёртвый, только в том случае, когда не сможет найти вообще целых блоков пригодных для записи.

Ты часом кстати не в курсе, на тему вот какую: zol в raid 1+0 zfs, возможно увеличение массива путём поочерёдной замены двух дисков на диски бОльшего объёма? У меня на тесте, даже raid 1, после замены не увеличился... Хотя autoexpand значение, было установлено в on.

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

Так сладко выглядит clone, но ввиду: cannot destroy 'zroot/kvm1/foo@foosnap': snapshot has dependent clones, конечно расстраивает.

Сделай клону promote и он перестанет зависеть от снапшота.

King_Carlo ★★★★★
()
Ответ на: комментарий от DALDON

raid 1, после замены не увеличился

что-то не припомню чтобы с этим были проблемы.

на всякий еще раз оставлю здесь ссыль где разжевывается многое относительно zfs - http://forum.ixbt.com/post.cgi?id=print:11:44215

про zfs там с пункта - 4.1.1

axelroot
()
Ответ на: комментарий от DALDON

Мы используем сборки на основе этого. Но ты можешь пропатчить стабильную версию при желании - мы так делали когда эти баги были пофикшены только в мастере и еще не доехали до сборок.

feofan ★★★★★
()
Ответ на: комментарий от DALDON

а еще поверх виртуального жесткого диска zvol можно натянуть формат qcow2, и получить две параллельных системы COW в одном пироге (без использования файлов-образов под виртуалки) - qcow2 верхом на zvol для kvm без кеша.

axelroot
()
Ответ на: комментарий от King_Carlo

Смотри, как бы ты решал такую задачу с zfs:

Узел Б имеет два снепшота от zfs, и эти снепшоты ротируются каждый день. Т.е. будут удаляться. В этих снепшотах лежит вирт. машина. Каким образом, я смогу быстро превратить один из снепшотов в полноценную, независимую файловую систему?

Для чего мне это надо? - У меня есть продуктивная аппликация, и разработчикам потребно иметь личную копию этой продуктивной аппликации для тестов на актуальных данных. - Каждый разработчик в общем случае хочет иметь свою копию. Всего три разработчика.

Мне хочется на backup сервере создавать им машинки, и чтобы у них были всегда актуальные копии продуктивных аппликаций.

P.S. на уровне аппликаций мне не хочется работать, хочу работать на уровне zfs. Так-как вникать во все тонкости реплицирования zimbra, alfresco и ещё не весть чего - нету ни желания, ни времени.

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

и эта на производительность zvol влияет размер блока задаваемый при его создании, с дефолтным блоком будет тупить.

axelroot
()
Ответ на: комментарий от axelroot

Угу, теперь я уже понимаю об чём речь идёт... Научил меня. :) Спасибо! Снова перечитал весь тот тред.

Но мне в целом не нужны zvol.

DALDON ★★★★★
() автор топика
Последнее исправление: DALDON (всего исправлений: 2)
Ответ на: комментарий от feofan

У нас, например, создаются lxc-контейнеры из клонов свежего снепшота.

Ну тут вопрос в том, что тогда необходимо будет сохранять снепшот на время всей жизни клона. Ну ладно, в целом задача решаема. Спасибо. Можно просто слать дважды инкременты просто на резервный узел. Там конечно тогда будет вопрос по месту, но зато будет всё аккуратно и полностью независимо.

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

Время от времени можно пересоздавать среды разработчиков. Не то чтобы очень удобно, но решаемо.

feofan ★★★★★
()
Ответ на: комментарий от DALDON

Ну тут вопрос в том, что тогда необходимо будет сохранять снепшот на время всей жизни клона.

Сделай клону promote и он перестанет зависеть от снапшота.
King_Carlo ★★ (08.04.2015 11:24:07)

...

EvgGad_303 ★★★★★
()
Ответ на: комментарий от EvgGad_303

Если сделать promote, от снепшота станет зависеть оригинальный zvol. Снепшот не удастся удалить в любом случае без удаления клона (либо оригинала после promote).

feofan ★★★★★
()
Последнее исправление: feofan (всего исправлений: 1)
Ответ на: комментарий от feofan

Если сделать promote, от снепшота станет зависеть оригинальный zvol. Снепшот не удастся удалить в любом случае без удаления клона (либо оригинала после promote).

чо?

root@srv-sol11-test:~# zfs create raw/fs
root@srv-sol11-test:~# zfs clone raw/fs@snap raw/clone
root@srv-sol11-test:~# zfs promote raw/clone
root@srv-sol11-test:~# zfs list -o name,origin
NAME                             ORIGIN
raw                              -
raw/clone                        -
raw/fs                           raw/clone@snap
rpool                            -
root@srv-sol11-test:~# zfs destroy raw/fs
root@srv-sol11-test:~# zfs list -o name,origin
NAME                             ORIGIN
raw                              -
raw/clone                        -
rpool                            -

EvgGad_303 ★★★★★
()
Последнее исправление: EvgGad_303 (всего исправлений: 1)
Ответ на: комментарий от DALDON

На самом деле ситуация улучшается по мере роста количества разработчиков. От одного снепшота может зависеть очень много клонов. При этом экономия места будет огромной.

feofan ★★★★★
()
Ответ на: комментарий от EvgGad_303

Из практики: есть фс и её клон. Данные относительно снепшота (с которого клонировали) менялись довольно сильно, но примерно синхронно в фс и в её клоне. Как результат: клон и оригинальная фс отличаются чуть-чуть, а снепшот бесполезно жрет огромное количество места (хранит данные, которые удалены на обоих фс). Развязать такую чудесную связку не удалось. Решили сендом снимка на другую машину и удалением клона и снимка.

feofan ★★★★★
()
Ответ на: комментарий от EvgGad_303

Тем, что за этими всеми снепшотами надо время от времени следить... В ручном/полуручном режиме. У меня на backup сервере настроена авторотация объёмом в два снепшота. Не хочется городить новых велосипедов.

DALDON ★★★★★
() автор топика
Последнее исправление: DALDON (всего исправлений: 1)
Ответ на: комментарий от feofan

zfs create zstorage/fs1
zfs snap zstorage/fs1@snap1
zfs clone zstorage/fs1@snap1 zstorage/fs2
zfs promote zstorage/fs2
zfs destroy zstorage/fs1
zfs destroy zstorage/fs2@snap1


Осталась ни от чего не зависящая fs2.

King_Carlo ★★★★★
()
Ответ на: комментарий от King_Carlo

И тогда нельзя будет сделать

zfs destroy zstorage/fs2@snap1

Суть в том, что после создания клона нельзя удалить снэпшот, оставив обе fs

feofan ★★★★★
()
Ответ на: комментарий от feofan

Все логично, у обоих fs1 и fs2 будет общий набор данных до границы снапшота (общий предок) и разные наборы данных после снапшота. Чтобы поиметь две независимых ФС нужно на диски физически записать еще одну копию ФС, а не просто сослаться на уже имеющуюся область данных.

axelroot
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.