The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Помогите пожалуйста с разметкой диска во FreeBSD!"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Файловые системы, диски / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Помогите пожалуйста с разметкой диска во FreeBSD!"  +/
Сообщение от zabrat email(ok) on 15-Янв-14, 16:30 
Добрый день! Прошу помочь разобраться с такой ситуацией.
Необходимо задействовать неиспользуемую часть диска FreeBSD.

#gpart show
=>       63  976562055  da0  MBR  (466G)
         63  312592707    1  freebsd  [active]  (149G)
  312592770  663969348       - free -  (317G)

=>        0  312592707  da0s1  BSD  (149G)
          0    2097152      1  freebsd-ufs  (1.0G)
    2097152    4105600      2  freebsd-swap  (2.0G)
    6202752   10440704      4  freebsd-ufs  (5.0G)
   16643456    2097152      5  freebsd-ufs  (1.0G)
   18740608  293841137      6  freebsd-ufs  (140G)
  312581745      10962         - free -  (5.4M)

как видно 317G не задействовано

Пробую создать слайс через Fdisk получаю ошибку

+------------------- Message -------------------+
|ERROR: Unable to write data to disk da0!       |
|                                               |
|To edit the labels on a running system set     |
|sysctl kern.geom.debugflags=16 and try again.  |
+------------------- Message -------------------+

+------------------- Message --------------------+
|Disk partition write returned an error status!  |
+------------------- Message --------------------+

da0 две пятисотки в рэйде, с работающей системой.

Можно ли как-то задействовать это неиспользуемое пространство?
Я так понимаю что ругается на running system.
                                            

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Помогите пожалуйста с разметкой диска во FreeBSD!"  +1 +/
Сообщение от lavr email on 15-Янв-14, 19:52 
>[оверквотинг удален]
> Пробую создать слайс через Fdisk получаю ошибку
> +------------------- Message -------------------+
> |ERROR: Unable to write data to disk da0!    
>   |
> |            
>            
>            
>            
>   |
> |To edit the labels on a running system set    

Для редактирования разделов на работающей системе установите переменную ядра

>  |
> |sysctl kern.geom.debugflags=16 and try again.  |
> +------------------- Message -------------------+

# sysctl kern.geom.debugflags=16

# man 4 geom (find debugflags)

> +------------------- Message --------------------+
> |Disk partition write returned an error status!  |
> +------------------- Message --------------------+
> da0 две пятисотки в рэйде, с работающей системой.
> Можно ли как-то задействовать это неиспользуемое пространство?
> Я так понимаю что ругается на running system.

можно:

# sysctl kern.geom.debugflags=16
# gpart add -t freebsd da0

