Pull to refresh

VxVM 5.0MP3 — Как увеличить размер rootdisk

Reading time10 min
Views1.2K
В этой статье хочу рассказать о не очень любимым всеми, но ранее очень популярном Веритасе. Ни для кого не секрет что обращение с этим менеджером требует опыта и внимательности, тем более в таком случае как увеличение рутового диска на активной системе. Конечно в таком случае всегда ощущается волнение, но оно быстро проходит если немного глубже разобраться в проблеме, что мы и попытаемся сделать.
Чтобы проиллюстрировать процесс, который происходит при использовании команды vxrootadm для увеличения размера рутовой файловой системы, мы рассмотрим минимальную конфигурацию — только один корневой диск инкапсулированный под контроль VxVM, на одном из моих серверов в тестовой лаборатории. В данной статье будут достаточно длинные выводы команд, так что заранее извиняюсь за длинное полотно.
Продемонстрируем начальную информацию. Из следующего вывода мы видим только один задействованный диск «ckdg»:
# vxdisk list
   DEVICE       TYPE            DISK       GROUP        STATUS
   c1t0d0s2     auto:sliced   rootdisk     ckdg         online
   c1t1d0s2     auto:none       -            -          online invalid
   c1t2d0s2     auto:none       -            -          online invalid
   c1t3d0s2     auto:none       -            -          online invalid
В следующем выводе я покажу текущие таблицу партиций и ее размеры. «rootvol» и «usr» примерно по 4Гб, а «swapvol» и «var» примерно по 2Гб.
# vxprint -ht
   Disk group: ckdg
   dg ckdg         default      default  9000     1231534571.8.v4u-v240d-fll03
   dm rootdisk     c1t0d0s2     auto     66446    71060733 -
   v  rootvol      -            ENABLED  ACTIVE   8389656  ROUND     -        root
   pl rootvol-01   rootvol      ENABLED  ACTIVE   8389656  CONCAT    -        RW
   sd rootdisk-02  rootvol-01   rootdisk 4194827  8389656  0         c1t0d0   ENA
   v  swapvol      -            ENABLED  ACTIVE   4194828  ROUND     -        swap
   pl swapvol-01   swapvol      ENABLED  ACTIVE   4194828  CONCAT    -        RW
   sd rootdisk-B0  swapvol-01   rootdisk 71060732 1        0         c1t0d0   ENA
   sd rootdisk-01  swapvol-01   rootdisk 0        4194827  1         c1t0d0   ENA
   v  usr          -            ENABLED  ACTIVE   8193204  ROUND     -        fsgen
   pl usr-01       usr          ENABLED  ACTIVE   8193204  CONCAT    -        RW
   sd rootdisk-03  usr-01       rootdisk 16779311 8193204  0         c1t0d0   ENA
   v  var          -            ENABLED  ACTIVE   4194828  ROUND     -        fsgen
   pl var-01       var          ENABLED  ACTIVE   4194828  CONCAT    -        RW
   sd rootdisk-04  var-01       rootdisk 12584483 4194828  0         c1t0d0   ENA

Третий вывод — это команда df -kl ( я убрал ненужную информацию, для удобочитаемости)
# df -kl
   Filesystem                 kbytes  used    avail     capacity  Mounted on
   /dev/vx/dsk/bootdg/rootvol 4130826 1016437  3073081     25%    /
   /dev/vx/dsk/bootdg/usr      4034088 3478926  514822    88%    /usr
   /dev/vx/dsk/bootdg/var      2055085  206078 1787355    11%    /var

Следующей командой мы обязаны просмотреть «prtvtoc» рутового диска, это понадобится нам для следующих действий нат партициями:
# prtvtoc /dev/rdsk/c1t0d0s2
   * Dimensions:
   *     512 bytes/sector
   *     107 sectors/track
   *      27 tracks/cylinder
   *    2889 sectors/cylinder
   *   24622 cylinders
   *   24620 accessible cylinders
   *
   *                          First     Sector    Last
   * Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
          0      2    00    4194828   8389656  12584483
          1      3    01          0   4194828   4194827
          2      5    00          0  71127180  71127179
          3      7    00   12584484   4194828  16779311
          4      4    00   16779312   8193204  24972515
          6     14    01          0  71127180  71127179
          7     15    01   71060733     66447  71127179

и «prtvtoc» диска на который мы хотим провести увеличение нашй файловой системы, как видно диск еще на проинициализирован через VxVM.
# prtvtoc /dev/rdsk/c1t1d0s2
   * Dimensions:
   *     512 bytes/sector
   *     107 sectors/track
   *      27 tracks/cylinder
   *    2889 sectors/cylinder
   *   24622 cylinders
   *   24620 accessible cylinders
   *
   * Unallocated space:
   *        First     Sector    Last
   *        Sector     Count    Sector
   *           0  71127180  71127179
   *
   *                          First     Sector    Last
   * Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
          2      5    01          0  71127180  71127179

