# Увеличение дискового пространства в Solaris "на лету"

Нурлан Мухамедьевич Тлеушев

Увеличение дискового пространства в ОС Solaris 'на лету'


Бывают ситуации, когда надо выполнить увеличение дискового пространства 'на лету' - без останова сервера, приложений и потери данных.


Совсем недавно ко мне обратился бывший коллега и хороший знакомый Олег Зражаев с просьбой помочь как раз в таком деле.


В ОС Solaris это можно сделать стандартными средствами или используя ПО Veritas SF.


Рассмотрим первый случай (стандартными средствами):

Дано:

1. Имеется пароль пользователя root

2. Сервер Sun UltraEnterprise 450, в котором установлено ПО Solstice DiskSuite или Solaris Volume Manager, имеется 4 hdd:


Загрузочный диск и его зеркало (/, swap, /export/home) RAID-1 с именем d10, состоящий из d11 (c0t0d0, 36 Гб) и d12 (c0t1d0, 36 Гб)


/oradata (оба диска разбиты на 2 слайса: слайс3 - 64Мб, слайс7 - 'остатки') RAID-0 с именем d20, состоящий из c0t2d0 (36 Гб) и c0t3d0 (36 Гб).


3. Все диски отформатированы под UFS

4. Реплики metadb размещены на 3х слайсах всех дисков по 3 на каждом

5. Новый диск, емкостью 36 Гб для увеличения дискового пространства точки монтирования /oradata


Выполнить: увеличение дискового пространства /oradata 'на лету' (без останова сервера и потери данных).


План решения:

Для решения задачи этой на любом сервере, в котором забиты все стандартные дисковые слоты нам необходима дополнительная внутренняя дисковая корзинка (в стандартной поставке есть только 4 слота для дисков), либо какой-нибудь простой внешний дисковый массив (unipack, multipack, jbod) или уж просто дисковый массив.


Решение:

Допустим, мы вышли из ситуации путем добавления нового диска во внешний дисковый массив.

Теперь необходимо выполнить команду (команды) в зависимости от версии Solaris:

Solaris 2.5 - 2.7 (2.5 - 5.7)

drvconfig

disks

devlinks


Solaris 8-10

devfsadm -v


Размечаем новый диск (например, c2t0d0) также как 2 диска из d20 (c0t2d0, c0t3d0)

- при помощи утилиты format (если хочется 'вручную' или диск другой емкости - не как c0t2d0 и c0t3d0)

- либо так (если все 3 диска абсолютно идентичны):

prtvtoc /dev/rdsk/c0t2d0s2 | fmthard -s - /dev/rdsk/c2t0d0s2


metadb -ac3 c2t0d0s3

metattach d20 c2t0d0s7

growfs -M /oradata /dev/md/rdsk/d20


Все.