URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 51397
[ Назад ]

Исходное сообщение
"Перераспределение диска FreeBSD"

Отправлено Nexus , 08-Дек-04 22:06 
Здравствуйте!

Образовалась следующая проблема на FreeBSD 5.2.1:
есть винт, на котором установлена ОС (80Гб) разбитый следующим образом:

Disk: ad0       Partition name: ad0s1   Free: 114877570 blocks (56092MB)

Part      Mount          Size Newfs
----      -----          ---- -----
ad0s1a    <none>        512MB *
ad0s1b    swap          512MB SWAP
ad0s1d    <none>       3200MB *
ad0s1e    <none>      10240MB *
ad0s1f    <none>       1536MB *
ad0s1g    <none>       3200MB *
ad0s1h    <none>       1024MB *

как видно - свободно порядка 56 Гб.
При создании дополнительно раздела для /var/ftp (делаю через /stand/sysinstall -> Configure -> Label -> Create ...)
появляется такая строка:

X         /var/ftp    56092MB UFS2+S Y

то есть не создается раздел (это и есть проблема :-)).

Помогите пожалуйста побороть данную проблему без переустановки ОС (машина - сервер, желательно надолго не стопить её).

Может кто встречал под FreeBSD диск-менеджеры (аналоги Partition Magic), которые позволяют создать дополнительный логический диск?

Заранее спасибо за все ответы...


Содержание

Сообщения в этом обсуждении
"Перераспределение диска FreeBSD"
Отправлено Dmitry U. Karpov , 08-Дек-04 23:26 
fdisk, disklabel, newfs...

"Перераспределение диска FreeBSD"
Отправлено lavr , 09-Дек-04 14:45 
>Здравствуйте!
>
>Образовалась следующая проблема на FreeBSD 5.2.1:
>есть винт, на котором установлена ОС (80Гб) разбитый следующим образом:
>
>Disk: ad0       Partition name: ad0s1  
> Free: 114877570 blocks (56092MB)
>
>Part      Mount      
>    Size Newfs
>----      -----      
>    ---- -----
>ad0s1a    <none>        512MB *
>ad0s1b    swap        
>  512MB SWAP
>ad0s1d    <none>       3200MB *
>ad0s1e    <none>      10240MB *
>ad0s1f    <none>       1536MB *
>ad0s1g    <none>       3200MB *
>ad0s1h    <none>       1024MB *
>
>как видно - свободно порядка 56 Гб.
>При создании дополнительно раздела для /var/ftp (делаю через /stand/sysinstall -> Configure -> Label -> Create ...)
>появляется такая строка:
>
>X         /var/ftp  
> 56092MB UFS2+S Y
>
>то есть не создается раздел (это и есть проблема :-)).
>
>Помогите пожалуйста побороть данную проблему без переустановки ОС (машина - сервер, желательно
>надолго не стопить её).
>
>Может кто встречал под FreeBSD диск-менеджеры (аналоги Partition Magic), которые позволяют создать
>дополнительный логический диск?
>
>Заранее спасибо за все ответы...


учи матчасть, можешь использовать НЕ БОЛЕЕ 4х слайсов, на каждом НЕ БОЛЕЕ
8ми партиций a-h, отсюда вывод: создать второй слайс: ad0s2 и на нем партицию на все 56GB или несколько партиций с НУЖНЫМИ тебе mount-points


"Перераспределение диска FreeBSD"
Отправлено nexus_sv , 10-Дек-04 09:25 
>учи матчасть, можешь использовать НЕ БОЛЕЕ 4х слайсов, на каждом НЕ БОЛЕЕ
>
>8ми партиций a-h, отсюда вывод: создать второй слайс: ad0s2 и на нем
>партицию на все 56GB или несколько партиций с НУЖНЫМИ тебе mount-points
>

Это я уже понял, спасибо :-)) ...
только вот вопрос: как не переустанавливая сервер создать второй слайс? (то есть - уменьшить первый, созданный по ошибке, и на образованном месте создать второй - на 56 Гб)


"Перераспределение диска FreeBSD"
Отправлено co6aka , 10-Дек-04 13:53 
Покажи df -h

"Перераспределение диска FreeBSD"
Отправлено Nexus , 10-Дек-04 19:36 
>Покажи df -h

# df -h

