mrrc Posted January 20, 2023 (edited) · Report post Есть виртуалка-стенд, решил расширить один из разделов за счет добавления общего объема жесткого диска. Мануалов в сети хватает, но везде вновь образовавшееся пространство следует ЗА разделом (как правило, единственным в системе) после удаления свапа, размер которого требуется увеличить. В моем случаи разделы имеют следующую структуру и требуемый к увеличению раздел 5. # gpart show da0 => 40 209715120 da0 GPT (100G) 40 1024 1 freebsd-boot (512K) 1064 8388608 2 freebsd-swap (4.0G) 8389672 6291456 3 freebsd-ufs (3.0G) 14681128 2097152 4 freebsd-ufs (1.0G) 16778280 41943040 5 freebsd-ufs (20G) 58721320 20971520 6 freebsd-ufs (10G) 79692840 25164720 7 freebsd-ufs (12G) 104857560 104857600 - free - (50G) # df -h Filesystem Size Used Avail Capacity Mounted on /dev/da0p3 2.9G 244M 2.4G 9% / devfs 1.0K 1.0K 0B 100% /dev /dev/da0p4 992M 8.1M 904M 1% /home /dev/da0p5 19G 14G 3.8G 79% /usr /dev/da0p7 12G 465M 10G 4% /usr2 /dev/da0p6 9.7G 735M 8.2G 8% /var gpart resize работает при наличии свободного места ПОСЛЕ целевой партиции, у меня же она в центре и за ней еще две, которые трогать не нужно. А как делается MOVE-EXIST+FREE? FreeBSD 13.1 Edited January 20, 2023 by mrrc Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Saab95 Posted January 20, 2023 · Report post С помощью стороннего ПО - загружаетесь с флешки или компакт диска и акронисом или чем-то подобным переделываете разделы и переносите. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mrrc Posted January 20, 2023 · Report post @Saab95 это ж на виртуалке, можно конечно присобачить образ загрузочный. Штатных средств ОС разве нет для решения стоящей задачи? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted January 20, 2023 · Report post создать второй диск, загрузиться в сингл мод и разметить второй как надо, разделы не изменяемого размера можно ДД, можно dump/restore, изменённые dump/restore и поставить загрузчик. выключиться, первый отцепить, включить и загрузиться. NEWDISK=da1 # елси мы в single mod то mount -o ro /usr mount -o ro /home mount -o ro /var mount -o ro /usr2 # gpart create -s gpt ${NEWDISK} gpart add -a4k -s 512K -t freebsd-boot ${NEWDISK} # 1 gpart add -a4k -s 4G -t freebsd-swap ${NEWDISK} # 2 gpart add -a4k -s 3G -t freebsd-ufs ${NEWDISK} # 3 gpart add -a4k -s 1G -t freebsd-ufs ${NEWDISK} # 4 gpart add -a4k -s 10G -t freebsd-ufs ${NEWDISK} # 5 (was 6) gpart add -a4k -s 12G -t freebsd-ufs ${NEWDISK} # 6 (was 7) gpart add -a4k -t freebsd-ufs ${NEWDISK} # 7 (was 5) # 100% FREE newfs -L root /dev/${NEWDISK}p3 newfs -L home -U -j /dev/${NEWDISK}p4 newfs -L usr2 -U -j /dev/${NEWDISK}p5 newfs -L var -U -j /dev/${NEWDISK}p6 newfs -L usr -U -J /dev/${NEWDISK}p7 mount /dev/${NEWDISK}p3 /mnt cd /mnt dump 0 -f - / | restore -r -f - mount /dev/${NEWDISK}p4 /mnt/home mount /dev/${NEWDISK}p5 /mnt/usr2 mount /dev/${NEWDISK}p6 /mnt/var mount /dev/${NEWDISK}p7 /mnt/usr cd /mnt/home dump 0 -f - /home | restore -r -f - cd /mnt/usr2 dump 0 -f - /usr2 | restore -r -f - cd /mnt/var dump 0 -f - /var | restore -r -f - cd /mnt/usr dump 0 -f - /usr | restore -r -f - sync gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ${NEWDISK} vim /mnt/etc/fstab # тут попарвить цифры на монтирование 7->6 6->5 5->7 или вообще указать лейблы sync ; sync ; sync ; /bin/shutdown -p now тут можно было бы указать старые номера конечно через -i в gpart add но оно потом не шибко удобно, что пятый идёт после седьмого.... можно в будущей попутать чёнить.... на одном диска можно двигать штатными средствами, если свободно больше любого из двигаемых разделов, создаём раздел в конце, копируем туда, удаляем src, повторяем для второго с конца, расширяем нужный... но тут цифры в номерах партиций поедут... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted January 21, 2023 · Report post 4 hours ago, st_re said: тут можно было бы указать старые номера конечно через -i в gpart add но оно потом не шибко удобно, что пятый идёт после седьмого.... можно в будущей попутать чёнить.... Писать в fstab всякие da0p1 - прошлый век, есть же давно GPT UUID, фишка которых в том, что они не меняются куда ты диск не вставляй. Ещё label есть несколько разных на уровне фс и уровне геом, для тех кто любит ручками подписывать. 4 hours ago, st_re said: gpart add -s4k -s 3G У вас тут -s два раза, в первом случае должно быть -a. 15 hours ago, mrrc said: Есть виртуалка-стенд, решил расширить один из разделов за счет добавления общего объема жесткого диска. Мануалов в сети хватает, но везде вновь образовавшееся пространство следует ЗА разделом (как правило, единственным в системе) после удаления свапа, размер которого требуется увеличить. В моем случаи разделы имеют следующую структуру и требуемый к увеличению раздел 5. Если свободного места нет сразу за разделом и диск не оч большой то проще создать ещё один диск, подключить к виртуалке, разметить как надо и перетащить систему и данные туда. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted January 21, 2023 · Report post 4 минуты назад, Ivan_83 сказал: Писать в fstab всякие da0p1 - прошлый век, есть же давно GPT UUID, фишка которых в том, что они не меняются куда ты диск не вставляй. Ещё label есть несколько разных на уровне фс и уровне геом, для тех кто любит ручками подписывать. ну это само собой, просто когда номера разделов на диске не по порядку, потом снесешь чего не то... но в общем на работу не влияет.. 5 минут назад, Ivan_83 сказал: У вас тут -s два раза, в первом случае должно быть -a. спасибо, список очепяток применил... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mrrc Posted January 21, 2023 (edited) · Report post 18 часов назад, st_re сказал: newfs /dev/da1p2 -L root newfs /dev/da1p2p4 -L home -U -j newfs /dev/da1p2p5 -L usr2 -U -j newfs /dev/da1p6 -L var -U -j newfs /dev/da1p7 -L usr -U -J Пускаю построчно, скриптом слишком кошерно было бы, если сразу взлетело) Спотыкается, начиная с создания fs на на созданных выше разделах. Ошибка синтаксиса, судя по всему, самый вверх вывода в окне терминала hyper-v не вижу. Edited January 21, 2023 by mrrc Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted January 21, 2023 · Report post ну да, в ночи писал, аргументы ДО пути надо... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mrrc Posted January 21, 2023 · Report post Верно, отработало newfs -L root /dev/da1p2 Но этим мы создаем свап, судя по создаваемому размеру в 4096.0 MB, а далее вы на нем пытаетесь создать /home с /usr2, выходит.. newfs -L home -U -j /dev/da1p2p4 newfs -L usr2 -U -j /dev/da1p2p5 Нет в системе в /dev устройств таковых da1p2XX, собственно как с da1p3XX, видимо вначале еще и сам / создать надо. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted January 21, 2023 · Report post 1 hour ago, mrrc said: Но этим мы создаем свап Это просто метки уровня ФС, я их вообще никогда не пишу. 1 hour ago, mrrc said: Нет в системе в /dev устройств таковых da1p2XX И не будет, и не создать их. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted January 22, 2023 · Report post gpart add отработали ? должны были появиться разделы ls /dev/da1p[1-7] Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted January 22, 2023 · Report post 27 minutes ago, st_re said: ls /dev/da1p[1-7] gpart show же для этого. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mrrc Posted January 23, 2023 · Report post 12 часов назад, st_re сказал: отработали ? должны были появиться разделы ls /dev/da1p[1-7] Конечно. Вы ранее про da1p2p4\da1p2p5 писали, их и не обнаруживалось. root@vm:~ # ls -la /dev | grep da1 crw-r----- 1 root operator 0x64 Jan 23 11:21 da1 crw-r----- 1 root operator 0x6c Jan 23 11:21 da1p1 crw-r----- 1 root operator 0x6d Jan 23 11:21 da1p2 crw-r----- 1 root operator 0x6e Jan 23 11:21 da1p3 crw-r----- 1 root operator 0x6f Jan 23 11:21 da1p4 crw-r----- 1 root operator 0x70 Jan 23 11:21 da1p5 crw-r----- 1 root operator 0x71 Jan 23 11:21 da1p6 crw-r----- 1 root operator 0x72 Jan 23 11:21 da1p7 root@vm:~ # root@vm:~ # gpart show da1 => 40 209715120 da1 GPT (100G) 40 1024 1 freebsd-boot (512K) 1064 8388608 2 freebsd-swap (4.0G) 8389672 6291456 3 freebsd-ufs (3.0G) 14681128 2097152 4 freebsd-ufs (1.0G) 16778280 20971520 5 freebsd-ufs (10G) 37749800 25165824 6 freebsd-ufs (12G) 62915624 146799536 7 freebsd-ufs (70G) gpart add -a4k -s 4G -t freebsd-swap ${NEWDISK} # 2 newfs /dev/${NEWDISK}p2 -L root mount /dev/${NEWDISK}p2 /mnt cd /mnt dump 0 -f - / | restore -r -f - Мне кажется, проблема выше. Мы создаем раздел 2 под свап, далее на нем файловую систему под /root, пытаемся задампить и развернуть туда существующий "/", нет? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted January 23, 2023 · Report post да, поправил там, рут -> 3 и порядок аргументы, путь на раздел Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mrrc Posted January 23, 2023 (edited) · Report post @st_re валимся на отсутствии прав при dump\restore: В 20.01.2023 в 23:50, st_re сказал: dump 0 -f - / | restore -r -f - Edited January 23, 2023 by mrrc Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted January 23, 2023 · Report post /sbin/mdmfs -s 2048000 auto /tmp (это cltkftn 1Г темп в памяти, если памяти мало, напишите поменьше) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mrrc Posted January 23, 2023 · Report post @st_re да, создание виртуального диска помогло, спасибо. А разве это не 2Gb& /usr растянулся на нужный объем! Интересная вещь получилась после откидывания src и загрузки с dst диска. Продублировалось содержимое /var на /usr2, а с /usr2 на /var. При этом /usr2 получился копией /var, за исключением несколько папок из /var, которые отсутствуют на последнем. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted January 23, 2023 · Report post /etc/fstab поправили с в соответствии с новыми цифрами у разделов ? там у меня было vim /mnt/etc/fstab /dev/da0p5 /usr2 /dev/da0p6 /var /dev/da0p7 /usr Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mrrc Posted January 24, 2023 · Report post Конечно, только 5 и 6 попутались, я прочел как: 7 на 6, 6 на 5, 5 на 7. Еще ж получается, что и dump\restore мы развернули с src-диска из /var сразу на два раздела в dst, раз они зазеркалились? В 20.01.2023 в 23:50, st_re сказал: # тут попарвить цифры на монтирование 7->6 6->5 5->7 В общем для чистоты эксперимента я еще раз проделаю с ноля процедуру. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted January 24, 2023 · Report post развернули туда, куда смонтировали там сначала монтируется только корень в /mnt и делается дамп старого корня и рестор в текущую директорию тут заодно создались точки монтирования под остальные разделы, они все скопом монтируются и дальше cd в соотв диру, и дамп - рестор. по крайней мере у меня я не вижу, где бы cd не соответствовал источнику дампа следом (тут dump читает текущий /etc/fstab) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mrrc Posted January 24, 2023 (edited) · Report post @st_re в общем попробовал воспроизвести процедуру по порядку еще раз на чистую с ноля, получил тот же самый эффект с миксом содержимого между /usr2 и /var, и вроде все прозрачно по порядку и внимательности, но где-то парадигма дает сбой) Собственно это уже спортивный интерес был, т.к. все это тестовый стенд в первую очередь, и целевая задача с расширением /usr в любой случае решена и столь детальная практика по вопросу от вас принята, за что большая благодарность. Не могу не задать такой вопрос - в свое время для резервирования дисков целиком под фрей (как правило от аппаратного выхода из строя, так и поломки логики фс) безотказно выручала простая портовая утилита sysutils/clonehdd на перле, использующая процедуры DUMP\RESTORE, с помощью которой было легко клонировались диски один в один. Но она очень давно перестала поддерживаться и на современных системах с GPT разметкой утратила работоспособность. Никаких ее аналогов на данный момент обнаружить не удалось и почему столь простое и эффективное решение никто не подхватил и не актуализировал - непонятно. В ОС существует утилита recoverdisk, но она работает посекторно, соответственно процедура несравнимо долгая, чем при использовании DUMP\RESTORE, в особенности при наличии большого количества "пустоты" на диске. Смогли бы посмотреть, насколько сложно было бы допилить данный инструмент (clonehdd) для унифицированного применения на современных Freebsd? Edited January 24, 2023 by mrrc Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted January 25, 2023 · Report post 5 hours ago, mrrc said: безотказно выручала простая портовая утилита sysutils/clonehdd на перле, использующая процедуры DUMP\RESTORE, с помощью которой было легко клонировались диски один в один. Клонировать 1в1 - dd .... bs=4m status=progress Клонировать руками - думаю те кто часто это делает просто написали себе скрипты. Лично у меня это относительно редкая необходимость, этап с разметкой я заскриптовал, а дальше у меня rsync всё что нужно копирует. Обновление системы (сборка, установка, очистка) у меня тоже заскриптовано, оно все доп порты пересобирает, которые с ядерными модулями и загрузчики обновляет. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
jffulcrum Posted January 25, 2023 · Report post 11 часов назад, mrrc сказал: sysutils/clonehdd Вроде у неё есть наследник: https://www.freshports.org/sysutils/clone Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mrrc Posted January 25, 2023 · Report post 1 час назад, jffulcrum сказал: Вроде у неё есть наследник: https://www.freshports.org/sysutils/clone Посмотрел, не совсем очевидные примеры использования, как указать диск-источник и диск-назначение для получения точной копии? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Negator Posted January 25, 2023 · Report post Цитата Писать в fstab всякие da0p1 - прошлый век Надо говорить - устаревшая технология Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...