Увеличьте размер нескольких фрагментов 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 из портов

1 ответ

Решение

Пара мыслей:

  • Невозможно расширить фрагмент 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 в этом пространстве, перемонтируйте и Bob's ваш дядя.

Другие вопросы по тегам