Filesystem    Size   Used  Avail Capacity  Mounted on
/dev/ad0s1a   496M    55M   401M    12%    /
devfs         1.0K   1.0K     0B   100%    /dev
/dev/ad0s1d   3.0G   227M   2.6G     8%    /home
/dev/ad0s1e   9.7G   1.2G   7.7G    13%    /usr
/dev/ad0s1g   3.0G    58M   2.7G     2%    /usr/local/pgsql
/dev/ad0s1f   1.4G   1.2M   1.3G     0%    /usr/local/www
/dev/ad0s1h   989M   3.6M   906M     0%    /var


"Перераспределение диска FreeBSD"
Отправлено lavr , 10-Дек-04 17:51 
>>учи матчасть, можешь использовать НЕ БОЛЕЕ 4х слайсов, на каждом НЕ БОЛЕЕ
>>
>>8ми партиций a-h, отсюда вывод: создать второй слайс: ad0s2 и на нем
>>партицию на все 56GB или несколько партиций с НУЖНЫМИ тебе mount-points
>>
>
>Это я уже понял, спасибо :-)) ...
>только вот вопрос: как не переустанавливая сервер создать второй слайс? (то есть
>- уменьшить первый, созданный по ошибке, и на образованном месте создать
>второй - на 56 Гб)

а на х..я? оставить первый слайс и создать второй, а уж в нем сделать
partitions с НУЖНЫМИ mount-points, к примеру хочется отдельно /usr/ports
и/или /usr/ports/distfiles - никто не запрещает:

предварительно создали /mnt/ports, /mnt/ports/distfiles /mnt/var, /mnt/var/log и тд и тп

затем заделали ad0s2d,e,f,g,h для того что хотим и под них мы уже создалии
выше mount-points временные, затем newfs, затем mount, затем можно
туда развернуть все что нужно из архивов или перекопировать, затем
размонтировать и в /etc/fstab прописать точки монтирования куда
нужно, предварительно почистив или сохранив содержимое этих точек
монтирования.

Простой пример:

допустим у меня переполняются /usr и /var - смотрю за счет чего,
допустим за счет /usr/ports и /var/log

так как на диске есть куча свободного места, я могу сделать
дополнительный слайс и на нем партиции которые будут монтироваться
в /usr/ports, /var/log

предварительно: сохраняю или делаю move нужных директорий (прим, сие
не пройдет для /var/log - там демоны держат много открытых файлов,
с этой директорией лучше в single-user mode, ну да это пример)

допустим перед созданием нужный партиций на ad0s2, беру и создаю
ВРЕМЕННЫЕ mount-point: /mnt/ports и /mnt/log )

дальше создаю ad0s2, в нем партиции ad0s2e - /mnt/ports
и ad0s2f - /mnt/log, далее newfs, монтирую на rw и копирую туда
/usr/ports и /var/log (это в single-user mode)

после чего размонтирую, ухожу в single-user mode, срубаю все демоны
которые держат /var/log и делаю на всякий пожарный move этих директорий:

# mv /usr/ports /usr/ports.orig
# mkdir /usr/ports - пустая
# mv /var/log /var/log.orig
# mkdir /var/log

примечание: предварительно посмотреть chown и chmod /usr/ports и /var/log

теперь вставляю в /etc/fstab:
...
...
/dev/ad0s2e             /usr/ports      ufs     rw           2       2
/dev/ad0s2f             /var/log        ufs     rw           2       2

перед их монтированием, на всякий случай:

# fsck -y /dev/ad0s2e
# fsck -y /dev/ad0s2f
# mount /dev/ad0s2e /usr/ports
# mount /dev/ad0s2e /var/log

возмращаемся в multiuser и смотрим, если все нормально - удаляем
копии /usr/ports.orig - она на другой FS и /var/log.orig - тоже на
другой FS, тем самым освобождаем место.

Другой пример:

допустим у нас ftpd настроен с HOME=/var/ftpd
кладем этот демон, хотим иметь огромный архив FTP:

можем сохранить /var/ftpd, можем убить (все расписано в man ftpd - файлы
и директории и их chown/chmod)

оставляем пустую /var/ftpd, создаем ad0s2e и говорим что в качестве
mount-point /var/ftpd (newfs) - все, имеем огромную FS (хоть все 56GB)
смотированную в /var/ftpd - дальше создаем внутри subdirs и наполняем.

заносим нужную строку в /etc/fstab и запускаем ftpd, проверяем, радуемся