Теперь узнав все что нам нужно мы готовы начать работу.
Мы попытаемся изменить размер «root» и «var» файловой системы, что является наиболее частым случае в связи с нерассчитанным ростом размера файловых систем. После проделанных операций, все файловые системы будут находится на новом диске, «rootvol» будет увеличена с 8389656 секторов до 9000000, и «var» c 4194828 до 5555547 секторов.
Сейчас немного о размерах которые мы будем выбирать для новых расширенных файловых систем. Хотя мы и можем выбрать любой размер, но лучше будет выбрать значение кратное секторам диска. В противном случае VxVM будет округлять его для использования в новом «сабдиске» и новом «слайсе», в результате мы можем получить небольшие кусочки места на жестком диске, которые никогда не смогут быть задействованы, это конечно не конец света, но все же рекомендуется создавать партиции исходя из кратности количества секторов на диске. Для доказательства на примере я рассмотрю оба случая, где «rootvol» мы будем расширять до 9000000 секторов, что не кратно 2889, и «var» (5555547 секторов), который очень удачно делится на 2889.
Итак, поехали:
# /usr/lib/vxvm/bin/vxrootadm -v -g ckdg grow c1t1d0s2 rootvol=9000000 var=5555547
В данной команде ключ "-v" означает, что мы сможем наблюдать за происходящим через вывод на экран, «c1t1d0s2» — это пустой диск на котором в конце будет находится вся система. В результате выполнения данной команды мы видим вывод:
VxVM vxrootadm INFO V-5-2-4953
        Growing root volumes on the current boot disk will require three
        system reboots to complete.  These will result in moving plexes
        from the source boot disk to the target disk.  If you choose
        to continue with this operation, the target disk will replace
        the source boot disk.
   Do you wish to continue [y,n,q,?] (default: n) y
   [16:08:08]  VxVM vxrootadm INFO V-5-2-4828 Adding target disk to group ...
   [16:08:13]# vxdisksetup -i c1t1d0 format=sliced
   [16:08:21]# vxdisk -f init c1t1d0s2 format=sliced
   [16:08:24]# vxdg -g ckdg adddisk rootdisk-s0=c1t1d0s2
   [16:08:27]  VxVM vxrootadm INFO V-5-2-4837 Creating mirrors ...
   [16:08:27]# vxassist -g ckdg mirror swapvol layout=contig,diskalign rootdisk-s0
   [16:09:39]# vxassist -g ckdg mirror rootvol layout=contig,diskalign rootdisk-s0
   [16:12:13]# vxassist -g ckdg make space_rootvol 610344 rootdisk-s0
   [16:12:13]# vxassist -g ckdg mirror var layout=contig,diskalign rootdisk-s0
   [16:13:28]# vxassist -g ckdg make space_var 1360719 rootdisk-s0
   [16:13:28]# vxassist -g ckdg mirror usr layout=contig,diskalign rootdisk-s0
   [16:15:51]  VxVM vxrootadm INFO V-5-2-4829 Bootsetup ckdg rootdisk-s0 ...
   [16:16:16]  VxVM vxrootadm INFO V-5-2-4829 Bootsetup ckdg rootdisk ...
   VxVM vxrootadm INFO V-5-2-4880
        Phase 1 completed. Devalias for the target disk: vx-rootdisk-s0
        Please reboot with this disk.  To do this type:
                reboot -- vx-rootdisk-s0
        After the system comes up, continue with this operation by typing:
                vxrootadm grow continue

Итак проверим, что произошло,
# vxdisk list
   DEVICE       TYPE            DISK         GROUP        STATUS
   c1t0d0s2     auto:sliced     rootdisk     ckdg         online
   c1t1d0s2     auto:sliced     rootdisk-s0  ckdg         online
   c1t2d0s2     auto:none       -            -            online invalid
   c1t3d0s2     auto:none       -            -            online invalid

