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