The OpenNET Project / Index page

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



"Раздел полезных советов: Установка FreeBSD на терабайтный ди..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Установка FreeBSD на терабайтный ди..."  +/
Сообщение от auto_tips (?), 27-Апр-09, 21:56 
Решение проблемы с неправильной геометрией диска при попытке поставить FreeBSD на жёсткий диск,
на который не получалось поставить систему штатной утилитой sysinstall.
При переносе системы на терабайтник и написании статьи использовались материалы по следующим ссылкам:
   http://m8d.de/news/freebsd-on-gpt.php
   http://www.lissyara.su/?id=1704

Возникла у меня как-то необходимость заменить в домашнем сервере, который работает
под управлением ОС FreeBSD 7.1 Release, жёсткий диск Samsung SP0411N (40GB,
IDE) на Seagate ST31000333AS (1TB, SATAII). Материнская плата, установленная на сервере -
Asus P5V800-MX (чипсет VIA), поддерживает HDD IDE, SATA и SATAII.
Не долго думая, отключил старый винт, подсоединил новый, вставил в привод DVD
с FreeBSD, запустил установку и... столкнулся с сообщением об ошибке от утилиты fdisk, которой показалось, что
диск имеет неправильную геометрию.
Для меня так и осталось загадкой, что же не понравилось этой утилите в моём новом HDD. Судя по хэндбуку,
ОС должна нормально работать с разделами до 2TB.
Позадавав вопросы на разнообразных форумах, решил попробовать использовать GPT.

Итак, к делу:

1. Подготовка

Загружаюсь со старого диска, на который установлена FreeBSD 7.1 Release при подключенном
новом терабайтнике. У меня в ядре уже была включена поддержка GPT, но
перед работой проверьте в конфигурации ядра наличие строчки

   options GEOM_GPT

терабайтник у меня определился как ad4 (а как определился Ваш, можно посмотреть в файле /var/run/dmesg.boot).


2. Создаю схему разметки GPT

Зашёл под рутом и дал команду

   gpart create -s GPT ad4

Этой командой я создал схему разметки GPT на провайдере, а провайдером в данном случае выступает ad4,
то есть мой новый диск.
Теперь я дам команду gpart show, которая покажет информацию о GPT в системе,
в моём случае покажет, что диск свободен, начинается с 34 и имеет размером какое-то
страшное число логических блоков, которое тут же и в Гб указывается. В процессе
разметки диска я буду эту команду постоянно использовать, так что будьте готовы.


3. Создаю разделы

Теперь создам загрузочный раздел:

   gpart add -b 34 -s 16 -t freebsd-boot ad4

эта команда создала раздел, начиная с логического блока 34, размером в 16 логических блоков, имеющий тип
freebsd-boot и размещающийся на ad4, только ad4 в документации теперь называется не "провайдер", а уже Geom.

Создаем остальные разделы:

   gpart add -b 50 -s 2097152 -t freebsd-ufs ad4

этой командой я создал раздел для корневой файловой системы размером в 1 Гб, то есть
раздел начинается с логического блока 50 и занимает 2097152 логических блока. Число,
с которого должен начинаться следующий раздел берём из вывода команды gpart show
(просто смотрим там, с какого блока начинается свободное место), а сколько блоков надо
на один Гб, я выяснил, разделив количество блоков на количество Гб на диске
(эти данные тоже можно посмотреть в выводе команды gpart show).

   gpart add -b 2097202 -s 8388608 -t freebsd-swap ad4

это 4 Гб под swap (объём свопа я задал, умножив количество имеющейся у меня в сервере оперативки на 2).

   gpart add -b 10485810 -s 8388608 -t freebsd-ufs ad4

это 4 Гб под /tmp - с большим запасом. Я запасливый.

   gpart add -b 18874418 -s 20971520 -t freebsd-ufs ad4

это 10 Гб под /var на случай разрастания логов.

   gpart add -b 39845938 -s 1913679197 -t freebsd-ufs ad4

и всё остальное под /usr.

После этих манипуляций вывод команды gpart show у меня стал такой:

   => 34 1953525101 ad4 GPT (932G)
   34 16 1 freebsd-boot (8.0K)
   50 2097152 2 freebsd-ufs (1.0G)
   2097202 8388608 3 freebsd-swap (4.0G)
   10485810 8388608 4 freebsd-ufs (4.0G)
   18874418 20971520 5 freebsd-ufs (10G)
   39845938 1913679197 6 freebsd-ufs (913G)

То есть я получил такое размещение разделов на диске:

   Раздел Тип Размер Файловая система
   ad4p1 freebsd-boot 8KB -
   ad4p2 freebsd-ufs 1GB /
   ad4p3 freebsd-swap 4GB /swap
   ad4p4 freebsd-ufs 4GB /tmp
   ad4p5 freebsd-ufs 10GB /var
   ad4p6 freebsd-ufs 913GB /usr

4. Делаю диск загрузочным

   gpart bootcode -b /dist/boot/pmbr ad4

Теперь запишу в загрузочный код загрузчик FreeBSD:

   cp /boot/gptboot /tmp
   dd if=/dev/zero bs=641 count=1 >> /tmp/gptboot

И запишу загрузочный код в загрузочный сектор:

   dd if=/tmp/gptboot of=/dev/ad4p1 bs=512

5. Инициализирую разделы

Дальше созданные разделы необходимо подготовить для работы, то
есть проинициализировать.
Итак, команды:

   newfs -O2 /dev/ad4p2 (12)
   newfs -O2 -U /dev/ad4p4 (13)
   newfs -O2 -U /dev/ad4p5 (14)
   newfs -O2 -U /dev/ad4p6 (15)

P.S. Хочу отметить, что вместо команды gpart можно было попробовать воспользоваться командой gpt.

6. Переношу систему на новый жёсткий диск

В качестве подготовки к переносу создал каталоги /mnt/root, /mnt/var и
/mnt/usr:

   mkdir /mnt/root; mkdir /mnt/var; mkdir /mnt/usr (16)

смонтировал туда новые разделы:

   mount /dev/ad4p2 /mnt/root
   mount /dev/ad4p5 /mnt/var
   mount /dev/ad4p6 /mnt/usr

И непосредственно перенос системы:

   cd /; pax -p eme -X -rw . /mnt/root (20)
   cd /var; pax -p eme -X -rw . /mnt/var (21)
   cd /usr; pax -p eme -X -rw . /mnt/usr (22)

Теперь редактирую файл /etc/fstab (на новом диске названия разделов не те, что
на старом, так что система при загрузке с терабайтника попытается смонтировать те разделы, которые были на старом диске.

У меня получился вот такой файл:

   # Device Mountpoint FStype Options Dump Pass#
   /dev/ad4p3 none swap sw 0 0
   /dev/ad4p2 / ufs rw 1 1
   /dev/ad4p4 /tmp ufs rw 2 2
   /dev/ad4p6 /usr ufs rw 2 2
   /dev/ad4p5 /var ufs rw 2 2
   /dev/acd0 /cdrom cd9660 ro,noauto 0 0

Выключаю сервер командой shutdown -p now и отключаю старый диск.

7. Заключение

После включения у меня всё заработало как надо, кроме mysql, потому что его сокет лежал в /tmp,
а во время переноса на директорию /tmp изменились права. Починил командой
   chmod 1777 /tmp

Ну и всё. Удачи!


URL: http://www.opennet.dev/soft/FreeBSD_GPT.pdf
Обсуждается: http://www.opennet.dev/tips/info/2047.shtml

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

Оглавление

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


1. "Установка FreeBSD на терабайтный диск с которым не работал sysinstall"  +/
Сообщение от Shinkei aka HepBemail (?), 27-Апр-09, 21:56 
Неплохой ман по GPT. На самом деле станно, что система не поняла ТБ. Обычно fdisk, bsdlabel и иже с ними сливаются реально только на каких нибудь рейдах более 2ТБ.
Ответить | Правка | Наверх | Cообщить модератору

2. "Установка FreeBSD на терабайтный диск с которым не работал sysinstall"  +/
Сообщение от Alex Deiter (?), 27-Апр-09, 23:33 
Проблемы с определением геометрии диска у fdisk действительно есть.
Я даже когда патч писал. Что-то вроде:

--- sbin/fdisk/fdisk.c.orig     Thu May 31 17:52:24 2005
+++ sbin/fdisk/fdisk.c  Mon Dec 17 18:16:51 2005
@@ -844,7 +847,19 @@
        error = ioctl(fd, DIOCGMEDIASIZE, &o);
        if (error == 0) {
                disksecs = o / u;
-               cyls = dos_cyls = o / (u * dos_heads * dos_sectors);
+               cyls = dos_cyls = o / (u * heads * sectors);
+               if (cyls > 1023 && heads > 16 && sectors > 63)
+                       return (disksecs);
+               if (cyls > 1023 || heads > 255 || sectors > 63) {
+                       sectors = dos_sectors = 63;
+                       heads = dos_heads = 16;
+                       cyls = dos_cyls = o / (u * heads * sectors);
+                       if (cyls > 1023) {
+                               heads = dos_heads = 255;
+                               cyls = dos_cyls = o / (u * heads * sectors);
+                       }
+                       dos_cylsecs = cylsecs = heads * sectors;
+               }
        }

        return (disksecs);

Но сейчас, когда есть gpart, format/bsdlabel не нужны.

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

3. "Установка FreeBSD на терабайтный диск с которым не работал s..."  +/
Сообщение от toremail (??), 28-Апр-09, 13:58 
Попросите закомиттеть в  исходники патч. Не всегда есть под рукой диск с установленной системой а с сидирома проделать такие операции проблематично.
>[оверквотинг удален]
>+            
>          
>dos_cylsecs = cylsecs = heads * sectors;
>+            
>   }
>        }
>
>        return (disksecs);
>
>Но сейчас, когда есть gpart, format/bsdlabel не нужны.

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

4. "Установка FreeBSD на терабайтный диск с которым не работал sysinstall"  +/
Сообщение от dvg_lab (ok), 29-Апр-09, 11:07 
интересно поддержка GPT в sysinstall когданить появится?
Ответить | Правка | Наверх | Cообщить модератору

5. "Раздел полезных советов: Установка FreeBSD на терабайтный ди..."  +/
Сообщение от Аноним (-), 30-Апр-09, 01:45 
О господи, кто-то все еще использует CHS-адресацию вместо LBA?Какое ретроградство!
Ответить | Правка | Наверх | Cообщить модератору

6. "не загружается с нового винта"  +/
Сообщение от Triemail (?), 26-Май-10, 13:37 
Делал
gpart bootcode -b /dist/boot/pmbr ad4
gpart bootcode -p /boot/gptboot -i 1 ad4
с винта не загружается - биос пишет что нет загружаемого устройства
пробывал
cp /boot/gptboot /tmp
dd if=/dev/zero bs=641 count=1 >> /tmp/gptboot
dd if=/tmp/gptboot of=/dev/ad4p1 bs=512
в последней строке вылезло сообщение что /dev/ad4p1 invalid argument
и так же не загружается с этого винта(
Кто-нибудь сталкивался с подобным?
Ответить | Правка | Наверх | Cообщить модератору

7. "Установка FreeBSD на терабайтный диск с которым не работал sysinstall"  +/
Сообщение от LOMONOSOVemail (ok), 20-Окт-10, 10:14 
Хороший MAN
Спасибо
Ответить | Правка | Наверх | Cообщить модератору

8. "Установка FreeBSD на терабайтный диск с которым не работал sysinstall"  +/
Сообщение от nagualemail (ok), 13-Дек-11, 00:49 
В этой строке либо ошибка
gpart add -b 34 -s 16 -t freebsd-boot ad4
либо размер блока может быть разным.
В моём случае со старым сказёвым винтом:
gpart add -b 34 -s 256 -t freebsd-boot ad4
Ответить | Правка | Наверх | Cообщить модератору

9. "Установка FreeBSD на терабайтный диск с которым не работал sysinstall"  +/
Сообщение от alexemail (??), 15-Сен-20, 19:10 
только что угробил на ту тему день. :) короче - можнго и не gpt(у меня биос как раз не умел), достаточно вместо mbr/dos type указать bsd type для винта - и все работает. то есть во время разметки - в  описании самого винта - modify - и выбираем bsd. далее - безслайсовая структура, просто перечень разделов. все встало и загрузилось.
Ответить | Правка | Наверх | Cообщить модератору

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

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




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

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