Перейти к содержимому
Калькуляторы

Расширить раздел жесткого диска

Есть виртуалка-стенд, решил расширить один из разделов за счет добавления общего объема жесткого диска. Мануалов в сети хватает, но везде вновь образовавшееся пространство следует ЗА разделом (как правило, единственным в системе) после удаления свапа, размер которого требуется увеличить. В моем случаи разделы имеют следующую структуру и требуемый к увеличению раздел 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

Изменено пользователем mrrc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

С помощью стороннего ПО - загружаетесь с флешки или компакт диска и акронисом или чем-то подобным переделываете разделы и переносите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Saab95 это ж на виртуалке, можно конечно присобачить образ загрузочный. Штатных средств ОС разве нет для решения стоящей задачи?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

создать второй диск, загрузиться в сингл мод и разметить второй как надо, разделы не изменяемого размера можно ДД, можно 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, повторяем для второго с конца, расширяем нужный... но тут цифры в номерах партиций поедут...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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.

Если свободного места нет сразу за разделом и диск не оч большой то проще создать ещё один диск, подключить к виртуалке, разметить как надо и перетащить систему и данные туда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

4 минуты назад, Ivan_83 сказал:

Писать в fstab всякие da0p1 - прошлый век, есть же давно GPT UUID, фишка которых в том, что они не меняются куда ты диск не вставляй.

Ещё label есть несколько разных на уровне фс и уровне геом, для тех кто любит ручками подписывать.

ну это само собой, просто когда номера разделов на диске не по порядку, потом снесешь чего не то... но в общем на работу не влияет..

 

5 минут назад, Ivan_83 сказал:

У вас тут -s два раза, в первом случае должно быть -a.

спасибо, список очепяток применил...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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 не вижу.

Изменено пользователем mrrc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Верно, отработало

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, видимо вначале еще и сам / создать надо.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 hour ago, mrrc said:

Но этим мы создаем свап

Это просто метки уровня ФС, я их вообще никогда не пишу.

 

1 hour ago, mrrc said:

Нет в системе в /dev устройств таковых da1p2XX

И не будет, и не создать их.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

gpart add

отработали ? должны были появиться разделы

ls /dev/da1p[1-7]

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

27 minutes ago, st_re said:

ls /dev/da1p[1-7]

gpart show же для этого.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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, пытаемся задампить и развернуть туда существующий "/", нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

да, поправил там, рут -> 3  и порядок аргументы, путь на раздел

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@st_re валимся на отсутствии прав при dump\restore:

 

В 20.01.2023 в 23:50, st_re сказал:
dump 0 -f - / | restore -r -f -

IMG_3995.jpg

Изменено пользователем mrrc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

/sbin/mdmfs -s 2048000 auto /tmp

 

(это cltkftn 1Г темп в памяти, если памяти мало, напишите поменьше)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@st_re да, создание виртуального диска помогло, спасибо. А разве это не 2Gb&

/usr растянулся на нужный объем!

Интересная вещь получилась после откидывания src и загрузки с dst диска.

Продублировалось содержимое /var на /usr2, а с /usr2 на /var. При этом /usr2 получился копией /var, за исключением несколько папок из /var, которые отсутствуют на последнем.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

/etc/fstab поправили с в соответствии с новыми цифрами у разделов ? там у меня было 

vim /mnt/etc/fstab

 

/dev/da0p5 /usr2
/dev/da0p6 /var
/dev/da0p7 /usr

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Конечно, только 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

 

 

В общем для чистоты эксперимента я еще раз проделаю с ноля процедуру.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

развернули туда, куда смонтировали 

там сначала монтируется только корень в /mnt и делается дамп старого корня и рестор в текущую директорию

тут заодно создались точки монтирования под остальные разделы, они все скопом монтируются и дальше cd в соотв диру, и дамп - рестор. по крайней мере у меня я не вижу, где бы cd не соответствовал источнику дампа следом (тут dump читает текущий /etc/fstab)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@st_re в общем попробовал воспроизвести процедуру по порядку еще раз на чистую с ноля, получил тот же самый эффект с миксом содержимого между /usr2 и /var, и вроде все прозрачно по порядку и внимательности, но где-то парадигма дает сбой)

Собственно это уже спортивный интерес был, т.к. все это тестовый стенд в первую очередь, и целевая задача с расширением /usr в любой случае решена и столь детальная практика по вопросу от вас принята, за что большая благодарность.

 

Не могу не задать такой вопрос - в свое время для резервирования дисков целиком под фрей (как правило от аппаратного выхода из строя, так и поломки логики фс) безотказно выручала простая портовая утилита sysutils/clonehdd на перле, использующая процедуры DUMP\RESTORE, с помощью которой было легко клонировались диски один в один. Но она очень давно перестала поддерживаться и на современных системах с GPT разметкой утратила работоспособность. Никаких ее аналогов на данный момент обнаружить не удалось и почему столь простое и эффективное решение никто не подхватил и не актуализировал - непонятно.

В ОС существует утилита recoverdisk, но она работает посекторно, соответственно процедура несравнимо долгая, чем при использовании DUMP\RESTORE, в особенности при наличии большого количества "пустоты" на диске.

Смогли бы посмотреть, насколько сложно было бы допилить данный инструмент (clonehdd) для унифицированного применения на современных Freebsd?

Изменено пользователем mrrc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

5 hours ago, mrrc said:

безотказно выручала простая портовая утилита sysutils/clonehdd на перле, использующая процедуры DUMP\RESTORE, с помощью которой было легко клонировались диски один в один.

Клонировать 1в1 - dd .... bs=4m status=progress

Клонировать руками - думаю те кто часто это делает просто написали себе скрипты.

Лично у меня это относительно редкая необходимость, этап с разметкой я заскриптовал, а дальше у меня rsync всё что нужно копирует.

Обновление системы (сборка, установка, очистка) у меня тоже заскриптовано, оно все доп порты пересобирает, которые с ядерными модулями и загрузчики обновляет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

11 часов назад, mrrc сказал:

sysutils/clonehdd

Вроде у неё есть наследник: https://www.freshports.org/sysutils/clone

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 час назад, jffulcrum сказал:

Вроде у неё есть наследник: https://www.freshports.org/sysutils/clone

Посмотрел, не совсем очевидные примеры использования, как указать диск-источник и диск-назначение для получения точной копии?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Цитата

Писать в fstab всякие da0p1 - прошлый век

Надо говорить - устаревшая технология

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.