Документация по ОС FreeBSD Четверг, 06.02.2025, 23:57
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Установка и настройка

Использование клонов в ZFS [2009]

Имеется FreeBSD 8.0-BETA1 с корнем на ZFS. Есть желание обновить систему до FreeBSD 9.0-CURRENT.

# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
zroot 119G 29,1G 89,9G 24% ONLINE -
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
zroot 29,1G 85,9G 567M legacy
zroot/distfiles 1,48G 85,9G 1,48G /usr/ports/distfiles
zroot/home 17,2G 85,9G 3,04G /usr/home
zroot/home/butcher 5,72G 85,9G 5,42G /usr/home/butcher
zroot/local 2,87G 85,9G 731M /usr/local
zroot/obj 2,39G 85,9G 1,20G /usr/obj
zroot/ports 220M 85,9G 174M /usr/ports
zroot/src 458M 85,9G 407M /usr/src
zroot/tmp 2,85G 85,9G 2,85G /tmp
zroot/usr 637M 85,9G 478M /usr
zroot/var 227M 85,9G 284K /var
zroot/var/crash 18,5K 85,9G 18,5K /var/crash
zroot/var/db 222M 85,9G 135M /var/db
zroot/var/log 1,08M 85,9G 400K /var/log
zroot/var/tmp 3,01M 85,9G 2,80M /var/tmp

На всякий случай создан снимок состояния файловой системы на момент до обновления.

# zfs snapshot -r zroot@20090824

После этого выполняем обновление системы и приложений, установленных из портов. Теперь предположим, что обнаружена проблема и нужно проверить её наличие в 8.0-BETA1, либо откатить систему на это состояние (мне нужно было проверить). Для этого я воспользовался клонами в ZFS.

Клоны - это доступные для записи копии снимков. Они так же как и снимки изначально почти не занимают места на диске, их размер увеличивается с изменением данных. С клонами можно работать точно так же, как и с обычными файловыми системами, с них даже можно делать снимки (snapshot). И что наиболее интересно мне - с них можно загружаться и выполнять замену файловых систем клонами (promote).

Так как я обновил систему, то, естественно, это привело к изменению данных в корневом разделе, в /usr и /usr/local, а так же в /var/db, где хранятся данные об установленных приложениях из портов. Поэтому мне нужно создать клоны файловых систем zroot, zroot/local, zroot/usr, zroot/var/db; загрузится с использованием этих клонов, проверить наличие обнаруженной проблемы в старой версии системы, и при желании сделать откат (т.е. заменить файловые системы их клонами). Итак, создам клоны:

# zfs clone -o mountpoint=/mnt zroot@20090824 zroot/root20090824
# zfs clone -o mountpoint=/mnt/usr zroot/usr@20090824 zroot/usr20090824
# zfs clone -o mountpoint=/mnt/usr/local zroot/local@20090824 zroot/local20090824
# zfs clone -o mountpoint=/mnt/var/db zroot/var/db@20090824 zroot/var/db20090824

Теперь нужно: поправить /boot/loader.conf на новом корне, чтобы загрузчик знал какую файловую систему нужно монтировать; указать в свойствах пула новую загрузочную FS; сменить точки монтирования у новых и старых файловых систем. Итак:

# echo 'vfs.root.mountfrom="zfs:zroot/root20090824"' >> /mnt/boot/loader.conf
# zfs umount zroot/var/db20090824
# zfs umount zroot/local20090824
# zfs umount zroot/usr20090824
# zfs umount zroot/root20090824

Для новой корневой файловой системы нужно установить точку монтирования legacy, чтобы она не монтировалась автоматически, а только при запросе ядра:

# zfs set mountpoint=legacy zroot/root20090824

Для остальных файловых систем как обычно:

# zfs set mountpoint=/usr zroot/usr20090824
# zfs set mountpoint=/usr/local zroot/local20090824
# zfs set mountpoint=/var/db zroot/var/db20090824

Для изменения точек монтирования текущих файловых систем лучше перейти в однопользовательский режим:

# init 1
# zfs umount -fa
# zfs set mountpoint=/mnt/usr zroot/usr
# zfs set mountpoint=/mnt/usr/local zroot/local
# zfs set mountpoint=/mnt/var/db zroot/var/db

Изменим загрузочную файловую систему пула и можно перезагружаться:

# zpool set bootfs=zroot/root20090824 zroot
# reboot

После перезагрузки у меня имеется:

# uname -srm
FreeBSD 8.0-BETA1 i386
# zfs mount
zroot/root20090824 /
zroot/usr /mnt/usr
zroot/local /mnt/usr/local
zroot/var/db /mnt/var/db
zroot/tmp /tmp
zroot/usr20090824 /usr
zroot/home /usr/home
zroot/home/butcher /usr/home/butcher
zroot/local20090824 /usr/local
zroot/obj /usr/obj
zroot/ports /usr/ports
zroot/distfiles /usr/ports/distfiles
zroot/src /usr/src
zroot/var /var
zroot/var/crash /var/crash
zroot/var/db20090824 /var/db
zroot/var/log /var/log
zroot/var/tmp /var/tmp

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

# zfs promote zroot/root20090824
# zfs promote zroot/usr20090824
# zfs promote zroot/local20090824
# zfs promote zroot/var/db20090824

А старые удалю при помощи zfs destroy, после чего я смогу переименовать длинные имена в старые при помощи команды zfs rename.

Я же верну всё обратно. Для этого нужно перейти в однопользовательский режим, отмонтировать все файловые системы, сменить точки монтирования у старых файловых систем с /mnt обратно в корень, а клоны удалить при помощи команды zfs destroy. Ну и в конце не забываем сменить свойство bootfs у пула.



Источник: http://wiki.opennet.ru/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BB%D0%BE
Категория: Установка и настройка | Добавил: oleg (30.08.2009)
Просмотров: 887 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2025