Показаны сообщения с ярлыком ldom. Показать все сообщения
Показаны сообщения с ярлыком ldom. Показать все сообщения

четверг, 13 мая 2010 г.

Как увеличить место на диске ZFS(теория)

На одной из моих виртуалок(LDOM) под Solaris ВНЕЗАПНО кончилось место. Как обычно просят определенное колличество, а в итоге получается что не расчитали. Но диск то уже создан и просто так его не расширишь. Покопавшись в интернетах, нашел мануал как увеличить объем диска ZFS. Мануал на английском можно почитать тут. Я выкладываю выкладки на русском:

Итак,общая теория - диск можно расширить в принципе двумя методами:
1. Подключаем к к оригинальному диску второй диск большего размера в режиме зеркала, ждем когда зеркало засинкается, отключаем оригинальный диск, подключаем к виртуалке диск большего объема.
2. Подключаем диск такого же объема как оригинальный в зеркало, ждем когда диск засинкается, отключаем оригинальный, увеличиваем оригинальный диск, подключаем его к зеркалу, ждем когда засинкается, отключаем второй диск из зеркала - монтируем к виртуалке оригинальный диск большего объема.
В текущий момент пойдет разговор про второй метод.
Итак начнем:
1. Для проверки создадим 2 диска одинакового объема
# mkfile 1g file1
# mkfile 1g file2

2. Сделаем из них зеркало
# zpool create zphouston mirror /tmp/file1 /tmp/file2
# df -h /zphouston

Filesystem size used avail capacity Mounted on
zphouston 984M 24K 984M 1% /zphouston
мы получили обычное ZFS зеркало, размером всего в 984мб
3. Запишим на этот диск какойнить файл для проверки, что данные сохранились
допустим так:
# mkfile 20m /zphouston/20megfile
# sum /zphouston/20megfile |tee /zphouston/sum
0 40960 /zphouston/20megfile

Теперь о ужыс у нас допустим ВНЕЗАПНО кончилось место на зеркале и нам нада увеличить объем
4. отключаем один из дисков в зеркале, например диск 2 под названием file2
# zpool offline zphouston /tmp/file2
Bringing device /tmp/file2 offline
# zpool status zphouston
pool: zphouston
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'.
scrub: none requested
config:

NAME STATE READ WRITE CKSUM
zphouston DEGRADED 0 0 0
mirror DEGRADED 0 0 0
/tmp/file1 ONLINE 0 0 0
/tmp/file2 OFFLINE 0 0 0
Все диск отключен.
5. Для чистоты эксперемента - удалим диск file2, он нам не нужен по большей части уже
# rm file2
6. Теперь создаем диск большего размера, допусти в 2гига
# mkfile 2g file2
7. Прикручиваем диск к зеркальному пулу следующим образом
# zpool replace zphouston /tmp/file2 /tmp/file2
8. Посмотрим, что же у нас получилось в текущий момент:
# zpool status
pool: zphouston
state: DEGRADED
scrub: resilver completed with 0 errors on Mon Feb 9 14:01:22 2009
config:

NAME STATE READ WRITE CKSUM
zphouston DEGRADED 0 0 0
mirror DEGRADED 0 0 0
/tmp/file1 ONLINE 0 0 0
replacing DEGRADED 0 0 0
/tmp/file2/old UNAVAIL 0 0 0 cannot open
/tmp/file2 ONLINE 0 0 0

errors: No known data errors
о ужыс, зеркало поломано, старый диск не доступен, все сломалось
9. Ждем некоторое время(зависит от объема диска, данных и т.д.) и смотрим снова статус:
# zpool status zphouston
pool: zphouston
state: ONLINE
scrub: resilver completed with 0 errors on Mon Feb 9 14:01:22 2009
config:

NAME STATE READ WRITE CKSUM
zphouston ONLINE 0 0 0
mirror ONLINE 0 0 0
/tmp/file1 ONLINE 0 0 0
/tmp/file2 ONLINE 0 0 0

errors: No known data errors
опа, уже все онлайн и щастье есть!
10. Сколько же у нас сейчас получилось места? Давайте посмотрим:
# df -h /zphouston
Filesystem size used avail capacity Mounted on
zphouston 984M 20M 964M 3% /zphouston
мда, не сильно изменилось, но так и должно быть!
11. Отключаем старый диск размером в 1гиг
# zpool detach zphouston /tmp/file1
12. А теперь сколько места?
# df -h /zphouston
Filesystem size used avail capacity Mounted on
zphouston 2.0G 20M 1.9G 1% /zphouston
2! гига, тоесть это то, чего мы и добивались
13. А что же у нас со статусом зеркала:
# zpool status zphouston
pool: zphouston
state: ONLINE
scrub: resilver completed with 0 errors on Mon Feb 9 14:01:22 2009
config:

NAME STATE READ WRITE CKSUM
zphouston ONLINE 0 0 0
/tmp/file2 ONLINE 0 0 0

