Friday, October 14, 2005

Importance to be FreeBSD (part 2)

    Разделянето на твърдия диск(HDD) е доста по-различно под FreeBSD и затова реших да отделя специална част в моята поредица. За целта ще го сравня с DOS/Linux начина. За да ви е лесно трябва да запомнте:
"UNUX partition" е нещо различно от "DOS/LINUX partition" !
    Сега вече можем да започнем. Linux следва пътя оставен от MS-DOS, при разделянето на диска. Този път обаче е ограничен от PS BIOS. Ето какво имам впредвид. Всяко HDD може да има най-много 4(четири) Primary partitions. Ако искате да имате повече от 4 partitions трябва да използвате hack-a въведен в MS-DOS 3(мисля, че първо там се появява първо). В какво се състои той? Hack-a позволява да се конвертира един от дяловете от Primary в т.н. Extended. Самият Extended от своя страна се разделя на Logical. BIOS-a "вижда" само четири дяла, но на практика можете да имате повече. Ухааа, сложно а? Ще се опитам да илюстрирам:

Най-старата идея


Primary 1
Primary 2
Primary 3
Primary 4

Еволюцията на MS DOS идеята

Primary 1
Primary 2
Primary 3
Extended
Logical 1
Logical 2
Logical 3
etc...

С тази схема на разделяне може да слагате и напасвате различни операционни системи,
но затова са нужни доста дялове, защото трябва да се придържаме към схемата. Един
пример. Да предположим, че искаме да инсталираме Windows 98, Windows 2000 и Linux. Ето и резултата:

Primary 1: Linux /boot
Primary 2: Windows 98
Primary 3: Windows 2000
Extended :
Logical 1: Linux /
Logical 2: Linux /home
Logical 3: Linux /usr
Logical 4: Linux swap
Logical 5: Shared Data


Забелязвате ли прехвърлянето от Primary към Logical. Истината е някъде другаде!
Истинските Unix системи, като *BSD и Solaris използват друга схема на разделяне, която е далеч по-гъвкава и ясна. В PC архитектурата BIOS-a все още разпознава само четири дяла(има и системи, в които този проблем не съществува).
Хм, а как тогава ще се заобиколи проблема? Unix третира всеки Primary partition(Unix въвежда термина - slice) като Extended partition! Тези slice-ве се разделят допълнително за нужните ни дялове, за да разположим директориите. Обърнете внимание, че термина partition в UNIX има друг смисъл - той е дял от slice! Така че, ако трябва да се върнем към горния пример (Windows 98, Windows 2000 и Unix) ще получим следната схема:

Primary 1: Unix slice
Primary 2: Windows 98
Primary 3: Windows 2000
Extended :
Logical 1: Shared Data

В самия UNIX slice се разполагаме удобно:

Primary 1: Unix slice
/boot
/
/home
/usr
/var
/tmp
swap
Primary 2: Windows 98
Primary 3: Windows 2000
Extended :
Logical 1: Shared Data

Ако използвате Linux модела, при пускане на DOS fdisk ще видите 3 Primary и 5 Logical в Extended дяла. Същото ще е и при пускане на Linux fdisk.
Ако пък минете по пътя на UNIX и пуснете DOS fdisk ще видите 3 Primary и 1 Logical в Extended дяла. При пускане на UNIX fdisk виждате същото, но допълнително още се показват и UNIX partitions в UNIX slice-a.

Не мога да кажа, коя идея е по-добра. Сравнявам двата метода, за да обясня по-добре идеята за UNIX slice. За мен лично при UNIX нещата стоят по-добре, една операционна система на едно място, а споделените неща на друго. При DOS/LINUX нещата се смесват, няма ясна граница и лесно може да се обърка човек.
За пълнота ще кажа и няколко думи за именоването. Всеки partition в FreeBSD се идентифицира с букви от a до h. Всеки partition може да съдържа само една файлова система. Ето и таблица на имената на устройствата:

ad ATAPI (IDE) disk
da SCSI direct access disk
acd ATAPI (IDE) CDROM
cd SCSI CDROM
fd Floppy disk


Схемата на съставяне на имената е следната:

(име на устройство)(номер на slice)(partition)


Веднага давам пример:

ad0s1a The first partition (a) on the first slice (s1) on the first IDE disk (ad0).
da1s2e The fifth partition (e) on the second slice (s2) on the second SCSI disk (da1).


Сега запис от вида:

Filesystem Size Used Avail Capacity Mounted on
/dev/ad6s1a 496M 63M 394M 14% /
/dev/ad6s1e 17G 26K 16G 0% /home
/dev/ad6s1d 16G 2.0G 13G 13% /usr
/dev/ad6s1f 1.8G 27M 1.6G 2% /var

ви говори много повече.

No comments:

algorithms (1) cpp (3) cv (1) daily (4) emacs (2) freebsd (4) java (3) javascript (1) JSON (1) linux (2) Lisp (7) misc (8) programming (16) Python (4) SICP (1) source control (4) sql (1) думи (8)