Архив заметок

Расширение раздела на VPS во FreeBSD 12

Просмотров: 3288Комментарии: 0
FreeBSD

Всем привет!

По традиции публикую заметку на будущее, если возникнет проблема с расширением раздела при смене тарифа. Я столкнулся с этими буквально вчера. Хостер добавил пространства в 10Gb, по наивности я думал, что диск расширится при вмешательстве службы поддержки, но так как я использую на VPS операционку FreeBSD, которую провайдер не поддерживает, пришлось самостоятельно заниматься этим вопросом.

В интернете очень много мануалов по данной тематике, в хендбуке эта функциональность тоже описана достаточно подробно. Я, конечно, Америку не открыл и колесо заново не изобрел smile Собрал для себя рабочий список команд для корректного увеличения раздела.

Для начала дисклеймер, ибо это надо делать всегда!

До внесения изменений, обязательно сделайте резервную копию данных. Любые манипуляции с разделами несут в себе риск потери данных.

Данные операции проходили в ОС FreeBSD 12.0

Загружаемся в single user mode. Это 2 пункт на экране загрузки FreeBSD.

В консоли проверяем диск на наличие ошибок

# fsck -y
** /dev/vtbd0s1a

USE JOURNAL? yes

** SU+J Recovering /dev/vtbd0s1a
** Reading 33554432 byte journal from inode 4.

RECOVER? yes

** Building recovery table.
** Resolving unreferenced inode list.
** Processing journal entries.

***** FILE SYSTEM MARKED CLEAN *****

Файловая система работает нормально, поехали дальше. Монтировать разделы не надо в этом режиме.

Проверим, что у нас с разделами

# gpart show
=>      63  41942977  vtbd0  MBR  (20G)
        63         1         - free -  (512B)
        64  41942976      1  freebsd  [active]  (20G)

=>       0  41942976  vtbd0s1  BSD  (10G)
         0  39845888        1  freebsd-ufs  (9.5G)
  39845888   2097088        2  freebsd-swap  (1.0G)

Сначала надо отключить swap раздел. Узнаем девайс:

# cat /etc/fstab
# Device        Mountpoint      FStype  Options Dump    Pass#
/dev/vtbd0s1a   /               ufs     rw      1       1
/dev/vtbd0s1b   none            swap    sw      0       0

Отключаем:

# swapoff /dev/vtbd0s1b

Удаляем swap раздел, он у меня под номером 2

# gpart delete -i 2 vtbd0s1
vtbd0s1b deleted
В официальном хендбуке есть предостережение, что подобные действия надо выполнять на размонтированных фс или с livecd/usb, либо отключить функцию безопасности GEOM:

# sysctl kern.geom.debugflags=16

Я все шаги проделывал в однопользовательском режиме без монтирования фс, выше об этом писал. Отключать GEOM мне не пришлось.

Если раздел поврежден (CORRUPT)

Пора изменить размер слайса:

# gpart resize -i 1 -s 19G -a 4k vtbd0s1

Проверим:

# gpart show
=>      63  41942977  vtbd0  MBR  (20G)
        63         1         - free -  (512B)
        64  41942976      1  freebsd  [active]  (20G)

=>       0  41942976  vtbd0s1  BSD  (20G)
         0  39845888        1  freebsd-ufs  (19G)
  39845888   2097088        2  - free -     (1.0G)

Добавим swap раздел

# gpart add -t freebsd-swap -s 1G -a 4k vtbd0s1
vtbd0s1b added

Еще раз проверим:

# gpart show
=>      63  41942977  vtbd0  MBR  (20G)
        63         1         - free -  (512B)
        64  41942976      1  freebsd  [active]  (20G)

=>       0  41942976  vtbd0s1  BSD  (20G)
         0  39845888        1  freebsd-ufs  (19G)
  39845888   2097088        2  freebsd-swap  (1.0G)

Растянем раздел:

# growfs /dev/vtbd0s1a
It's strongly recommended to make a backup before growing the file system.
OK to grow filesystem on /dev/vtbd0s1a, mounted on /, from 9.5GB to 19GB? [yes/no] super-block backups (for fsck_ffs -b #) at:
 20516032, 21798272, 23080512, 24362752, 25644992, 26927232, 28209472,
 29491712, 30773952, 32056192, 33338432, 34620672, 35902912, 37185152,
 38467392, 39749632

Проверим, что получилось:

# df -h
Filesystem       Size    Used   Avail Capacity  Mounted on
/dev/vtbd0s1a     18G    7.8G    9.1G    46%    /
devfs            1.0K    1.0K      0B   100%    /dev

И swap раздел:

# swapinfo -h
Device          1K-blocks     Used    Avail Capacity
/dev/vtbd0s1b     1048544       0B     1.0G     0%

Вы можете войти под своим логином или зарегистрироваться на сайте.