Если все же хочется изменений с ad0s1 - то на работающем сервере
переразбить НИКАК, только backup FS на ad0s1 и затем в single-user mode
переразбивать (backup'ы под рукой).

Важное: все это написано с листа и не может быть использовано как
руководство step-by-step, только как опора с вклшючением мозгов, ничего
сложного и проблематичного в этом нет, сделал backup - дальше экспериментируй вусмерть.


"Перераспределение диска FreeBSD"
Отправлено Nexus , 10-Дек-04 19:58 
>>>учи матчасть, можешь использовать НЕ БОЛЕЕ 4х слайсов, на каждом НЕ БОЛЕЕ
>>>
>>>8ми партиций a-h, отсюда вывод: создать второй слайс: ad0s2 и на нем
>>>партицию на все 56GB или несколько партиций с НУЖНЫМИ тебе mount-points
>>>
>>
>>Это я уже понял, спасибо :-)) ...
>>только вот вопрос: как не переустанавливая сервер создать второй слайс? (то есть
>>- уменьшить первый, созданный по ошибке, и на образованном месте создать
>>второй - на 56 Гб)
>

>а на х..я? оставить первый слайс и создать второй, а уж в
>нем сделать
>partitions с НУЖНЫМИ mount-points,

цитирую lavr "учи матчасть, можешь использовать НЕ БОЛЕЕ 4х слайсов, на каждом НЕ БОЛЕЕ 8ми партиций a-h, отсюда вывод: создать второй слайс: аd0s2 и на нем партицию на все 56GB или несколько партиций с НУЖНЫМИ тебе mount-points"

>к примеру хочется отдельно /usr/ports
>и/или /usr/ports/distfiles - никто не запрещает:
>

...
...
...

>
>Важное: все это написано с листа и не может быть использовано как
>
>руководство step-by-step, только как опора с вклшючением мозгов, ничего
>сложного и проблематичного в этом нет, сделал backup - дальше экспериментируй вусмерть.
>

Огромное спасибо за подробнейшую консультацию, но все это в моем случае не подходит, т.к. невозможно создать партицию:
цитирую первую свою месагу:

"При создании дополнительно раздела для /var/ftp (делаю через /stand/sysinstall -> Configure -> Label -> Create ...)
появляется такая строка:

X         /var/ftp    56092MB UFS2+S Y

то есть не создается раздел (это и есть проблема :-)).

"

ещё раз спасибо за подробнейшее разъяснение


"Перераспределение диска FreeBSD"
Отправлено lavr , 14-Дек-04 19:20 
>>>>учи матчасть, можешь использовать НЕ БОЛЕЕ 4х слайсов, на каждом НЕ БОЛЕЕ
>>>>
>>>>8ми партиций a-h, отсюда вывод: создать второй слайс: ad0s2 и на нем
>>>>партицию на все 56GB или несколько партиций с НУЖНЫМИ тебе mount-points
>>>>
>>>
>>>Это я уже понял, спасибо :-)) ...
>>>только вот вопрос: как не переустанавливая сервер создать второй слайс? (то есть
>>>- уменьшить первый, созданный по ошибке, и на образованном месте создать
>>>второй - на 56 Гб)
>>
>
>>а на х..я? оставить первый слайс и создать второй, а уж в
>>нем сделать
>>partitions с НУЖНЫМИ mount-points,
>
>цитирую lavr "учи матчасть, можешь использовать НЕ БОЛЕЕ 4х слайсов, на каждом
>НЕ БОЛЕЕ 8ми партиций a-h, отсюда вывод: создать второй слайс: аd0s2
>и на нем партицию на все 56GB или несколько партиций с
>НУЖНЫМИ тебе mount-points"
>
>>к примеру хочется отдельно /usr/ports
>>и/или /usr/ports/distfiles - никто не запрещает:
>>
>
>...
>...
>...
>
>>
>>Важное: все это написано с листа и не может быть использовано как
>>
>>руководство step-by-step, только как опора с вклшючением мозгов, ничего
>>сложного и проблематичного в этом нет, сделал backup - дальше экспериментируй вусмерть.
>>
>
>Огромное спасибо за подробнейшую консультацию, но все это в моем случае не
>подходит, т.к. невозможно создать партицию:
>цитирую первую свою месагу:
>
>"При создании дополнительно раздела для /var/ftp (делаю через /stand/sysinstall -> Configure -> Label -> Create ...)
>появляется такая строка:
>
>X         /var/ftp  
> 56092MB UFS2+S Y
>
>то есть не создается раздел (это и есть проблема :-)).
>
>"
>
>ещё раз спасибо за подробнейшее разъяснение


читай handbook до просветления, пока не поймешь что есть слайс и что
есть партиция и что есть mount-point.

Соль: было отписано следующее

есть слайс adXs1 на котором задействованы ВСЕ партиции, но на диске
тем не менее осталось свободное место. Как его задействовать не роняя
систему...