верхнее означает что все оставшееся место отдается под da0s2 (второй слайс)
если нужно несколько слайсов, задаете размер, затем тоже самое для следующего
слайса (4 max: da0s[1,2,3,4]

пример для нескольких слайсов (с учетом того что у Вас уже есть da0s1):

# gpart add -t freebsd -s 200G da0 (создали слайс da0s2 размером 200GB)
# gpart add -t freebsd da0 (создали слайс da0s3 на все что осталось)


для каждого слайса создаем схему BSD:

# gpart create -s BSD -n 8 da0s2

значение n - какое Вам нужно, сколько партиций, от 8ми до 20 вроде max.

создаем партиции (для каждого слайса):

# gpart add -t freebsd-ufs da0s2 (создаст da0s2a размером на все оставшееся место)

или можно слайс da0s2 разбить на несколько партиций:

# gpart add -t freebsd-ufs -s 100G da0s2
# gpart add -t freebsd-ufs -s 100G da0s2
# gpart add -t freebsd-ufs da0s2

три партиции: da0s2a - 100GB, da0s2d - 100G, da0s2e - все оставшееся меньше 117GB

Все, теперь можно поправить "буквы" партиций (у вас же MBR и схема BSD)
используя bsdlabel, и можно создавать FS: newfs и tunefs.

проверять и править можете используя fdisk - слайсы, bsdlabel - партиции, ну или
вместо gpart можете сразу использовать fdisk и bsdlabel

Ну или в верхнем примере, при создании партиций можете использовать опцию -i
чтобы задать партицию: ( "a" == -i 1 ; "b" (swap) == -i 2 ; "c" - не трогаете,
зарезервировано на описание всего слайса, "d" == -i 4 и тд и тп)

# man gpart
# man fdisk
# man bsdlabel

просмотр:

# gpart show da0
# gpart show da0s1
# gpart show da0s2
...
# fdisk -s da0
или
# fdisk -p da0

# bsdlabel da0s2
# bsdlabel da0s3

редактирование da0s2:

# bsdlabel -e da0s2

Вроде бы все подробно, с примерами и понятно.
Вопросы?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Помогите пожалуйста с разметкой диска во FreeBSD!"  +/
Сообщение от zabrat (ok) on 16-Янв-14, 01:10 
> Вроде бы все подробно, с примерами и понятно.
> Вопросы?

Огромное спасибо всё очень доходчиво. Попробую отпишусь.
Хотел еще спросить, если ли средства чтобы увеличить раздел /usr в счет неиспользуемого пространства? версия системы 8.2

Я вообще это всё затеял потому что место в  /usr закончилось.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Помогите пожалуйста с разметкой диска во FreeBSD!"  +/
Сообщение от zabrat email(ok) on 16-Янв-14, 08:07 
Нашел тему на этом форуме но вопрос так и не раскрыт.
http://www.opennet.dev/openforum/vsluhforumID1/57150.html


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Помогите пожалуйста с разметкой диска во FreeBSD!"  +1 +/
Сообщение от lavr email on 16-Янв-14, 12:42 
> Нашел тему на этом форуме но вопрос так и не раскрыт.
> http://www.opennet.dev/openforum/vsluhforumID1/57150.html

было достаточно тем где вопрос был раскрыт, но найти будет нелегко

Так как с GPT проще, рассмотрим как это в случае с MBR.

для начала man growfs - на данный момент утилита может расширять только НЕсмонтированные
FS.
Значит прежде мы должны расширить партицию, если есть за счет чего, если нет, то расширить
слайса, если есть за счет чего.

Схематично можно нарисовать так:

схема A
------------
HDD
-----------------------
MBR
-----------------------
1 Slice
--------
partition 1 ("a")
partition 2 ("b") swap
partition 3 ("d")
free A
partition 4 ("e")
free B
-----------------------
freeX for slice
-----------------------
END HDD
-----------------------

Из верхней схемы видно что мы можем:
- расширить "d" за счет "free A"
- расширить "e" за счет "freeA" и "free B"

Но мы можем расширить и сам слайс за счет "freeX"
Понятно что если у нас между партициями "a", "b", "d", "e" нет свободного места gap'ов,
и они занимают весь слайс, то сначала нужно расширить слайс: fdisk или gpart.
Схематично это:

схема B
------------
HDD
------------
slice 1
--
part 1
...
part 8
------------
free space
------------
end of HDD
------------

Мы видим что кроме slice 1 есть свободное место, которое можно отдать под slice2,3,4
или расширить slice 1 командной fdisk/gpart.
После расширения объема слайса, у нас будет free space после part 8 и мы ее можем
легко расширить используя bsdlabel/gpart.
И только после этого можно использовать gpart, но FS на part8 НЕ ДОЛЖНА быть
смонтирована!
Вот примерно какая последовательность в общем случае.
Вернемся к схеме A, там между партициями есть свободное место и партиции "d" и "e"
можно расширить за счет FreeA и FreeB не изменяя слайс.

Используя bsdlabel расширяем "d" за счет FreeA, затем выполняем growfs для "d",
аналогично для "e".

Ньюанс, партицию "e" можно расширить "вверх" за счет FreeA, и вниз за счет FreeB.
Расширение "вниз", те (то есть) используя free space идущее ПОСЛЕ партиции,
я производил без проблем.
А вот про использование свободного места до FS - не помню, вроде тоже делал
за счет swap'а.
Это как бы простые стандартные схемы, но можно капельку сложней.
На схеме A, партиции "a","b","d" идут друг за другом без свободного места.
Но если подумать, можно сообразить что "b" Не что иное как swap и за счет него
можно расширить либо "a", либо "d".

Вернемся к вашему случаю:

#gpart show
=>       63  976562055  da0  MBR  (466G)
         63  312592707    1  freebsd  [active]  (149G)
  312592770  663969348       - free -  (317G)

=>        0  312592707  da0s1  BSD  (149G)
          0    2097152      1  freebsd-ufs  (1.0G)
    2097152    4105600      2  freebsd-swap  (2.0G)
    6202752   10440704      4  freebsd-ufs  (5.0G)
   16643456    2097152      5  freebsd-ufs  (1.0G)
   18740608  293841137      6  freebsd-ufs  (140G)
  312581745      10962         - free -  (5.4M)

что мы видим:

da0s1b == "2097152    4105600      2  freebsd-swap  (2.0G)"
И мы смело можем расширить за счет этого swap'а корень == da0s1a или
/usr == da0s1d (4  freebsd-ufs  (5.0G))

Но, у нас slice 1 == da0s1 занимает НЕ ВЕСЬ диск, значит можно и сам слайс расширить
и у нас появится свободное место после da0s1f - которое можно просто отдать под
новый /usr - сделать новую партицию размером больше чем 5GB (расширить слайс на 10/20
и больше Gb) и тогда /usr будет /da0s1g (а на da0s1d - забить или монтировать как /tmp)

Есть другой вариант - создать новый слайс 2 и в нем da0s2d - нужного размера и монтировать
как /usr, а остальное место под другую FS.
Еще вариант: продумать будущую разметку, а слайс da0s2 использовать для бекапа
данных на da0s1, например:

da0s1:
"a" - 1GB
"b" - swap 2GB
"d" - /usr 5GB
"e" - ? 1GB
"f" - 140GB

далее свободное место на 317GB - его хватит чтобы полностью забекапить рабочую систему
и еще останется 317 - (1+2+5+1+140) ~= 167GB

схема
------------------
HDD
------------------
MBR
------------------
slice 1 ~ 150GB
------------------
free
------------------
end of HDD
------------------

хотим изменить slice da0s1 чтобы было:
"a" == 2Gb
"b" == 4GB
"d" == 30GB
"e" == 10GB
"f" == 140GB
------------
2+4+30+10+140 ~= 186 (в принципе еще нужно прибавить ~8% чтобы получить FS такого размера)

Делаем просто, вот такая схема new:

------------------
HDD
------------------
MBR
------------------
slice 1 ~ 150GB
------------------
free 40GB (150 + 40 = 190
------------------
slice 2 == da0s2
копия slice 1
--------
da0s2"a" - 1GB
da0s2"b" - swap 2GB
da0s2"d" - /usr 5GB
da0s2"e" - ? 1GB
da0s2"f" - 140GB
------------
free
------------------
end of HDD
------------------

далее newfs da0s2a/d/e/f - и делаем туда dump или pax или cpio - backup нашего
da0s1, если делать все в Single User, то можно не заморачиваясь

dd if=/dev/da0s1 of=/dev/da0s2 bs=1M

Вот и все, backup готов, далее увеличиваем da0s1 - создаем новые партиции нужного
размера (переразмечаем) и обратно restore/pax/cpio с нашего бекапа на da0s2
на FS нового размера.
Теперь у нас da0s1 стал больше, партиции на нем больше, а da0s2 можно заново
переделать под то что нам нужно.

Этот вариант проще, удобней и надежней, все равно не уйти от Single User - вопрос
только во времени, последний вариант займет больше времени.

Потренируйтесь на виртуалке или на десктопе со свободным диске и далее уже
приступайте к реорганизации реальной системы.

Ничего тут сложного и необычного, только аккуратность.
ps. Верхнее лишь наброски, не принимать как пошаговое howto, возможно очепятки
и ошибки.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Помогите пожалуйста с разметкой диска во FreeBSD!"  +1 +/
Сообщение от lavr email on 16-Янв-14, 12:53 
Чтобы было понятно, в последнем примере:

на нашем диске используется ~150GB под da0s1(a,b,d,e,f) и еще ~317GB free.
Мы отступаем 40-50GB после da0s1 и создаем da0s2 == da0s1.
Копируем da0s1 -> da0s2

HDD
-------------
da0s1
-------------
40-50GB free
-------------
da0s2 == da0s1
для бекапа
-------------
free
-------------

заново переразбиваем da0s1 - увеличиваем на 40-50GB (мы их специально оставили free
между da0s1 и da0s2)
копируем обратно наш backup (но не через dd!!! у нас разные размеры FS, мы же
увеличили da0s1 и партиции на нем)
Все и da0s2 можем удалить, изменить и использовать

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Помогите пожалуйста с разметкой диска во FreeBSD!"  +/
Сообщение от zabrat email(ok) on 17-Янв-14, 11:35 
> увеличили da0s1 и партиции на нем)
> Все и da0s2 можем удалить, изменить и использовать

Спасибо. Сделал образ системы и попробовал увеличить раздел /usr по вашей инструкции (только бэкапил на другой диск). Всё получилось

Еще раз спасибо за подробную инструкцию!

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Помогите пожалуйста с разметкой диска во FreeBSD!"  +/
Сообщение от lavr email on 17-Янв-14, 11:55 
>> увеличили da0s1 и партиции на нем)
>> Все и da0s2 можем удалить, изменить и использовать
> Спасибо. Сделал образ системы и попробовал увеличить раздел /usr по вашей инструкции
> (только бэкапил на другой диск). Всё получилось

В условии не было второго диска

> Еще раз спасибо за подробную инструкцию!

Да не на чем.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру