Kõvaketta kasutamine

Allikas: Kuutõrvaja

Kõvaketta kasutamine

Kõvaketas

Süsteemi põhilise andmekandjana kasutatakse tavaliselt IDE või SCSI kõvaketast. Kõvaketta igapäevasel tarvitamisel paistavad ehk silma vaid seadme suurus ja andmevahetuskiirus. Ketta konfigureerimisel on vaja arvestada mõnede täiendavate mudelit iseloomustavate parameetrite väärtustega; traditsiooniliselt kasutatakse kõvakettal olevate andmete asukoha määramiseks kolme suurust

  • sektorite arv raja peal (sector) - üks sektor on i386 masinates kasutatavate kõvaketastel traditsiooniliselt 512 B
  • peade arv (head) - piltlikult on see võrdne radade arvuga ühes silindris
  • silindrite arv (cylinder) - silindrite arv x peade arv x sektorite arv rajal = kogu seadme (ingl. k. unit) sektorite arv

Nende parameetrite omavahelist seost iseloomustav pilt tuleb üks kord siia :)

Traditsiooniliselt nummerdatakse silindreid, päid ja sektoreid alates nullist.

Tavaliselt pole neil suurustel midagi pistmist ketta füüsiliste sektorite, peade ega silindritega. Kasvõi juba põhjusel, et tegelikult on ketta äärele jäävatel radadel rohkem sektoreid kui keskelpool.

Kõvaketta kasutamiseks tuleb tuuma kompileerida vastav toetus. Olles ühendanud ketta füüsiliselt arvutile külge ning käivitades arvuti sobiva tuumaga peate te nägema dmesgis sarnaseid ridu

ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
..
...
ad0: 19595MB  [39813/16/63] at ata0-master using UDMA33
ad1: 12416MB  [25228/16/63] at ata0-slave using UDMA33
ad2: 1033MB  [2100/16/63] at ata1-master using WDMA2
ad3: 1033MB  [2100/16/63] at ata1-slave using WDMA2

Näites kasutatakse mõlemat IDE kanalit (ata0, ata1) ning nelja IDE kõvaketast. Näiteks FreeBSD 4.x puhul ketta nimi ad3 viitab teise kanali teisele (3, numeratsioon algab nullist) IDE (ad) kettale. Ketta mudeli nime taga on toodud kantsulgudes ketta füüsilised parameeteid - [silindreid/päid/sektoreid]. Tavaliselt on need kooskõlas ka BIOSi vastavate arvudega.

SCSI kettaid tähistab nimealgus da (direct access).

Igale kõvakettale vastab kaks operatsioonisüsteemi seadet, mille kaudu kettaga suheldakse

  • järjestikune - seadme nimi algab reeglina r tähega, näiteks /dev/rad3
  • blokk - seadme nimi on nagu vastava järjestikseadme nimi, kuid ilma r täheta näiteks /dev/ad3

Järjestikseadet kasutatakse tavaliselt ketta konfigureerimisel, blokkseadet ketta kasutamisel.

Viilud ja partitsioonid

i386 arhidektuuril saab ühe kõvaketta jagada maksimaalselt neljaks iseseisvaks osaks ehk fdiski partitsiooniks. FreeBSD terminoloogias nimetatakse neid osi viiludeks. Viilude nimed moodustatakse lisades ketta nimele tähe s (slice) ning viilu numbri, näiteks teise IDE kanali esimese ketta esimest viilu tähistatakse nimega ad2s1.

DOSi ja Linuxi puhul moodustatakse failisüsteem fdiski partitsioonile. FreeBSD kasutamisel peab viilu sisse tekitama omakorda iseseisvad osad, mida nimetatakse FreeBSD terminoloogias partitsioonideks ning FreeBSD failisüsteemid moodustatakse neile partitsioonidele. Partitsioone tähistatakse lisades viilu nimele tähe vahemikust a kuni h, näiteks ad3s1a on viilu ad3s1 esimene partitsioon. Ühes viilus saab olla maksimaalselt kaheks partitsiooni, kusjuures traditsiooniliselt kasutatakse partitsioone järgmiselt

  • c - kogu viil
  • a - esimene partitsioon, sealt toimub algkäivitamine
  • b - saal (ingl. k. swap)
  • d, e, f, g, h - muud paritsioonid

Füüsiliselt asub viilutatud kõvaketta alguses fdiski partitsiooni- ehk viilutabel ning iga viilu alguses disklabel. Viilu disklabel kirjeldab viilus asuvaid FreeBSD partitsioone.

FreeBSDga saab kõvaketast kasutada kahes rezhiimis:

  • pühendatud kõvaketast - kõvaketas markeeritakse FreeBSDle iseloomulikul viisil, mis tähendab, et reeglina teised operatsioonisüsteemid seda kasutada ei saa. See ketas kuulub tervikuna ja ainult FreeBSDga kasutamiseks. Kettal ei ole ühtegi viilu, ainult kuni kaheksa FreeBSD partitsiooni.
  • viilutatud kõvaketas - FreeBSD partitsioonid asuvad viilu sees, mõnele teises partitsioonile võib olla installeeritud mõni muu operatsioonisüsteem

Kuna pühendatud ketta puhul viile ei ole, siis esitatakse partitsioonide nimesid lühemalt - ad2a, ad2b jne.

Kõvaketast on lihtsam konfigureerida pühendatuks ja see on eelistatud variant kui teil pole selget põhjust teisiti talitamiseks.

Järgnevas konfigureerime ketta ad2 tööle pühendatud ja ketta ad3 viilutatud rezhiimis.

Kõvaketta viilutamine

Kuivõrd viilule on tarvis hiljem või varem tekitada partitsioonid ja selleks on vaja teada ketta parameetreid, siis on mõtekas need kõigepealt disklabeli konfiguratsioonifaili aluseks faili ad3.dl salvestada

bash# disklabel /dev/ad3 > ad3.dl

Seda faili läheb hiljem vaja. Kui see ei toimi, tasub proovida kirjutada ketta algus nulle täis

bash# dd if=/dev/zero of=/dev/rad3 bs=1k count=1

ning seejärel kirjutada puhas ketta disklabel

bash# disklabel -rw ad3 auto

Viile moodustatakse programmiga Fdisk.

Iga viil va esimene peab algama ja kõik peavad lõppema silindri piiril. Jätkates näidet on kasutataval kettal päid 16 ja sektoreid 63, seega ühte silindrisse mahub 16 x 63 = 1008 sektorit = 504 kB. Fdiski konfiguratsioonifailis tuleb näidata viilu algussektor ning pikkus sektorites, näiteks moodustame kolm viilu ning määrame esimese aktiivseks

  • ad3s1 - 200 silindrit ehk 201 600 sektorit ehk 100 800 kB
  • ad3s2 - 300 sektorit 302 400 ehk 151 200 kB
  • ad3s3 - 1 600 sektorit 1 612 800 ehk 806 400 kB
g c2100 h16 s63
p 1 165 63 201537
p 2 165 201600 302400
p 3 165 504000 1612800
a 1

Esimene viil peab algama ühele rajale mahtuvate sektorite arvu võrra (näites 63) algusest edasi.

Eeldusel, et konfiguratsioon on failis ad3.fdisk andke kõvaketta konfigureerimiseks käsk

bash# fdisk -t -f ad3.fdisk /dev/rad3

võti -t näitab, et sooritate proovi ning kui kõik on õige andke sama käsk ilma võtmeta -t.

Lisaks toodule võib konfiguratsioonifailis kasutada näiteks rida

p 1 0 0 0

mis kustutab esimese viilu.

Kõvakettal olemasolevaid viile saab vaadata samuti programmiga Fdisk. Näiteks vaatame kõvaketta ad3 omadusi

su-2.03# fdisk /dev/rad3
******* Working on device /dev/rad3 *******
parameters extracted from in-core disklabel are:
cylinders=2100 heads=16 sectors/track=63 (1008 blks/cyl)

Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=2100 heads=16 sectors/track=63 (1008 blks/cyl)

Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 165,(FreeBSD/NetBSD/386BSD)
    start 63, size 201537 (98 Meg), flag 80 (active)
        beg: cyl 0/ sector 1/ head 1;
        end: cyl 199/ sector 63/ head 15
The data for partition 2 is:
sysid 165,(FreeBSD/NetBSD/386BSD)
    start 201600, size 302400 (147 Meg), flag 0
        beg: cyl 200/ sector 1/ head 0;
        end: cyl 499/ sector 63/ head 15
The data for partition 3 is:
sysid 165,(FreeBSD/NetBSD/386BSD)
    start 504000, size 1612800 (787 Meg), flag 0
        beg: cyl 500/ sector 1/ head 0;
        end: cyl 51/ sector 63/ head 15
The data for partition 4 is:
<UNUSED>

Partitsioonide moodustamine pühendatud kettale

Pühendatud kettale moodustatakse partitsioone programmiga Disklabel kusjuures Fdiski polegi vaja kasutada. Osutub, et partitsiooni suurus on soovitav valida 4096 kordne sektorite arv. Disklabeli konfiguratsioonifailis näitatakse sektorite partitsioonisuurus ja algussektor, näiteks moodustame kettale ad2 kolm partitsiooni, e, f ja g, pikkade nimedega ad2e, ad2f ja ad2g kusjuures kogu kettale viitab nimi ad2c. Moodustame järgmise suurusega partitsioonid:

  • e - 409 600 sektorit = 200 MB
  • f - 856 064 sektorit = 418 MB
  • g - 851 136 sektorit = 425 568 kB

Kõigepealt kirjutame ketta alguse nullidega üle

bash# dd if=/dev/zero of=/dev/rad2 bs=1k count=1

Seejärel kirjutage kettale puhas disklabel

bash# disklabel -rw ad2 auto

Salvestame Disklabeli konfiguratsioonifaili aluse faili ad2.dl

bash# disklabel /dev/rad2 > ad2.dl

Redigeerime disklabeli konfiguratsioonifaili defineerides partitsioonid e, f ja g

# /dev/rad2:
type: unknown
disk: amnesiac
label: fictitious
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 16
sectors/cylinder: 1008
cylinders: 2100
sectors/unit: 2116800
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # milliseconds
track-to-track seek: 0  # milliseconds
drivedata: 0

8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  c:  2116800        0    unused        0     0         # (Cyl.    0 - 2099)
  e:   409600        0    4.2BSD    1024   8192   16
  f:   409600   409600    4.2BSD    1024   8192   16
  g:  1294336   819200    4.2BSD    1024   8192   16

Kirjutame disklabeli

bash# cat /ad2.dl | disklabel -Rr ad2 /dev/stdin

Moodustatud disklabelit saab vaadata selliselt

bash# disklabel /dev/rad2c

Lõpuks tekitame failisüsteemid

bash# newfs /dev/rad2e
bash# newfs /dev/rad2f
bash# newfs /dev/rad2g

Partitsioonide moodustamine viilule

Viilule moodustatakse partitsioone programmiga Disklabel. Osutub, et partitsiooni suurus on soovitav valida 4096 kordne sektorite arv. Disklabeli konfiguratsioonifailis näitatakse sektorites partitsiooni suurus ja algussektor, näiteks moodustame ketta ad3 teise viilu kolm partitsiooni, e, f ja g, pikkade nimedega ad3s2e, ad3s2f ja ad3s2g kusjuures kogu kettale viitab nimi ad3s2c. Moodustame järgmise suurusega partitsioonid:

   * e - 102 400 sektorit = 50 MB
   * f - 49152 sektorit = 24 MB
   * g - 147 456 sektorit = 72 MB 

Kasutame viilutamise eel salvestatud disklabeli aluse faili ad3.dl, nimetame ta selguse mõttes ümber ad3s2.dl. Aluse sisu võiks olla näiteks selline

# /dev/rad3:
type: unknown
disk: amnesiac
label: 
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 16
sectors/cylinder: 1008
cylinders: 2100
sectors/unit: 2116800
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # milliseconds
track-to-track seek: 0  # milliseconds
drivedata: 0 

8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  c:  2116800        0    unused        0     0         # (Cyl.    0 - 2099)

Redigeerime selle vastavaks kõvakettale ja teisele viilule. Vaadake ketta ja teise viilu omadusi programmiga Fdiski: näeme, et teise viilu suurus on 302400 sektorit, mis asuvad 300 silindril. Kõvakettal on 16 pead ja 63 sektorit rajal. Redigeerige saadud Disklabeli konfiguratsioonifail selliseks

# /dev/ad3:
type: ESDI
disk: ad3s2
label:
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 16
sectors/cylinder: 1008
cylinders: 300
sectors/unit: 302400
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # milliseconds
track-to-track seek: 0  # milliseconds
drivedata: 0

8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  c:   302400        0    unused        0     0         # (Cyl.    0 - 2099)
  e:   102400        0    4.2BSD     1024  8192    16
  f:    49152   102400    4.2BSD     1024  8192    16
  g:   147456   151522    4.2BSD     1024  8192    16

Viilu disklabeliga tegelemisel on oluline, et type (ESDI või SCSI) ja disk oleksid õiged.

Kirjutame Disklabeli

bash# cat ad3s2.dl | disklabel -Rr ad3s2 /dev/stdin

Moodustame failisüsteemid

bash# newfs /dev/ad3s2e
bash# newfs /dev/ad3s2f
bash# newfs /dev/ad3s2g

© EENet 2000