Ответ: под слайс ad0s1 был вероятно отдан ВЕСЬ диск, а место использовано
НЕ ВСЕ, что нужно сделать - посмотреть fdisk/disklable/bsdlabel используемые адреса секторов (на свой страх и риск, лучше сделать backup - береженого бог бережет), по информации из disklabel произвести расчеты для fdisk, изменить в fdisk размер слайса ad0s1 - уменьшить, а свободное не распределенное пространство затем можно использовать уже
для создания второго слайса ad0s2 и партиций на нем.
Можно даже смело заложиться на 50-100MB при таких размерах, все это
можно сделать на РАБОТАЮЩЕЙ системе, разумеется man fdisk, man disklabel
и очень четко посчитать размеры для fdisk и воспользоваться опцией -t

итого:
1) disklable - посмотреть c объем и где заканчивается последняя
партиция, посмотреть fdisk - совпадает полный объем с размером c, если
да, то весь диск отдан под слайс: рассчитать и изменить c
2) изменить fdisk
Верхние два пункта - только руками: disklabel и fdisk + куркулятор
теперь можно и /stand/sysinstall
3) созадть второй слайс ad0s2 и отдать под него все
4) создать партиции с нужными mount-point (директории mount-point
должны уже существовать: mkdir)
5) newfs
6) mount

Фсё.

FreeBSD Дисковая архитектура:

возможно создать 4'е слайса:

ad0s1 (на каждом слайсе по 8'мь партиций от a до h, где a - by default root, b - swap, а c зарезервировано под описание всего диска)
ad0s2 ...
ad0s3 ...
ad0s4 ...

иной вариант: man growfs - но это ВНУТРИ одного слайса и подразумевается
что партиция смежная с пустым местом


"Перераспределение диска FreeBSD"
Отправлено Nexus , 15-Дек-04 21:03 
>читай handbook до просветления, пока не поймешь что есть слайс и что
>
>есть партиция и что есть mount-point.
>
>Соль: было отписано следующее
>
>есть слайс adXs1 на котором задействованы ВСЕ партиции, но на диске
>тем не менее осталось свободное место. Как его задействовать не роняя
>систему...
>
>Ответ: под слайс ad0s1 был вероятно отдан ВЕСЬ диск, а место использовано
>
>НЕ ВСЕ, что нужно сделать - посмотреть fdisk/disklable/bsdlabel используемые адреса секторов (на
>свой страх и риск, лучше сделать backup - береженого бог бережет),
>по информации из disklabel произвести расчеты для fdisk, изменить в fdisk
>размер слайса ad0s1 - уменьшить, а свободное не распределенное пространство затем
>можно использовать уже
>для создания второго слайса ad0s2 и партиций на нем.
> Можно даже смело заложиться на 50-100MB при таких размерах, все это
>
>можно сделать на РАБОТАЮЩЕЙ системе, разумеется man fdisk, man disklabel
>и очень четко посчитать размеры для fdisk и воспользоваться опцией -t
>
>итого:
>1) disklable - посмотреть c объем и где заканчивается последняя
>партиция, посмотреть fdisk - совпадает полный объем с размером c, если
>да, то весь диск отдан под слайс: рассчитать и изменить c
>2) изменить fdisk
>Верхние два пункта - только руками: disklabel и fdisk + куркулятор
>теперь можно и /stand/sysinstall
>3) созадть второй слайс ad0s2 и отдать под него все
>4) создать партиции с нужными mount-point (директории mount-point
>должны уже существовать: mkdir)
>5) newfs
>6) mount
>
>Фсё.
>
>FreeBSD Дисковая архитектура:
>
>возможно создать 4'е слайса:
>
>ad0s1 (на каждом слайсе по 8'мь партиций от a до h, где
>a - by default root, b - swap, а c зарезервировано
>под описание всего диска)
>ad0s2 ...
>ad0s3 ...
>ad0s4 ...
>
>иной вариант: man growfs - но это ВНУТРИ одного слайса и подразумевается
>
>что партиция смежная с пустым местом


Всё понятно :-))
Огромное спасибо за подробнейшее разъяснение ...


"Перераспределение диска FreeBSD"
Отправлено nexus_sv , 12-Дек-04 19:34 
>Заранее спасибо за все ответы...

Ниужели никто не знает решения данной проблемы ?


"Перераспределение диска FreeBSD"
Отправлено gyn61 , 12-Дек-04 22:51 
>>Заранее спасибо за все ответы...
>
>Ниужели никто не знает решения данной проблемы ?

