У меня есть виртуальная машина 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 в этом пространстве, перемонтируйте и Боб - ваш дядя.