VxVM зазеркалировал все вольюмы (volume) c оригинального диска на наш новый диск. Тем не менее также создались два временных и пустых тома с соответствующими названиями space_rootvol и space_var. Эти два новых вольюма, заведомо расположены на диске так, чтобы позволить увеличиться файловой системе.
Приведу следующий вывод:
# vxprint -ht
   Disk group: ckdg
   dg ckdg         default      default  9000     1231534571.8.v4u-v240d-fll03
   dm rootdisk     c1t0d0s2     auto     66446    71060733 -
   dm rootdisk-s0  c1t1d0s2     auto     66446    71057844 -
   v  rootvol      -            ENABLED  ACTIVE   8389656  ROUND     -        root
   pl rootvol-01   rootvol      ENABLED  ACTIVE   8389656  CONCAT    -        RW
   sd rootdisk-02  rootvol-01   rootdisk 4194827  8389656  0         c1t0d0   ENA
   pl rootvol-02   rootvol      ENABLED  ACTIVE   8389656  CONCAT    -        RW
   sd rootdisk-s0-02 rootvol-02 rootdisk-s0 4194828 8389656 0        c1t1d0   ENA
   v  space_rootvol -           ENABLED  ACTIVE   610344   SELECT    -        fsgen
   pl space_rootvol-01 space_rootvol ENABLED ACTIVE 612468 CONCAT    -        RW
   sd rootdisk-s0-03 space_rootvol-01 rootdisk-s0 12584484 612468 0  c1t1d0   ENA
   v  space_var    -            ENABLED  ACTIVE   1360719  SELECT    -        fsgen
   pl space_var-01 space_var    ENABLED  ACTIVE   1360719  CONCAT    -        RW
   sd rootdisk-s0-05 space_var-01 rootdisk-s0 17391780 1360719 0     c1t1d0   ENA
   v  swapvol      -            ENABLED  ACTIVE   4194828  ROUND     -        swap
   pl swapvol-01   swapvol      ENABLED  ACTIVE   4194828  CONCAT    -        RW
   sd rootdisk-B0  swapvol-01   rootdisk 71060732 1        0         c1t0d0   ENA
   sd rootdisk-01  swapvol-01   rootdisk 0        4194827  1         c1t0d0   ENA
   pl swapvol-02   swapvol      ENABLED  ACTIVE   4194828  CONCAT    -        RW
   sd rootdisk-s0-01 swapvol-02 rootdisk-s0 0     4194828  0         c1t1d0   ENA
   v  usr          -            ENABLED  ACTIVE   8193204  ROUND     -        fsgen
   pl usr-01       usr          ENABLED  ACTIVE   8193204  CONCAT    -        RW
   sd rootdisk-03  usr-01       rootdisk 16779311 8193204  0         c1t0d0   ENA
   pl usr-02       usr          ENABLED  ACTIVE   8193204  CONCAT    -        RW
   sd rootdisk-s0-06 usr-02     rootdisk-s0 18752499 8193204 0       c1t1d0   ENA
   v  var          -            ENABLED  ACTIVE   4194828  ROUND     -        fsgen
   pl var-01       var          ENABLED  ACTIVE   4194828  CONCAT    -        RW
   sd rootdisk-04  var-01       rootdisk 12584483 4194828  0         c1t0d0   ENA
   pl var-02       var          ENABLED  ACTIVE   4194828  CONCAT    -        RW
   sd rootdisk-s0-04 var-02     rootdisk-s0 13196952 4194828 0       c1t1d0   ENA

Для наглядности попытаюсь отобразить графически как это выглядит в системе:
              rootdisk                rootdisk-s0
             (c1t0d0s2)                (c1t1d0s2)
            +-------------+         +-------------+
            |   swapvol   |         |   swapvol   |
            +-------------+         +-------------+
            |   rootvol   |         |   rootvol   |
            +-------------+         +-------------+
            |     var     |         |space_rootvol|
            +-------------+         +-------------+
            |     usr     |         |    var      |
            +-------------+         +-------------+
                                    |  space_var  |
                                    +-------------+
                                    |     usr     |
                                    +-------------+

«vxrootadm» заранее позаботился о нас и создал алиас для обоих дисков. Следующим шагом нам необходимо перезагрузиться, используя созданное зеркало (тем самым убедившись что он загрузочный). К сожалению — это будет не последняя перезагрузка, таков уж порядок.
# reboot -- vx-rootdisk-s0
После перезагрузки увидим, что в принципе ничего не произошло, разве что у нас другой загрузочный диск. Вводим следующую команду:
# vxrootadm grow continue
   [16:22:10]  VxVM vxrootadm INFO V-5-2-4861 Remove source mirrors ...
   VxVM vxrootadm INFO V-5-2-4880
        Phase 2 completed. Devalias for the source disk: vx-rootdisk
        Please reboot with this disk.  To do this type:
                reboot -- vx-rootdisk
        After the system comes up, continue with this operation by typing:
                vxrootadm grow continue