Самое быстрое (но не самое простое) решение:
1. Найти и прочитать инфу по устройству MBR и таблице разделов;
2. Взять любой нормальный шестнадцатеричный редактор и уменьшить размер первого слайса как нужно (это изменить несколько байт);
3. Создать второй слайс.

Естественно перед этим надо все правильно рассчитать. Но это уже обычная арифметика ;)


"Перераспределение диска FreeBSD"
Отправлено Nexus , 14-Дек-04 17:52 
>Самое быстрое (но не самое простое) решение:
>1. Найти и прочитать инфу по устройству MBR и таблице разделов;
>2. Взять любой нормальный шестнадцатеричный редактор и уменьшить размер первого слайса как
>нужно (это изменить несколько байт);
>3. Создать второй слайс.
>
>Естественно перед этим надо все правильно рассчитать. Но это уже обычная арифметика
>;)

А это не понесет за собой всяческие потери информации или проблемы с монтированием/дисмонтированием при перегрузке/отключении?
Не хочется просто экспериментировать на сервере, а другой машины просто нет :-(
--
Спасибо большое за предоставленный вариант решения :-)
Если возникнут ещё идеи - буду рад!


"Перераспределение диска FreeBSD"
Отправлено lavr , 14-Дек-04 19:35 
>>>Заранее спасибо за все ответы...
>>
>>Ниужели никто не знает решения данной проблемы ?
>
>Самое быстрое (но не самое простое) решение:

оно единственное если под слайс отдан весь диск, про то что
в freebsd можно четыре слайса иметь, парню ответили, он мог бы
и пошевелить немного мозгами

>1. Найти и прочитать инфу по устройству MBR и таблице разделов;
>2. Взять любой нормальный шестнадцатеричный редактор и уменьшить размер первого слайса как
>нужно (это изменить несколько байт);

все можно встроенными средствами fdisk + disklabel,

>3. Создать второй слайс.
>
>Естественно перед этим надо все правильно рассчитать. Но это уже обычная арифметика
>;)

истинно так

Как вариант:

# cd /usr/ports
# make search key=partition | less

можно найти инструментарий и придумать еще варианты.

Самый безопасный (самый долгий):

1) взять второй диск такого размера чтобы на него влез используемый слайс
2) присоединить к рабочей машине (первая перезагрузка)
3) сделать на нем слайс с партициями аналогично оригиналу (fdisk/disklabel/newfs)
4) сдампить туда все FS оригинала, установить загрузчик, и изменить
fstab - перезагрузиться с нового диска (вторая перезагрузка)
5) оригинальный диск - переразбить: сколько нужно слайсов (fdisk/disklabel/newfs)
6) сдампить все обратно (новые FS не должны быть меньше старых!)
7) снова изменить fstab, не забыть загрузчик, перегружаемся (третья перезагрузка)

Фсё.


"Перераспределение диска FreeBSD"
Отправлено Nexus , 15-Дек-04 21:06 
>оно единственное если под слайс отдан весь диск, про то что
>в freebsd можно четыре слайса иметь, парню ответили, он мог бы
>и пошевелить немного мозгами

Тут Вы не правы, это я сразу и понял, просто не был уверен, что нет никаких програмных средств переразбиения дисков (что-то вроде Partition Magic), собственно за этим в форум и обратился.

>
>>1. Найти и прочитать инфу по устройству MBR и таблице разделов;
>>2. Взять любой нормальный шестнадцатеричный редактор и уменьшить размер первого слайса как
>>нужно (это изменить несколько байт);
>
>все можно встроенными средствами fdisk + disklabel,
>
>>3. Создать второй слайс.
>>
>>Естественно перед этим надо все правильно рассчитать. Но это уже обычная арифметика
>>;)
>
>истинно так
>
>Как вариант:
>
># cd /usr/ports
># make search key=partition | less
>
>можно найти инструментарий и придумать еще варианты.
>
>Самый безопасный (самый долгий):
>
>1) взять второй диск такого размера чтобы на него влез используемый слайс
>
>2) присоединить к рабочей машине (первая перезагрузка)
>3) сделать на нем слайс с партициями аналогично оригиналу (fdisk/disklabel/newfs)
>4) сдампить туда все FS оригинала, установить загрузчик, и изменить
>fstab - перезагрузиться с нового диска (вторая перезагрузка)
>5) оригинальный диск - переразбить: сколько нужно слайсов (fdisk/disklabel/newfs)
>6) сдампить все обратно (новые FS не должны быть меньше старых!)
>7) снова изменить fstab, не забыть загрузчик, перегружаемся (третья перезагрузка)
>
>Фсё.

Спасибо большое за предложенный вариант решения - в ближайшие выходные опробую.