Здравствуйте!Образовалась следующая проблема на 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), которые позволяют создать дополнительный логический диск?
Заранее спасибо за все ответы...
fdisk, disklabel, newfs...
>Здравствуйте!
>
>Образовалась следующая проблема на 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
>учи матчасть, можешь использовать НЕ БОЛЕЕ 4х слайсов, на каждом НЕ БОЛЕЕ
>
>8ми партиций a-h, отсюда вывод: создать второй слайс: ad0s2 и на нем
>партицию на все 56GB или несколько партиций с НУЖНЫМИ тебе mount-points
>Это я уже понял, спасибо :-)) ...
только вот вопрос: как не переустанавливая сервер создать второй слайс? (то есть - уменьшить первый, созданный по ошибке, и на образованном месте создать второй - на 56 Гб)
Покажи df -h
>Покажи 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
>>учи матчасть, можешь использовать НЕ БОЛЕЕ 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 - дальше экспериментируй вусмерть.
>>>учи матчасть, можешь использовать НЕ БОЛЕЕ 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
то есть не создается раздел (это и есть проблема :-)).
"
ещё раз спасибо за подробнейшее разъяснение
>>>>учи матчасть, можешь использовать НЕ БОЛЕЕ 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 - но это ВНУТРИ одного слайса и подразумевается
что партиция смежная с пустым местом
>читай 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 - но это ВНУТРИ одного слайса и подразумевается
>
>что партиция смежная с пустым местом
Всё понятно :-))
Огромное спасибо за подробнейшее разъяснение ...
>Заранее спасибо за все ответы...Ниужели никто не знает решения данной проблемы ?
>>Заранее спасибо за все ответы...
>
>Ниужели никто не знает решения данной проблемы ?Самое быстрое (но не самое простое) решение:
1. Найти и прочитать инфу по устройству MBR и таблице разделов;
2. Взять любой нормальный шестнадцатеричный редактор и уменьшить размер первого слайса как нужно (это изменить несколько байт);
3. Создать второй слайс.Естественно перед этим надо все правильно рассчитать. Но это уже обычная арифметика ;)
>Самое быстрое (но не самое простое) решение:
>1. Найти и прочитать инфу по устройству MBR и таблице разделов;
>2. Взять любой нормальный шестнадцатеричный редактор и уменьшить размер первого слайса как
>нужно (это изменить несколько байт);
>3. Создать второй слайс.
>
>Естественно перед этим надо все правильно рассчитать. Но это уже обычная арифметика
>;)А это не понесет за собой всяческие потери информации или проблемы с монтированием/дисмонтированием при перегрузке/отключении?
Не хочется просто экспериментировать на сервере, а другой машины просто нет :-(
--
Спасибо большое за предоставленный вариант решения :-)
Если возникнут ещё идеи - буду рад!
>>>Заранее спасибо за все ответы...
>>
>>Ниужели никто не знает решения данной проблемы ?
>
>Самое быстрое (но не самое простое) решение:оно единственное если под слайс отдан весь диск, про то что
в 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 можно четыре слайса иметь, парню ответили, он мог бы
>и пошевелить немного мозгамиТут Вы не правы, это я сразу и понял, просто не был уверен, что нет никаких програмных средств переразбиения дисков (что-то вроде 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, не забыть загрузчик, перегружаемся (третья перезагрузка)
>
>Фсё.Спасибо большое за предложенный вариант решения - в ближайшие выходные опробую.