errors: No known data errors
все в порядке, 1 диск светится и работает в штатном режиме.
14. Далее нам необходимо востановить зеркало, ну или не востанавливать если это не надо.
пожалуй востановим на всякий случай
удаляем старый фаил file1 размером в 1 гигобайт
# rm file1
создаем такойже фаил, только размером в 2 гига(чтобы зеркало было синхронизированно по объему)
# mkfile 2g file1
присоединяем новый фаил к пулу ZFS
# zpool attach zphouston /tmp/file2 /tmp/file1
проверяем статус зеркала
# zpool status zphouston
pool: zphouston
state: ONLINE
scrub: resilver completed with 0 errors on Mon Feb 9 14:12:38 2009
config:

NAME STATE READ WRITE CKSUM
zphouston ONLINE 0 0 0
mirror ONLINE 0 0 0
/tmp/file2 ONLINE 0 0 0
/tmp/file1 ONLINE 0 0 0

errors: No known data errors
ну и наконец, смотрим сколько получилось места:
# df -h /zphouston
Filesystem size used avail capacity Mounted on
zphouston 2.0G 20M 1.9G 1% /zphouston
все в порядке, 2гигобайта, тем самым мы увеличили диск
а что же с нашим файлом, который мы создали, посмотрим:
# sum /zphouston/20megfile
0 40960 /zphouston/20megfile
все наместе, щастье мы обрели

ЗЫЖ все выше описанные манипуляции делаем на свой страх и риск, не забываем бакапить, никакой отвественности за потерю данных я не несу, ибо это только теория, хоть и мне придется скоро испытать ее на практике, по этому будет отдельный пост.

Читать далее

среда, 10 февраля 2010 г.

Solaris + LDOM + ZFS

Руки дошли наконец до SPARC, на который надо было засетапить виртуалку. Файловая система была выбрана ZFS, которая ставится на диск.

А теперь по пунктам, порядок установки:
1. Предварительные приготовления
Так как я ставил минимальную инсталяцию, такой вещи как LDOM в установленном солярисе не было, первым делом необходимо скачать LDoms Manager разархивирвать при помощи unzip и запустить install/install-ldm
далее перезагружаем солярку командой reboot
после загрузки проверяем стартанул ли ldom, командой ldm ls
должно появится что то типа:
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME
primary active -n-c-- SP 4 4G 0.0% 16m
командой svcadm enable vntsd делаем так, чтобы сервис стартовал при ребуте
svcadm restart vntsd - перезапустит серивс
по идее дефеольтные настройки все должны быть готовы

2. создаем ZFS диск для образа солярки
создаем пул
zpool create ldomdisk c1t1d0
создаем раздел в пуле
zfs create ldomdisk/ldom1
а теперь самое главное, создаем 60 гиговый раздел под виртуалку, на который будем ставить солярку
zfs create -V 60g ldomdisk/ldom1/disk.image

3. Создаем собственно саму виртуалку.
Создаем виртуалку
ldm add-domain ldom1
указываем сколько процов нам необходимо использовать в виртуалке
ldm add-vcpu 4 ldom1
указываем сколько памяти нам необходимо использовать в виртуалке
ldm add-memory 4G
подключаем сетевую плату из primary ldom
ldm add-vnet vnet1 primary-vsw0 ldom1
а теперь самое интересное, добавляем сам ZFS диск на который будет ставится виртуалка
ldm add-vdsdev /dev/zvol/dsk/ldomdisk/ldom1/disk.image vol1@primary-vds
подключаем этот диск к новосозданному ldom1
ldm add-vdisk vdisk0 vol1@primary-vds ldom1
выключаем автоматическую загрузку, так как грузится будем с установочного образа Solaris
ldm set-variable auto-boot\?=false
теперь необходимо прописать установочный образ Solaris в формате iso
ldm add-vdsdev /export/home/bear/sol-10-u7-ga-sparc-dvd.iso cdrom@primary-vds
и подключить к ldom1
ldm add-vdisk cdrom cdrom@primary-vds ldom1
ну вот и все, настройки дефолтные готовы
прибиндиваем ldom командой
ldm bind ldom1
и стартуем
ldm start ldom1
если набрать ldm ls , то можно увидеть что рядом с ldom1 будет написанно active
если так написанно то все отлично и работает

4. завершающая часть
теперь телнетимся по 5000 порту к виртуалке
telnet localhost 5000
нажимаем ентер и видим, пишется {0} ok это значит, что виртуалка ожидает команд
даем команду на загрузку с образа
boot cdrom
и инсталим Solaris как обычно

из полезных команд в виртуалке можно выделить следующие
show-disks - поглядеть все дисковые устройства подключенные к виртуалке
devalias - поглядеть присвоеные алиасы для устройств
Дока по ZFS
вот в приницпе и все, ничего сложно в общем нет

Читать далее