Категорії
FreeBSD Solaris

Расширение корневого пула zfs

В статье будем рассмотрен механизм замены дисков корневого пула на диски большей ёмкости. Данный метод подходит как для Solaris-family так и для FreeBSD.

1) Смотрим размер пула до изменения:

# zpool list
NAME    SIZE  ALLOC   FREE  CAP  DEDUP  HEALTH  ALTROOT
rpool  15.3G  12.5G   2.8G  78%  1.00x  ONLINE  -
# zpool status
  pool: rpool
 state: ONLINE
  scan: resilvered 12.5G in 0h28m with 0 errors on Thu Nov 15 21:06:22 2012
config:

        NAME        STATE     READ WRITE CKSUM
        rpool       ONLINE       0     0     0
          c3t0d0s0  ONLINE       0     0     0

errors: No known data errors

2) Форматируем новый диск

Новый диск у нас опознался как c3t2d0. Форматируем его Solaris2 100% (о том, как это делается, можно посмотреть здесь) Смотрим разметку нашего диска:

#prtvtoc /dev/c3t2d0s2
* /dev/dsk/c3t2d0s2 partition map
*
* Dimensions:
*     512 bytes/sector
*      63 sectors/track
*     255 tracks/cylinder
*   16065 sectors/cylinder
*    5315 cylinders
*    5313 accessible cylinders
*
* Flags:
*   1: unmountable
*  10: read-only
*
*                          First     Sector    Last
* Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
       2      5    01          0  85353345  85353344
       8      1    01          0     16065     16064

всё нормально, только нет места под загрузочный раздел. Если его сейчас добавить в пул и установить на него загрузчик – то загрузчик просто затрёт начальние сектора и пул окажется неконсистентным. Поэтому, нужно подготовить диск, а именно правильно указать загрузочную область. Для этого запишем вывод prtvtoc /dev/c3t2d0s2 в файл, отредактируем файл и запишем новую таблицу на диск.

#prtvtoc /dev/c3t2d0s2 > /tmp/c3t2d0s2.dsk

Добавим такую строку в файл /tmp/c3t2d0s2.dsk

       0      2    00      16065  X  Y

в итоге получаем такое:

...
* Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
       0      2    00      16065         X         Y
       2      5    01          0  85353345  85353344
       8      1    01          0     16065     16064
...

Осталось вычислить значения X и Y. Вычисляем так:

X=85353345+32131 (то есть берём значение Count из строки с Partition=2)
Y=X-16064

После этого изменённый файл будет выглядеть так:

...
* Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
       0      2    00      16065  85305150  85321214
       2      5    01          0  85353345  85353344
       8      1    01          0     16065     16064
...

осталось записать новую таблицу на диск:

#cat /tmp/c3t2d0s2.dsk | fmthard -s - /dev/rdsk/c3t2d0s2

3) Работа с пулом

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

#zpool attach -f rpool c3t0d0s0 c3t2d0s0

и запишем загрузчик:

#installgrub -m /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c3t2d0s0

Перед тем, как переходить к следующему пункту, загрузитесь с нового диска и если всё удачно, то переходите к следующему пункту

После окончания сихронизации пула, можно пойти несколькими путями:

– просто удалить старый диск из пула (zpool detach)
– разделить пул (zpool splitt)

Обязательно на этом этапе нужно выставить значение для пула autoexpand=on (по дефолту оно off):

#zpool set autoexpand=on

Если zpool list не показал сразу новый размер, можно перегрузится. Если после перезагрузки тоже размер не изменился, тогда нужно загрузится с LiveCD и сделать import/export пула. После этого размер пула должен увеличится. Старый диск можно вынуть.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff