2.3 2005-08-25
Introducere în Dispozitive Bloc Dispozitive Bloc

Vom arunca o privire atentă asupra aspectelor în legătură cu discurile din Gentoo Linux şi Linux, în general, incluzând sistemele de fişiere, partiţii şi dispozitive bloc. Apoi, odată ce vă familiarizaţi cu toate aspectele despre discuri şi sisteme de fişiere, veţi fi ghidaţi prin procesul de setare al partiţiilor şi sistemelor de fişiere pentru instalarea dvs. de Gentoo Linux.

Pentru a începe, vom face introducerea dispozitivelor bloc. Cel mai renumit dispozitive bloc este probabil cel care reprezintă primul hard-disk SCSI într-un sistem Linux, şi anume /dev/sda.

Dispozitivele bloc amintite mai sus, reprezintă o interfaţă abstractă pentru disc. Programele utilizator pot folosi aceste dispozitive bloc pentru a interacţiona cu discul dvs. fără a avea grija dacă hard-disk-urile sunt IDE, SCSI sau altceva. Programul poate adresa ceea ce urmează să se stocheze pe disc ca o mulţime continuă de blocuri de 512 octeţi accesibile aleator.

Slice-uri

Deşi este teoretic posibil să utilizăm un disc întreg pentru a găzdui sistemul dvs. Linux, acesta este un lucru foarte rar pus în practică. În loc, dispozitivele bloc întregi sunt împărţite în dispozitive bloc mai mici şi mai uşor de manipulat. Pe sistemele Alpha, acestea sunt numite slice-uri.

Proiectarea unei Scheme de Partiţionare Schema de Partiţionare Implicită

Ca exemplu utilizăm următoarea schemă de slice-uri:

/dev/sda1Slice-ul pentru Swap/dev/sda2Slice-ul pentru Rădăcină/dev/sda3Discul întreg (necesar)
Slice Descriere

Dacă vă interesează cât de mare ar trebui să fie o partiţie, sau chiar câte partiţii (sau volume) aveţi nevoie, citiţi mai departe. Altfel, continuaţi cu Utilizarea fdisk pentru partiţionarea Discului (doar SRM) sau Utilizarea fdisk pentru partiţionarea Discului (doar ARC/AlphaBIOS).

Cât de Multe şi Cât de Mari?

Numărul de partiţii este în foarte mare măsură dependent de mediul dvs. Spre exemplu, dacă aveţi un număr foarte mare de utilizatori, cel mai probabil veţi dori să aveţi directorul /home separat, deoarece sporeşte securitatea şi facilitează operaţiile de backup. Dacă instalaţi Gentoo ca server de mail, directorul dvs. /var ar trebui să fie separat, pentru că toate mail-urile sunt stocate în /var. O bună alegere a sistemului de fişiere va mări la maxim performanţele. Serverele de jocuri vor avea o partiţie /opt separată, deoarece majoritatea aplicaţiilor server pentru jocuri sunt instalate acolo. Motivul este similar cu cel pentru /home: securitate şi backup. Veţi dori în mod sigur să vă păstraţi /usr mare: nu numai că va conţine majoritatea aplicaţiilor, dar numai structura Portage ocupă în jur de 500 MOcteţi, excluzând sursele ce sunt stocate în acesta.

După cum puteţi observa, depinde foarte mult scopul pe care doriţi să-l atingeţi. Partiţii sau volume separate au următoarele avantaje:

  • Puteţi alege cel mai performant sistem de fişiere pentru fiecare partiţie sau volum
  • Întregul sistem nu poate rămâne fără spaţiu liber dacă o aplicaţie nefuncţională scrie în continuu fişiere pe o partiţie sau volum
  • Dacă este necesar, verificările sistemului de fişiere sunt reduse ca timp, deoarece se pot executa mai multe verificări în paralel (deşi acest avantaj este mai mare în cazul discurilor multiple, decât în cel al partiţiilor multiple)
  • Securitatea poate fi îmbunătăţită prin mount-area unor partiţii sau volume doar pentru citire, în mod nosuid (biţii setuid sunt ignoraţi), noexec (biţii pentru execuţie sunt ignoraţi), etc.

În orice caz, partiţiile multiple au un mare dezavantaj: dacă nu sunt configurate corect, pot cauza ca un sistem să aibă foarte mult loc liber pe o partiţie şi fără loc liber pe alta.

Utilizarea fdisk pentru a vă partiţiona discul (doar SRM)

Următoarele părţi explică modul de creare a schemei de slice-uri exemplu, descrisă anterior, mai exact:

/dev/sda1Slice pentru Swap/dev/sda2Slice pentru Rădăcină/dev/sda3Tot discul (necesar)
Slice Descriere

