= bubbalog =Дневникът на моето стадо

FreeBSD 8.0 на GPT диск и UFS

Monday 24.05.2010 02:16 EET · Публикувано от в = FreeBSD =

Пътеводител: https://forums.freebsd.org/showthread.php?t=1305

След няколко часа борба и четене на всякакви теми, най-накрая снощи към 4:30 подкарах FreeBSD 8.0 на GPT диск като самостоятелна нормална система, която зарежда от GPT дял. Принципно,след всичко изчетено се съмнявам това наистина да има приложение при нормалните слаби и малки системи като моята, много по-примамливо е изпълнението с ZFS или RAID, но за съжаление няам нито средствата нито сферата на приложение за такава технка. Много ми харесва обаче обещаната сигурност на дяловете на диска която се предлага от GPT. Последните няколко месеца няколко пъти ми се случва да си поправям диска на сървъра и да го връщам от оня свят заради токови удари и това много би ми било харесало като изпълнение ако диска е наистина вече толкова неразрушим.

Нужни пособия:
FreeBSD 8.0 CD1
FreeBSD 8.0 FixIt CD
NFS server или USB с капацитет около 2GB в зависимост от големината на инсталацията

1. Предварителна подготовка

Тъй като инсталацията на GPT дискове все още е в етап на разработка, FreeBSD не разполага с автоматичен инсталатор и пособие за автоматично създаване на дялове и тяхното разпознаване от системата. За да се инсталира FreeBSD на такъв диск първо е нужно да се инсталира на диска съвсем ибикновенна и по стандартния начин система с дялове и наименования на диска.

Следващата стъпка е създаването на бекъп на всеки от дяловете и записването му на NFS сървър или USB. Ако сте избрали NFS е нужно предварително да настроите мрежатам да сложите отетка на NFS Client (да го стартирате, ако не сте рестартирали системата) и да маунтнете отдалечената директория на NFS на вашата машина

# mkdir /backups
# chmod 777 /backups
# nfsiod -n 4
# mount 192.168.100.2:/backups_path /backups
# mkdir /backups_path/GPT

Ако използвате USB просто го маунтнете

# mount_msdosfs /dev/da0s1 /backups

и направете самите бекъпи

# dump -0Lauf – /dev/ad0s1a | bzip2 > /backups_path/GPT/03-root.bz2
# dump -0Lauf – /dev/ad0s1d | bzip2 > /backups_path/GPT/04-var.bz2
# dump -0Lauf – /dev/ad0s1e | bzip2 > /backups_path/GPT/05-tmp.bz2
# dump -0Lauf – /dev/ad0s1f | bzip2 > /backups_path/GPT/06-usr.bz2

2. Създаване на GPT таблица и дялове

От тк натам ще работим с FreeBSD LiveCD дистрибуцията. Заредете сстеата от него и от главното меню изберете FixIt от CD/DVD

Първата стъпка е изтриване на MBR и запис на GPT таблицата (разбира се, преди това трябва да сте затрили съдържанието на диска)

FixIt# gpart create -s gpt ad0
ad0 created

Следва създаване на дяловете нужни за системата

FixIt# gpart add -s 64K -t freebsd-boot ad0
ad0p1 added
FixIt# gpart add -s 512M -t freebsd-swap -l swap0 ad0
ad0p2 added

Тъй като при GPT ограничението за дяловете е 128, създаваме по един дял и за всички останали нужни по подразбиране от FreeBSD – /, /var, /tmp и /usr. Създаването става поетапно, като при посочване на -s опцията за големина на дяла миже да се използва за мерна единица както сектори, така и големината в кило-, мега- и гигабайти, като се напише големината заедно със съответната буква – K, M, G (25K, 19M 10G). Ако не се посочи опцията -s, по подразбиране се създава дял, който започва от първия до поседния незаети сектори на диска.

FixIt# gpart add -s 512M -t freebsd-ufs -l root ad0
ad0p3 added
FixIt# gpart add -s 1G -t freebsd-ufs -l var ad0
ad0p4 added
FixIt# gpart add -s 512M -t freebsd-ufs -l tmp ad0
ad0p5 added
FixIt# gpart add -t freebsd-ufs -l usr ad0
ad0p6 added

Проверка на състоянието на това което сме направили до тук

FixIt# gpart show ad0

Както се вижда, дяловете не са в добре познатия вид as0s1, ad0s2ad0sX, а вече са във вида ad0p1, ad0p2ad0pX.

За да може в последствие системата да зареди от GPT дяла е нужно да се запише и малко информация на зареждащия дял

FixIt# gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptboot -i 1 ad0
ad0 has bootcode

Последната стъпка е форматирането на новите дялове

FixIt# newfs -nL root /dev/ad0p3
FixIt# newfs -nUL usr /dev/ad0p4
FixIt# newfs -nUL var /dev/ad0p5
FixIt# newfs -nUL tmp /dev/ad0p6

3. Ресторване на системата

От тук натам всичко става по добре познатия вече описван и преди начин за възвтъщане на систеата обратно на диска. Като начало трябва да конфигурираме мрежата и да включим NFS client опцията, след което пискаме и самия NFS Client

FixIt# nfsiod -n 4

Следващата стъпка е създаване на директориите нужни за ресторването на дяловете. За целта в /mnt се създават backups, root, var, tmp и usr директориите в които се маунтват вече готовите дялове, и NFS директорията или USB-то с бекъпа на системата.

FixIt# mount 192.168.100.2:/backups_path/GPT /mnt/backups

или

FixIt# mount_msdosfs /dev/da0s1 /mnt/backups

Когато се създава всеки дял неговия етикет се запазва в /dev/ufs. По този начин има 2 варианта да маунтнете новите дялове – директно като устройства или чрез етикетите. Лично аз реших по стар обичай да си работя с устройствата

FixIt# mount /dev/ad0p3 /mnt/root
FixIt# mount /dev/ad0p4 /mnt/var
FixIt# mount /dev/ad0p5 /mnt/tmp
FixIt# mount /dev/ad0p6 /mnt/usr

Аналогично – ето и вариант 2

FixIt# mount /dev/ufs/root /mnt/root
FixIt# mount /dev/ufs/var /mnt/var
FixIt# mount /dev/ufs/tmp /mnt/tmp
FixIt# mount /dev/ufs/usr /mnt/usr

Тъй като темп директорията на живата дистрибуция идва прекалено малка за нуждите на рестора заместваме оригиналната директория с линк към новия темп дял на диска

FixIt# mv tmp/ tmp.old
FixIt# ln -sf /mnt/tmp tmp

Следва същинския рестор на системата

FixIt# cd /mnt/root
FixIt# bzcat /mnt/backups/03-root.bz2 | restore -rf –
FixIt# cd /mnt/var
FixIt# bzcat /mnt/backups/04-var.bz2 | restore -rf –
FixIt# cd /mnt/tmp
FixIt# bzcat /mnt/backups/05-tmp.bz2 | restore -rf –
FixIt# cd /mnt/usr
FixIt# bzcat /mnt/backups/o6-usr.bz2 | restore -rf –

и задължителното редактиране на fstab (намиращ се в момента в /mnt/root/etc), за да може системата да зареди нормално след рестартиране. Редактират се устройствата, като след редакция файла трябва да заприлича на нещо от следния пример

/dev/ad0p2 none swap sw 0 0
/dev/ad0p3 / ufs rw 1 1
/dev/ad0p4 /var ufs rw 2 2
/dev/ad0p5 /tmp ufs rw 2 2
/dev/ad0p6 /usr ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0

Аналогично както и при маунтването, така и тук вместо самите устройства могат да се използват и етикетите на дяловете.

Следва така очаквания рестарт и ако всичко е преминало наред системата би трябвало да зареди без проблеми и видима разлика с предишното си стандартно положение.

* * * * *

P.S.:

1. При започване на цялата сага възникна един много основателен въпрос. Ами как да затрия всичко ако искам диска да си се върне в стандартния MBR режим? Всичко тук става по обратния ред – първо се итриват дяловете, а после системната информация на диска, в противен случай ако се опитате да изтриете директно ad0 ще получите следната грешка

FixIt# gpart destroy ad0
gpart: Device busy
FixIt# gpart show ad0
=> 34 19933 ad0 GPT (9.8M)
34 19933 1 freebsd-ufs (9.7M)
FixIt# gpart delete -i 1 ad0
ad0p1 deleted

FixIt# gpart destroy ad0
ad0 destroyed

2. Ето и една статия за това как зтава всичко при конфигрирането на GPT със ZFS. Признавам че не съм го пробвал, но от тва коет изчетох до тук ми се вижда да е най-читавото упътване. Ако ми остане врме тези дни ще го пробвам и него.

http://wiki.freebsd.org/RootOnZFS/GPTZFSBoot

Остави коментар

Писането на кирилица е задължително!
Коментари, които не са на кирилица ще бъдат изтрити без предупреждение.
Всеки коментари съдържащи 1 или повече линка, ще бъдат публикувани след одобрение.