Что же произошло после данной команды, VxVM переместил плексы с оригинального диска, так что остались только вольюмы на новом диске.
# vxprint -ht
   Disk group: ckdg
   dg ckdg         default      default  9000     1231534571.8.v4u-v240d-fll03
   dm rootdisk     c1t0d0s2     auto     66446    71060733 -
   dm rootdisk-s0  c1t1d0s2     auto     66446    71057844 -
   v  rootvol      -            ENABLED  ACTIVE   8389656  ROUND     -        root
   pl rootvol-02   rootvol      ENABLED  ACTIVE   8389656  CONCAT    -        RW
   sd rootdisk-s0-02 rootvol-02 rootdisk-s0 4194828 8389656 0        c1t1d0   ENA
   v  space_rootvol -           ENABLED  ACTIVE   610344   SELECT    -        fsgen
   pl space_rootvol-01 space_rootvol ENABLED ACTIVE 612468 CONCAT    -        RW
   sd rootdisk-s0-03 space_rootvol-01 rootdisk-s0 12584484 612468 0  c1t1d0   ENA
   v  space_var    -            ENABLED  ACTIVE   1360719  SELECT    -        fsgen
   pl space_var-01 space_var    ENABLED  ACTIVE   1360719  CONCAT    -        RW
   sd rootdisk-s0-05 space_var-01 rootdisk-s0 17391780 1360719 0     c1t1d0   ENA
   v  swapvol      -            ENABLED  ACTIVE   4194828  ROUND     -        swap
   pl swapvol-02   swapvol      ENABLED  ACTIVE   4194828  CONCAT    -        RW
   sd rootdisk-s0-01 swapvol-02 rootdisk-s0 0     4194828  0         c1t1d0   ENA
   v  usr          -            ENABLED  ACTIVE   8193204  ROUND     -        fsgen
   pl usr-02       usr          ENABLED  ACTIVE   8193204  CONCAT    -        RW
   sd rootdisk-s0-06 usr-02     rootdisk-s0 18752499 8193204 0       c1t1d0   ENA
   v  var          -            ENABLED  ACTIVE   4194828  ROUND     -        fsgen
   pl var-02       var          ENABLED  ACTIVE   4194828  CONCAT    -        RW
   sd rootdisk-s0-04 var-02     rootdisk-s0 13196952 4194828 0       c1t1d0   ENA

Отметим то, что сейчас вольюмы ТОЛЬКО на новом диске. Несмотря на то, что плексы и поддиски с нашего рутового диска были удалены, у нас все еще есть рутовая файловая система с оригинального диска c1t0d0s2. VxVM также внес изменение в /etc/vfstab, а также некоторые другие файлы на диске c1t0d0s0 в корневой файловой системе. Так что, если мы загрухимся с него, система будет использовать при загрузке только root,swap.usr и var слайсы. В предыдущей команде нас просили перезагрузиться используя следующую команду, что мы и сделаем.
# reboot -- vx-rootdisk
После загрузки мы увидим, что система загрузилась уже не с VxVM, а напрямую с слайсов на оригинальном диске.

# df -kl
   Filesystem            kbytes    used   avail capacity  Mounted on
   /dev/dsk/c1t0d0s0    4130826 1016531 3072987    25%    /
   /dev/dsk/c1t0d0s4    4034088 3478926  514822    88%    /usr
   /dev/dsk/c1t0d0s3    2055085  211996 1781437    11%    /var

Продолжаем:
# vxrootadm grow continue
   [10:39:06]  VxVM vxrootadm INFO V-5-2-4843 Growing volumes ...
   [10:39:11]  VxVM vxrootadm INFO V-5-2-4829 Bootsetup ckdg rootdisk-s0 ...
   VxVM vxrootadm INFO V-5-2-4880
        Phase 3 completed. Devalias for the target disk: vx-rootdisk-s0
        Please reboot with this disk.  To do this type:
                reboot -- vx-rootdisk-s0
        After the system comes up, continue with this operation by typing:
                vxrootadm grow continue