Schimbaţi schema de de partiţionare în concordanţă cu propriile preferinţe.

Indentificarea Discurilor Disponibile

Pentru a determina care discuri sunt disponibile, utilizaţi următoarele comenzi:

 # dmesg | grep 'drive$'       (Pentru discurile IDE)
# dmesg | grep 'scsi'          (Pentru discurile SCSI)

Din ceea ce vă va fi afişat ar trebui să vedeţi care discuri sunt detectate şi intrarea corespondentă din /dev. În următoarele părţi presupunem că discul este unul SCSI ca /dev/sda.

Acum, rulaţi fdisk:

# fdisk /dev/sda
Ştergerea tuturor slice-urilor

Dacă discul dvs. este complet gol, atunci va trebui să creaţi, mai întâi, informaţia BSD disklabel.

Command (m for help): b
/dev/sda contains no disklabel.
Do you want to create a disklabel? (y/n) y
O mulţime de informaţii specifice dispozitivului vor fi afişate aici
3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]                                    
  c:        1      5290*     5289*    unused        0     0

Vom începe cu ştergerea tuturor slice-urilor în afara slice-ului 'c' (o necesitate în cazul utilizării BSD Disklabel). Urmează modalitatea de ştergere a unui slice (în exemplu vom folosi 'a'). Repetaţi procesul pentru a şterge toate celelalte slice-uri (din nou, exceptând slice-ul 'c').

Utilizaţi p pentru a vizualiza toate slice-urile existente. d este utilizat pentru a şterge un slice.

BSD disklabel command (m for help): p

8 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]                                    
  a:        1       235*      234*    4.2BSD     1024  8192    16
  b:      235*      469*      234*      swap
  c:        1      5290*     5289*    unused        0     0
  d:      469*     2076*     1607*    unused        0     0
  e:     2076*     3683*     1607*    unused        0     0
  f:     3683*     5290*     1607*    unused        0     0
  g:      469*     1749*     1280     4.2BSD     1024  8192    16
  h:     1749*     5290*     3541*    unused        0     0

BSD disklabel command (m for help): d
Partition (a-h): a

După repetarea procesului pentru toate slice-urile, o afişare ar trebui să listeze ceva similar cu:

BSD disklabel command (m for help): p

3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]                                    
  c:        1      5290*     5289*    unused        0     0
Crearea unui Slice pentru Swap

Pe sistemele bazate pe Alpha nu este necesară o partiţie de boot separată. Dar, primul cilindru nu poate fi utilizat pentru că imaginea aboot va fi plasată acolo.

Vom crea un slice pentru swap începând cu cilindrul al treilea, având o mărime totală de 1 GOctet. Utilizaţi n pentru a crea un slice nou. După crearea slice-ului, îi vom schimba tipul cu 1 (unu), însemnând tipul pentru swap.

BSD disklabel command (m for help): n
Partition (a-p): a
First cylinder (1-5290, default 1): 3
Last cylinder or +size or +sizeM or +sizeK (3-5290, default 5290): +1024M

BSD disklabel command (m for help): t
Partition (a-c): a
Hex code (type L to list codes): 1

După aceşti paşi, ar trebui să vi se afişeze o schemă similară cu următoarea:

BSD disklabel command (m for help): p

3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]                                    
  a:        3      1003      1001       swap
  c:        1      5290*     5289*    unused        0     0
Crearea Slice-ului pentru Rădăcină

Vom crea acum slice-ul rădăcină, începând cu primul cilindru după slice-ul pentru swap. Utilizaţi comanda p pentru a vizualiza unde se termină slice-ul de swap. În exemplul nostru, acesta este 1003, partiţia pentru rădăcină începând, astfel, la 1004.

Altă problemă este că există un bug în fdisk prin care acesta calculează greşit numărul de cilindri disponibili este cu unu mai mare decât numărul real de cilindri. Cu alte cuvinte, când vi se va cere să specificaţi numărul ultimului cilindru, decrementaţi numărul de cilindri (în acest exemplu 5290) cu unu.

Când partiţia este creată, vom schimba tipul acesteia ca 8, pentru ext2.

D disklabel command (m for help): n
Partition (a-p): b
First cylinder (1-5290, default 1): 1004
Last cylinder or +size or +sizeM or +sizeK (1004-5290, default 5290): 5289

BSD disklabel command (m for help): t
Partition (a-c): b
Hex code (type L to list codes): 8

Schema slice-urilor ar trebui să fie acum similară cu:

BSD disklabel command (m for help): p

3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]                                    
  a:        3      1003      1001       swap
  b:     1004      5289      4286       ext2
  c:        1      5290*     5289*    unused        0     0
Salvaţi Schema de Slice-uri şi Ieşiţi

Salvaţi în fdisk prin tastarea w. Aceasta va salva schema slice-urilor dvs.

Command (m for help): w

Acum, că slice-urile sunt create, puteţi continua cu Crearea Sistemelor de Fişiere.

Utilizarea fdisk pentru Partiţionarea Discului (doar ARC/AlphaBIOS)

Următoarele părţi explică modul de partiţionare a discului urmărind acelaşi tipar cu cel descris anterior, adică:

/dev/sda1Partiţia pentru boot/dev/sda2Partiţia pentru swap/dev/sda3Partiţia pentru rădăcină
Partiţie Descriere

Modificaţi schema partiţiilor în concordanţă cu preferinţele proprii.

Identificarea Discurilor Disponibile

Pentru a vedea care discuri sunt funcţionale, utilizaţi următoarele comenzi:

# dmesg | grep 'drive$'        (Pentru discuri IDE)
# dmesg | grep 'scsi'          (Pentru discuri SCSI)

Din ceea ce vă este afişat, ar trebui să puteţi observa discurile care au fost detectate şi intrarea corespondentă /dev a acestora. În următoarele părţi, vom presupune că discul este unul SCSI ca /dev/sda.

Acum, rulaţi fdisk:

# fdisk /dev/sda
Ştergerea Tuturor Partiţiilor

Dacă discul este complet gol, atunci va trebui, mai întâi, să creaţi o înregistrare DOS disklabel.

Command (m for help): o
Building a new DOS disklabel.

Vom începe cu ştergerea tuturor partiţiilor. Ceea ce urmează, vă arată cum să ştergeţi o partiţie (in exemplu, utilizăm '1'). Repetaţi procesul pentru a şterge toate celelalte partiţii.

Utilizaţi p pentru a vizualiza toate partiţiile existente. d este folosit pentru a şterge o partiţie.

command (m for help): p

Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         478      489456   83  Linux
/dev/sda2             479        8727     8446976    5  Extended
/dev/sda5             479        1433      977904   83  Linux Swap
/dev/sda6            1434        8727     7469040   83  Linux

command (m for help): d
Partition number (1-6): 1
Crearea Partiţiei pentru Boot

Pe sistemele Alpha, ce utilizează MILO pentru procesul de boot, trebuie creată o mică partiţie vfat pentru boot.

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-8727, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-8727, default 8727): +16M

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 6
Changed system type of partition 1 to 6 (FAT16)
Crearea Partiţiei pentru Swap

Vom crea o partiţie de swap începând cu cel de-al treilea cilindru, cu o mărime totală de 1 GOctet. Utilizaţi n pentru a crea o nouă partiţie.

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (17-8727, default 17): 17
Last cylinder or +size or +sizeM or +sizeK (17-8727, default 8727): +1000M

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap)

După aceşti paşi, ar trebui să observaţi o schemă de partiţionarea similară cu următoarea:

Command (m for help): p

Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          16       16368    6  FAT16
/dev/sda2              17         971      977920   82  Linux swap
Crearea Partiţiei pentru Rădăcină

Vom crea, acu, partiţia pentru rădăcină. Din nou, utilizaţi comanda n.

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (972-8727, default 972): 972
Last cylinder or +size or +sizeM or +sizeK (972-8727, default 8727): 8727

După aceşti paşi, ar trebui să observaţi o schemă de partiţionare asemănătoare cu următoarea:

Command (m for help): p

Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          16       16368    6  FAT16
/dev/sda2              17         971      977920   82  Linux swap
/dev/sda3             972        8727     7942144   83  Linux
Salvarea Schemei de Partiţionare şi Ieşirea

Ieşiţi din fdisk prin tastarea w. Aceasta va salva, de asemenea, schema dvs. de partiţionare.

Command (m for help): w

Acum, că partiţiile dvs. sunt create, trebuie să continuaţi cu secţiunea despre Crearea Sistemelor de Fişiere.

Crearea Sistemelor de Fişiere Introducere

Acum, că partiţiile dvs. sunt create, este timpul să aplicăm un sistem de fişiere pe acestea. Dacă nu vă pasă ce sistem de fişiere să alegeţi şi sunteţi mulţumiţi cu ceea ce utilizăm noi implicit în acest manual, continuaţi cu Aplicarea unui Sistem de Fişiere pe o Partiţie. Altfel, citiţi mai departe pentru a învăţa despre sistemele de fişiere disponibile...

Sisteme de Fişiere?

Sunt disponibile mai multe sisteme de fişiere. Cele mai multe dintre acestea sunt considerate stabile pe arhitectura Alpha.

ext2 este cel mai încercat sistem de fişiere Linux, dar nu conţine destule informaţii de tip metadata pentru jurnalizare, ceea ce înseamnă că verificările de rutină ale sistemului de fişiere ext2 la pornirea sistemului pot dura o perioada considerabilă de timp. Există acum o mulţime de sisteme de fişiere jurnalizate din noua generaţie ce pot fi verificate pentru consistenţă foarte repede şi sunt, de aceea, preferate celor corespondente nejurnalizate. Sistemele de fişiere jurnalizate previn durata lungă la pornirea sistemului când sistemul de fişiere este într-o stare de inconsitenţă.

ext3 este versiunea jurnalizată a sistemului de fişiere ext2, oferind informaţii de jurnalizare de tip metadata pentru recuperări rapide în plus faţă de alte moduri de îmbunătăţire ca jurnalizarea completă a datelor şi jurnalizarea ordonată a datelor. ext3 este un sistem de fişiere foarte bun şi sigur. Conţine o indexare adiţională b-tree, opţiune de indexare ce oferă o performanţă bună în aproape toate situaţiile. Puteţi activa această indexare prin adăugarea opţiunii -O dir_index comenzii mke2fs. Pe scurt, ext3 este un sistem de fişiere excelent.

ReiserFS este un sistem de fişiere B*-tree ce oferă în general o performanţă foarte bună şi depăşeşte mult atât ext2 cât şi ext3 în cazul fişierelor mici (mai mici de 4K), în cele mai multe cazuri cu un coeficient de 10-15 ori. ReiserFS oferă o scalabilitate foarte bună şi conţine jurnalizare de tip metadata. Începând cu kernel 2.4.18+, ReiserFS este solid şi utilizabil atât în cazuri normale cât şi pentru cazuri extreme cum ar fi crearea de sisteme de fişiere foarte mari, utilizarea multor fişiere foarte mici, fişiere foarte mari şi directoare conţinând zeci de mii de fişiere.

XFS este un sistem de fişiere cu jurnalizare metadata ce are un set de funcţionalităţi robuste şi este optimizat pentru scalabilitate. Recomandăm utilizarea acestui sistem de fişiere doar pe sistemele Linux ce conţin discuri SCSI şi/sau sisteme de stocare pe fibra optică şi care deţin o sursă de alimentare neîntreruptibilă. Deoarece XFS utilizează într-un mod agresiv păstrarea datelor tranzitate în RAM, programele ce nu sunt proiectate corect (cele care nu îşi asigură precauţii la scrierea fişierelor pe disc care sunt destul de puţine) pot pierde multe date dacă sistemul se opreşte în mod neaşteptat.

JFS este sistemul de fişiere cu jurnalizare de înaltă performanţă al IBM. A devenit gata pentru producţie şi nu există prea multe înregistrări pentru a comenta pozitiv sau negativ asupra stabilităţii generale a acestuia în acest moment.

Aplicarea unui Sistem de Fişiere pe o Partiţie

Pentru a crea un sistem de fişiere pe o partiţie sau volum, există utilitare disponibile pentru fiecare sistem de fişiere posibil:

ext2mke2fsext3mke2fs -jreiserfsmkreiserfsxfsmkfs.xfsjfsmkfs.jfs
Sistem de Fişiere Comanda pentru Creare

Spre exemplu, pentru a avea partiţia rădăcină (/dev/sda2 în exemplul nostru) ca ext3, trebuie să utilizaţi:

# mke2fs -j /dev/sda2

Acum creaţi sistemele de fişiere pe partiţiile nou create (sau pe volumele logice).

Activarea Partiţiei Swap

mkswap este comanda utilizată pentru a iniţializa partiţiile swap:

# mkswap /dev/sda1

Pentru a activa partiţia swap, utilizaţi swapon:

# swapon /dev/sda1

Creaţi şi activaţi partiţia swap utilizând comenzile menţionate anterior.

Mount-area

Acum ca partiţiile dvs. sunt iniţializate şi găzduiesc un sistem de fişiere, este timpul să mount-aţi aceste partiţii. Utilizaţi comanda mount. Nu uitaţi să creaţi directoarele de mount pentru fiecare partiţie creată. Ca un exemplu, vom mount-a partiţiile rădăcină şi de boot:

# mount /dev/sda2 /mnt/gentoo
Dacă doriţi ca directorul /tmp să se afle pe o partiţie separată, asiguraţi-vă că îi schimbaţi permisiunile după mount-are: chmod 1777 /mnt/gentoo/tmp. Aceasta este valabil şi pentru /var/tmp.

Trebuie, de asemenea, să utilizăm mount pentru sistemul de fişiere proc (o interfaţă virtuală cu kernel-ul) în /proc. Dar, mai întâi va trebui să stocăm fişierele noastre pe partiţii.

Continuaţi cu Instalarea Fişierelor de Instalare Gentoo.