Назад | Перейти на главную страницу

Увеличение размера нескольких слайсов FreeBSD

У меня есть виртуальная машина KVM под управлением FreeBSD 9.1 с типичной структурой с одним разделом и срезами для подкачки, /, / tmp, / var, / usr. Теперь мне нужно обновить этот виртуальный сервер, а также другие, до более крупного жесткого диска.

Я не хочу переустанавливать всю систему и все серверные приложения, поэтому я предпочитаю увеличить размеры фрагментов существующей системы.

Я видел онлайн, что довольно легко увеличить размер последнего фрагмента в разделе, обычно / usr, с помощью fdisk, disklabel и growfs. Однако мне также нужно увеличить размер среза / var.

root@chaos ~ % bsdlabel /dev/vtbd0s1
# /dev/vtbd0s1:
8 partitions:
#          size     offset    fstype   [fsize bsize bps/cpg]
a:    1048576          0    4.2BSD        0     0     0
b:     980816    1048576      swap
c:   31456593          0    unused        0     0     # "raw" part, don't edit
d:    2586624    2029392    4.2BSD        0     0     0
e:    1048576    4616016    4.2BSD        0     0     0
f:   25792001    5664592    4.2BSD        0     0     0

root@chaos ~ % gpart show -l vtbd0
=>      63  31457217  vtbd0  MBR  (15G)
        63  31456593      1  (null)  [active]  (15G)
  31456656       624         - free -  (312k)

root@chaos ~ % df -h
Filesystem       Size    Used   Avail Capacity  Mounted on
/dev/vtbd0s1a    495M    215M    240M    47%    /
devfs            1.0k    1.0k      0B   100%    /dev
/dev/vtbd0s1e    495M     12k    456M     0%    /tmp
/dev/vtbd0s1f     11G    2.5G    8.5G    23%    /usr
/dev/vtbd0s1d    1.2G    562M    562M    50%    /var

Есть ли какой-нибудь "передовой" подход, как это сделать?
Или это запрет на все остальные фрагменты, кроме последнего?

PS: В системе используется файловая система UFS
PPS: Дисковый ввод-вывод через драйверы virtio из портов

Пара мыслей:

  • Невозможно расширить BSD-фрагмент до двух физических мест на диске (новое пространство на вашем диске находится только в конце, фрагменты, которые не находятся в конце, не могут быть расширены до этого нового пространства). Я не знаю инструмента, который может перемещать срезы, но я был бы удивлен, если бы его не существовало.

  • Ты не необходимость var на отдельном разделе. Неуклюжий старый установщик всегда будет давать вам традиционную схему разделов, которая так же устарела, как и программа установки. Я редко делю файловую систему на маленькие неуправляемые куски, как это делает установщик, именно по этим причинам.

    Фактически вы можете просто удалить строку для / var из /etc/fstab и система воссоздает иерархию var при следующей перезагрузке корневого среза. Скорее всего, ваш корневой раздел тоже крошечный, опять же по умолчанию установщик. Это должно Just Work ™, но я видел, как прикладные программы выходили из строя, когда их файлы в /var выбросить.

  • Если текущий фрагмент var крошечный, вероятно, проще просто выбросить весь фрагмент и создать новый на новом свободном пространстве. Там должно быть много направлений, но напишите, если вам нужны подробности, и я могу заполнить пробелы.

  • Если структура вашего диска действительно замкнута, обычно проще перейти в одномодовый режим, создать tar из всего беспорядка, сдуть и воссоздать разделы / метки (с помощью загрузочного компакт-диска или чего-то подобного) и восстановить из tar. Я был там несколько раз. На виртуальной машине это еще проще, так как обычно вы можете смонтировать совершенно новый vmdk / vhd / что угодно, раздел / фрагмент / макет, перейти в одномодовый режим и использовать двойной tar-канал для копирования системы, не закрывая существующие диски (удобно в если вы ой процесс).

  • Обновить - У вас есть срез / tmp, который в основном не используется рядом с срезом var. Вы можете размонтировать, удалить /tmp папку, сделайте символьную ссылку на var (ln -s /var/tmp /tmp), удалите срезы tmp и var, создайте новый срез var в этом пространстве, перемонтируйте и Боб - ваш дядя.