Мы загрузились с слайсами на оригинальном диске c1t0d0 и пока вольюмы на новом диске c1t1d0 не примонтированы и не используются, VxVM может убрать временные «space» вольюмы, увеличить те, которые необходимо и следом расширить UFS.
# vxprint -ht
   Disk group: ckdg
   dg ckdg         default      default  9000     1231534571.8.v4u-v240d-fll03
   dm rootdisk     c1t0d0s2     auto     66446    71060733 -
   dm rootdisk-s0  c1t1d0s2     auto     66446    71057844 -
   v  rootvol      -            ENABLED  ACTIVE   9000000  ROUND     -        root
   pl rootvol-02   rootvol      ENABLED  ACTIVE   9002124  CONCAT    -        RW
   sd rootdisk-s0-02 rootvol-02 rootdisk-s0 4194828 9002124 0        c1t1d0   ENA
   v  swapvol      -            ENABLED  ACTIVE   4194828  ROUND     -        swap
   pl swapvol-02   swapvol      ENABLED  ACTIVE   4194828  CONCAT    -        RW
   sd rootdisk-s0-01 swapvol-02 rootdisk-s0 0     4194828  0         c1t1d0   ENA
   v  usr          -            ENABLED  ACTIVE   8193204  ROUND     -        fsgen
   pl usr-02       usr          ENABLED  ACTIVE   8193204  CONCAT    -        RW
   sd rootdisk-s0-06 usr-02     rootdisk-s0 18752499 8193204 0       c1t1d0   ENA
   v  var          -            ENABLED  ACTIVE   5555547  ROUND     -        fsgen
   pl var-02       var          ENABLED  ACTIVE   5555547  CONCAT    -        RW
   sd rootdisk-s0-04 var-02     rootdisk-s0 13196952 5555547 0       c1t1d0   ENA

Как мы видим, временные вольюмы были удалены и все встало на свои места так как мы и запланировали. Единственное, что мы здесь не можем увидеть, изменилась ли UFS система. Теперь вернемся, к тому о чем говорили в начале статьи, о размерах вольюмов относительно сабдисков. Вспомним, что слайсы и поддиски ДОЛЖНЫ начинаться и заканчиваться четко на цилиндре, но вольюмы не имеют следующих ограничений. Вольюмы должны быть просто меньше чем или равны размеру поддисков. Мы указали, что rootvol должен быть увеличен до 9000000 секторов, VxVM так и сделал, но так как поддиск (и соответствующий слайс) необходимо выровнить по цилиндрам он получился немного больше 9002124 сектора, кратное 2889. Это не вызывает никаких проблем, однако 2124 чуть больше 1Мб и это место не будет использоваться на диске. В случае с разделом var мы были предусмотрительны, и в результате не видим никаких расхождений между задуманной и получившейся величиной. Итак теперь следует последняя перезагрузка.
# reboot -- vx-rootdisk-s0
После загрузки введем:
# vxrootadm grow continue
Последними командами мы увидим результат проделанной работы.

 # vxdisk list
   DEVICE       TYPE            DISK         GROUP        STATUS
   c1t0d0s2     auto:sliced     -            -            online
   c1t1d0s2     auto:sliced     rootdisk-s0  ckdg         online
   c1t2d0s2     auto:none       -            -            online invalid
   c1t3d0s2     auto:none       -            -            online invalid
   # vxprint -ht
   Disk group: ckdg
   dg ckdg         default      default  9000     1231534571.8.v4u-v240d-fll03
   dm rootdisk-s0  c1t1d0s2     auto     66446    71057844 -
   v  rootvol      -            ENABLED  ACTIVE   9000000  ROUND     -        root
   pl rootvol-02   rootvol      ENABLED  ACTIVE   9002124  CONCAT    -        RW
   sd rootdisk-s0-02 rootvol-02 rootdisk-s0 4194828 9002124 0        c1t1d0   ENA
   v  swapvol      -            ENABLED  ACTIVE   4194828  ROUND     -        swap
   pl swapvol-02   swapvol      ENABLED  ACTIVE   4194828  CONCAT    -        RW
   sd rootdisk-s0-01 swapvol-02 rootdisk-s0 0     4194828  0         c1t1d0   ENA
   v  usr          -            ENABLED  ACTIVE   8193204  ROUND     -        fsgen
   pl usr-02       usr          ENABLED  ACTIVE   8193204  CONCAT    -        RW
   sd rootdisk-s0-06 usr-02     rootdisk-s0 18752499 8193204 0       c1t1d0   ENA
   v  var          -            ENABLED  ACTIVE   5555547  ROUND     -        fsgen
   pl var-02       var          ENABLED  ACTIVE   5555547  CONCAT    -        RW
   sd rootdisk-s0-04 var-02     rootdisk-s0 13196952 5555547 0       c1t1d0   ENA
   # df -kl
   Filesystem                  kbytes    used   avail capacity  Mounted on
   /dev/vx/dsk/bootdg/rootvol 4431534 1016814 3370405    24%    /
   /dev/vx/dsk/bootdg/usr     4034088 3478926  514822    88%    /usr
   /dev/vx/dsk/bootdg/var     2721668  207180 2432838     8%    /var

Надеюсь данная статья понравится, и не утомит читателей моими разглагольствованиями.
Tags:
Hubs:
Total votes 3: ↑3 and ↓0+3
Comments0

Articles