mrrc Posted January 20 (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 by mrrc Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Saab95 Posted January 20 · Report post С помощью стороннего ПО - загружаетесь с флешки или компакт диска и акронисом или чем-то подобным переделываете разделы и переносите. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mrrc Posted January 20 · Report post @Saab95 это ж на виртуалке, можно конечно присобачить образ загрузочный. Штатных средств ОС разве нет для решения стоящей задачи? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted January 20 · 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 · 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 · 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 (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 by mrrc Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted January 21 · Report post ну да, в ночи писал, аргументы ДО пути надо... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mrrc Posted January 21 · 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 · 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 · 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 · 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 · 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 · Report post да, поправил там, рут -> 3 и порядок аргументы, путь на раздел Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mrrc Posted Monday at 01:17 PM (edited) · Report post @st_re валимся на отсутствии прав при dump\restore: В 20.01.2023 в 23:50, st_re сказал: dump 0 -f - / | restore -r -f - Edited Monday at 01:18 PM by mrrc Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted Monday at 01:23 PM · 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 Monday at 05:24 PM · 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 Monday at 09:09 PM · 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 Tuesday at 05:44 AM · 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 Tuesday at 06:41 AM · Report post развернули туда, куда смонтировали там сначала монтируется только корень в /mnt и делается дамп старого корня и рестор в текущую директорию тут заодно создались точки монтирования под остальные разделы, они все скопом монтируются и дальше cd в соотв диру, и дамп - рестор. по крайней мере у меня я не вижу, где бы cd не соответствовал источнику дампа следом (тут dump читает текущий /etc/fstab) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mrrc Posted Tuesday at 06:56 PM (edited) · Report post @st_re в общем попробовал воспроизвести процедуру по порядку еще раз на чистую с ноля, получил тот же самый эффект с миксом содержимого между /usr2 и /var, и вроде все прозрачно по порядку и внимательности, но где-то парадигма дает сбой) Собственно это уже спортивный интерес был, т.к. все это тестовый стенд в первую очередь, и целевая задача с расширением /usr в любой случае решена и столь детальная практика по вопросу от вас принята, за что большая благодарность. Не могу не задать такой вопрос - в свое время для резервирования дисков целиком под фрей (как правило от аппаратного выхода из строя, так и поломки логики фс) безотказно выручала простая портовая утилита sysutils/clonehdd на перле, использующая процедуры DUMP\RESTORE, с помощью которой было легко клонировались диски один в один. Но она очень давно перестала поддерживаться и на современных системах с GPT разметкой утратила работоспособность. Никаких ее аналогов на данный момент обнаружить не удалось и почему столь простое и эффективное решение никто не подхватил и не актуализировал - непонятно. В ОС существует утилита recoverdisk, но она работает посекторно, соответственно процедура несравнимо долгая, чем при использовании DUMP\RESTORE, в особенности при наличии большого количества "пустоты" на диске. Смогли бы посмотреть, насколько сложно было бы допилить данный инструмент (clonehdd) для унифицированного применения на современных Freebsd? Edited Tuesday at 06:59 PM by mrrc Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted Wednesday at 12:59 AM · 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 Wednesday at 06:52 AM · 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 Wednesday at 08:35 AM · 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 Wednesday at 01:05 PM · Report post Цитата Писать в fstab всякие da0p1 - прошлый век Надо говорить - устаревшая технология Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...