Расширение диска в FreeBSD

Расширения файловой системы в FreeBSD рассмотрим на примере популярного дистрибутива виртуального маршрутизатора OPNsense. Перед тем как приступить к расширению файловой системы необходимо увеличить объем тома через доступные функции Dashboard Облака.

После того как объем тома (блочного устройства) будет увеличен, можем приступить к дальнейшим операциям.

В данном примере будет выполнено расширение файловой системы «/dev/ufs/OPNsense» с 1.9G до максимально доступного.

Примечание

При изменении таблицы разделов смонтированной файловой системы существует риск потери данных. До внесения изменений, обязательно сделайте резервную копию (бэкап) инстанса.

1. Переходим в консоль управления маршрутизатора через web-консоль Облака или через ssh соединение.

*** OPNsense.localdomain: OPNsense 17.7.11 (amd64/OpenSSL) ***

 WAN (vtnet0)    -> v4/DHCP4: 172.16.0.15/20

  0) Logout                              7) Ping host
  1) Assign interfaces                   8) Shell
  2) Set interface IP address            9) pfTop
  3) Reset the root password            10) Firewall log
  4) Reset to factory defaults          11) Reload all services
  5) Power off system                   12) Upgrade from console
  6) Reboot system                      13) Restore a backup

Enter an option:

2. Выбираем пункт «8) Shell» (Enter an option: 8). В случае необходимости, нужно выполнить предварительную авторизацию.

  1. Проверяем версию и наименование Linux дистрибутива:
root@OPNsense:~ # uname -mrs
FreeBSD 11.0-RELEASE-p12 amd64

4. С помощью утилиты «df» выводим перечень файловых систем, их размер, занятое и свободное пространство:

root@OPNsense:~ # df -h
Filesystem           Size    Used   Avail Capacity  Mounted on
/dev/ufs/OPNsense    1.9G    1.2G    605M    67%    /
devfs                1.0K    1.0K      0B   100%    /dev
devfs                1.0K    1.0K      0B   100%    /var/dhcpd/dev

В данном случае необходимо расширить файловую систему «/dev/ufs/OPNsense».

5. Смонтированную файловую систему можно изменить после отключения функций безопасности GEOM:

root@OPNsense:~ # sysctl kern.geom.debugflags=16
kern.geom.debugflags: 16 -> 16
  1. Выводим таблицу разделов для дисков:
root@OPNsense:~ # gpart show
=>      63  41942977  vtbd0  MBR  (20G)
        63   4194225      1  freebsd  (2.0G)
   4194288  37748752         - free -  (18G)

=>      0  4194225  vtbd0s1  BSD  (2.0G)
        0       16           - free -  (8.0K)
       16  4194209        1  !0  (2.0G)

Как видно из результата вывода команды «gpart show», диск имеет размер 20G, при этом доступно 18G свободного дискового пространства, за счет которого можно расширить слайс, раздел и файловую систему.

  1. Расширяем первый слайс диска «vtbd0» с 2ГБ до 20ГБ (на максимум).

Размер раздела для изменения задается с ключом «-i», а новый желаемый размер с ключом «-s». Выравнивание раздела контролируется с помощью ключа «-a». Если размер раздела не указан (ключ «-s»), то в таком случае используется все оставшееся доступное пространство.

Примечание

Успешно выполненная команда «gpart resize -i 1 -a 4k vtbd0» изменяет только размер раздела. Файловая система в этом разделе будет расширена и описана в последующих шагах статьи.

root@OPNsense:~ # gpart resize -i 1 -a 4k vtbd0
vtbd0s1 resized
  1. Выполняем проверку после расширения раздела:
root@OPNsense:~ # gpart show
=>      63  41942977  vtbd0  MBR  (20G)
        63  41942977      1  freebsd  (20G)

=>       0  41942977  vtbd0s1  BSD  (20G)
         0        16           - free -  (8.0K)
        16   4194209        1  !0  (2.0G)
   4194225  37748752           - free -  (18G)
  1. Расширяем первый раздел диска с 2ГБ до 20ГБ (на максимум).
root@OPNsense:~ # gpart resize -i 1 -a 4k vtbd0s1
vtbd0s1a resized
  1. Выполняем проверку после расширения раздела:
root@OPNsense:~ # gpart show
=>      63  41942977  vtbd0  MBR  (20G)
        63  41942977      1  freebsd  (20G)

=>       0  41942977  vtbd0s1  BSD  (20G)
         0        16           - free -  (8.0K)
        16  41942961        1  !0  (20G)

11. После всех выполненных операций проверяем, что размер файловой системы не изменился:

root@OPNsense:~ # df -h
Filesystem           Size    Used   Avail Capacity  Mounted on
/dev/ufs/OPNsense    1.9G    1.2G    605M    67%    /
devfs                1.0K    1.0K      0B   100%    /dev
devfs                1.0K    1.0K      0B   100%    /var/dhcpd/dev
root@OPNsense:~ #

Как видно из результата вывода команды «df -h», размер файловой системы не изменился.

  1. Расширяем файловую систему раздела:
root@OPNsense:~ # growfs -y /dev/ufs/OPNsense
super-block backups (for fsck_ffs -b #) at:
4194496, 5243072, 6291648, 7340224, 8388800, 9437376, 10485952, 11534528,
12583104, 13631680, 14680256, 15728832, 16777408, 17825984, 18874560,
19923136, 20971712,     22020288, 23068864, 24117440, 25166016, 26214592,
27263168, 28311744, 29360320, 30408896, 31457472, 32506048, 33554624,
34603200, 35651776, 36700352, 37748928,     38797504, 39846080, 40894656
  1. Выполняем проверку после расширения файловой системы:
root@OPNsense:~ # df -h
Filesystem           Size    Used   Avail Capacity  Mounted on
/dev/ufs/OPNsense     19G    1.2G     17G     7%    /
devfs                1.0K    1.0K      0B   100%    /dev
devfs                1.0K    1.0K      0B   100%    /var/dhcpd/dev

Файловая система успешно расширена до необходимого объема. Более детально ознакомиться с изменением объема диска в FreeBSD можно в документации вендора Resizing and Growing Disks.