Kõvaketaste kasutamine operatsioonisüsteemiga Solaris Sun-SPARC riistvaral

Allikas: Kuutõrvaja

Kõvaketta arvutiga ühendamine

Klassikaliselt kasutatakse Sun Sparc arvutitega SCSI kõvakettaid.

  • Kõige otsekohesemal juhul ühendatakse SCSI kõvaketas arvuti SCSI kontrolleri pordiga kasutades SCSI kaablit. Tavaliselt on sellisel kaablil mitu kontakti, üks on ühendatud arvuti kontrolleriga ning ülejäänutel asuvad kõvakettad. See moodus on aga selles mõttes nö kodukootud, et tuleks kombineerida, kuhu nii ühendatud kõvakettad paigutada, reeglina Sun Sparc arvuti korpuses ei ole ette nähtud kohta kõvaketaste paigutamiseks või pole neid piisavalt.
  • Levinud mooduseks on kasutada Sun Sparc arvuti juures kõvakettakasti, milles olevatesse pesadesse paigutatakse kõvakettad endid. Seejärel ühendatakse kõvakettakast SCSI kaabli abil arvuti SCSI pordiga. Kuigi esimesel ja teisel juhul reeglina tuleb kasutada erinevate kontaktidega kõvakettaid (nn tavalised vs hotswap), siis loogilises mõttes tingimata suurt vahet pole.
  • Lisaks saab arvutile teha kõvakettaressuresi kättesaadavaks kasutades FC (Fiber Channel) tehnoloogiat. Arvuti ühendatakse taas kettakastiga, aga mitte SCSI kaabli vaid FC kaabli abil. See eeldab FC portide olemasolu kõvakettakastil ja arvuti küljes ning operatsioonisüsteemis tuleb kasutada FC kaardile vastavat draiverit.

Vaatamata, kuidas kõvaketas kasutusele võeti on edu tunnuseks, et lisatud kõvaketas on käsu format väljundis paista, näiteks selline väljund

bash# format
Searching for disks...done

c4t0d0: configured with capacity of 199.99GB

AVAILABLE DISK SELECTIONS:
      0. c0t0d0 <FUJITSU-MAP3147NC-3701 cyl 38343 alt 2 hd 8 sec 936>
         /pci@83,4000/FJSV,ulsa@2,1/sd@0,0
      1. c0t1d0 <FUJITSU-MAW3147NC-3701 cyl 38343 alt 2 hd 8 sec 936>
         /pci@83,4000/FJSV,ulsa@2,1/sd@1,0
      2. c1t0d0 <FUJITSU-MAP3147NC-3701 cyl 38343 alt 2 hd 8 sec 936>
         /pci@83,4000/FJSV,ulsa@2/sd@0,0
      3. c1t1d0 <FUJITSU-MAW3147NC-3701 cyl 38343 alt 2 hd 8 sec 936>
         /pci@83,4000/FJSV,ulsa@2/sd@1,0
      4. c4t0d0 <DGC-RAID10-0220 cyl 51198 alt 2 hd 256 sec 32>
         /pci@80,2000/fibre-channel@1/fp@0,0/ssd@w500601613a601529,0
      5. c4t0d1 <DGC-RAID 10-0220-691.00GB>
         /pci@80,2000/fibre-channel@1/fp@0,0/ssd@w500601613a601529,1
Specify disk (enter its number): ^C

Kusjuures uue kõvaketta kohta öeldakse tavaliselt sedasi

c4t0d0: configured with capacity of 199.99GB

Antud näiteks on 0. - 3. on füüsilised SCSI kõvakettad ning 4. ja 5. üle FC kettakastist eraldatud ressurss, mis operatsioonisüsteemi jaoks on loogilises mõttes samaväärne füüsilise kettaga.

Kui lisatud kõvaketas pole paista, siis tuleks arvutile öelda devfsadm või OBP promptist 'boot -r'. Kui dmsg'i ilmub rikkalikult veateateid, siis maksab üle kontrollida, et igal SCSI kanalil oleval kõvakettal oleks unikaalne SCSI ID määratud (füüsilise jumperi paigutusega).

Solaris operatsioonisüsteemi puhul on praktiliselt valida kahe failisüsteemi vahel, UFS või ZFS, lisaks võib rakendustarkvara saada hakkama ka ise otse kõvakettaseadme kasutamisega, nt Oracle andmebaas.

Kõvaketaste nimetamine

Solaris operatsioonisüsteemis tähistatakse kõvakettaid kolmekomponendiliste nimedega cxtydz, kus komponendid omavad sellist tähendust

  • x - SCSI kanali number (st kontrolleri number)
  • y - kõvaketta number kanalil (st kontrolleri küljes)
  • z - praktiliselt alati null, sisuline tähendus teadmata

Näiteks esimese kontrolleri number kaheksandal positsioonil oleva kõvaketta seadme nimi on c2t8d0.

Kõvaketta partitsioneerimine

Kõigel lihtsamal juhul jaotatakse kõvaketas osadeks ehk partitsioonideks, millele moodustatakse saaleala või failisüsteemid ning operatsioonisüsteem hakkab neid kasutama. Keerulisemal juhul saab kasutada Solaris Volume Mananger'i võimalusi, et saavutada suuremat kiirust või paremat töökindlust, kombineerides mitmeid kõvakettaid nn tarvkvaralise RAID'i lahenduseks.

Kui kõvaketas on füüsiliselt arvutisse installeeritud ning esimeses punktis illustreeritud viisil käsu format väljundis paista, siis edasi toimub kõvaketta partsioneerimine utiliidi format abil. Näiteks moodustame 16,8 GB suurusele kettale kaks partitsiooni, kusjuures tegevusega kaasneb kõvakettal varem olnud andmete hävinemine

  • 0 - 15,8 GB andmed
  • 1 - 1 GB saaleala

Partisioonile vastab kaks seadmefaili

  • toores (ingl. k. raw) seadmefail kataloogis /dev/rdsk - kasutatakse nt newfs käsu argumendina
  • plokkseadmefail kataloogis /dev/dsk - kasutatakse nt mount käsu argumendina

kusjuures seadmefaili nimi moodustatakse kettanimest, millele on lisatud lõppu 'sn', antud juhul

  • /dev/rdsk/c2t9d0s0
  • /dev/dsk/c2t9d0s0

ja

  • /dev/rdsk/c2t9d0s1
  • /dev/dsk/c2t9d0s1

Partitsioonide moodustamiseks käivitame programmi format

 bash-3.00# format   
 Searching for disks...done
 AVAILABLE DISK SELECTIONS:
      0. c2t8d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
         /sbus@44,0/QLGC,isp@0,10000/sd@8,0
      1. c2t9d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
         /sbus@44,0/QLGC,isp@0,10000/sd@9,0

Ütleme, et soovime tegeleda teise kettaga, vastuseks jõuame FORMAT menüüsse

 Specify disk (enter its number): 1
 selecting c2t9d0
 [disk formatted]
 
 FORMAT MENU:
       disk       - select a disk
       type       - select (define) a disk type
       partition  - select (define) a partition table
       current    - describe the current disk
       format     - format and analyze the disk
       repair     - repair a defective sector
       label      - write label to the disk
       analyze    - surface analysis
       defect     - defect list management
       backup     - search for backup labels
       verify     - read and display labels
       save       - save new disk/partition definitions
       inquiry    - show vendor, product and revision
       volname    - set 8-character volume name
       !<cmd>     - execute <cmd>, then return
       quit

Liigume edasi partitsioneerimise menüüsse

 format> p
 
 PARTITION MENU:
       0      - change `0' partition
       1      - change `1' partition
       2      - change `2' partition
       3      - change `3' partition
       4      - change `4' partition
       5      - change `5' partition
       6      - change `6' partition
       7      - change `7' partition
       select - select a predefined table
       modify - modify a predefined partition table
       name   - name the current table
       print  - display the current table
       label  - write partition map and label to the disk
       !<cmd> - execute <cmd>, then return
       quit

Esitame olemasoleva partitsioonitabeli sisu, mis on selline nagu ta viimasest kõvakettakasutusest jäänud on

 partition> p
 
 Current partition table (original):
 Total disk cylinders available: 7506 + 2 (reserved cylinders)
 
 Part      Tag    Flag     Cylinders        Size            Blocks
 0       root    wm       0 -   55      128.84MB    (56/0/0)     263872
 1       swap    wu      56 -  111      128.84MB    (56/0/0)     263872
 2     backup    wu       0 - 7505       16.86GB    (7506/0/0) 35368272
 3 unassigned    wm       0               0         (0/0/0)           0
 4 unassigned    wm       0               0         (0/0/0)           0
 5 unassigned    wm       0               0         (0/0/0)           0
 6        usr    wm     112 - 7505       16.61GB    (7394/0/0) 34840528
 7 unassigned    wm       0               0         (0/0/0)           0

Sun Sparc arvutite SCSI kõvaketastel on kaheksa partitsiooni kusjuures

  • partitsioon 0 on juurfailisüsteem millelt booditakse operatsioonisüsteem
  • partitsioon 1 on tavaliselt kasutusel saalealana
  • partitsioon 2 tähistab kogu kõvaketast ja seda otseselt ei kasutata

Muid partitsioone võib kasutada vastavalt vajadusele.

Ülesande saavutamiseks tuleb valida partitsioneerimise menüüst modify

 partition> m
 Select partitioning base:
       0. Current partition table (original)
       1. All Free Hog

Ning seejärel All Free Hog

 Choose base (enter number) [0]? 1
 
 Part      Tag    Flag     Cylinders        Size            Blocks
 0       root    wm       0               0         (0/0/0)           0
 1       swap    wu       0               0         (0/0/0)           0
 2     backup    wu       0 - 7505       16.86GB    (7506/0/0) 35368272
 3 unassigned    wm       0               0         (0/0/0)           0
 4 unassigned    wm       0               0         (0/0/0)           0
 5 unassigned    wm       0               0         (0/0/0)           0
 6        usr    wm       0               0         (0/0/0)           0
 7 unassigned    wm       0               0         (0/0/0)           0
 
 Do you wish to continue creating a new partition

Vastame, et soovime partitsioneerida ning sisestame soovitud partitsioonide suurused

 table based on above table[yes]? 
 Free Hog partition[6]? 
 Enter size of partition '0' [0b, 0c, 0.00mb, 0.00gb]: 15.8gb
 Enter size of partition '1' [0b, 0c, 0.00mb, 0.00gb]: 1gb
 Enter size of partition '3' [0b, 0c, 0.00mb, 0.00gb]: 
 Enter size of partition '4' [0b, 0c, 0.00mb, 0.00gb]: 
 Enter size of partition '5' [0b, 0c, 0.00mb, 0.00gb]: 
 Enter size of partition '7' [0b, 0c, 0.00mb, 0.00gb]: 
 
 Part      Tag    Flag     Cylinders        Size            Blocks
 0       root    wm       0 - 7032       15.80GB    (7033/0/0) 33139496
 1       swap    wu    7033 - 7478        1.00GB    (446/0/0)   2101552
 2     backup    wu       0 - 7505       16.86GB    (7506/0/0) 35368272
 3 unassigned    wm       0               0         (0/0/0)           0
 4 unassigned    wm       0               0         (0/0/0)           0
 5 unassigned    wm       0               0         (0/0/0)           0
 6        usr    wm    7479 - 7505       62.12MB    (27/0/0)     127224
 7 unassigned    wm       0               0         (0/0/0)           0
 

Vastame, et kujunenud tulemus on sobiv

 Okay to make this the current partition table[yes]? 
 Okay to make this the current partition table[yes]? 
 Enter table name (remember quotes): disk1

Vastame, et kirjutada label kettale

 Ready to label disk, continue? y

Ning väljume programmist

 partition> q
 
 FORMAT MENU:
       disk       - select a disk
       type       - select (define) a disk type
       partition  - select (define) a partition table
       current    - describe the current disk
       format     - format and analyze the disk
       repair     - repair a defective sector
       label      - write label to the disk
       analyze    - surface analysis
       defect     - defect list management
       backup     - search for backup labels
       verify     - read and display labels
       save       - save new disk/partition definitions
       inquiry    - show vendor, product and revision
       volname    - set 8-character volume name
       !<cmd>     - execute <cmd>, then return
       quit
 format> q
 bash# 

Kõvaketta partitsioonitabelit saab küsida öeldes

 bash# prtvtoc /dev/rdsk/c2t9d0s2
 * /dev/rdsk/c2t9d0s2 partition map
 *
 * Dimensions:
 *     512 bytes/sector
 *     248 sectors/track
 *      19 tracks/cylinder
 *    4712 sectors/cylinder
 *    7508 cylinders
 *    7506 accessible cylinders
 *
 * Flags:
 *   1: unmountable
 *  10: read-only
 *
 *                          First     Sector    Last
 * Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
      0      2    00          0  33139496  33139495
      1      3    01   33139496   2101552  35241047
      2      5    01          0  35368272  35368271
      6      4    00   35241048    127224  35368271

UFS failisüsteemi moodustamine

Selleks, et operatsioonisüsteem saaks kõvaketast kasutada andmete salvestamiseks tuleb tavaliselt moodustada partitsioonile failisüsteem. Solarise puhul on valida kahe failisüsteemi, UFS ja ZFS vahel. UFS failisüsteemi tekitamiseks tuleb öelda

 bash# newfs /dev/rdsk/c2t9d0s0 
 newfs: construct a new file system /dev/rdsk/c2t9d0s0: (y/n)? y
 Warning: 1240 sector(s) in last cylinder unallocated
 /dev/rdsk/c2t9d0s0:     33139496 sectors in 5394 cylinders of 48 tracks, 128 sectors
       16181.4MB in 338 cyl groups (16 c/g, 48.00MB/g, 5824 i/g)
 super-block backups (for fsck -F ufs -o b=#) at:
  32, 98464, 196896, 295328, 393760, 492192, 590624, 689056, 787488, 885920,
 Initializing cylinder groups:
 ......
 super-block backups for last 10 cylinder groups at:
  32244768, 32343200, 32441632, 32540064, 32638496, 32736928, 32835360,
  32933792, 33032224, 33130656

Ning seejärel võib tekitatud failisüsteemi külge ühendada ja asuda kasutama öeldes näiteks

 bash# mkdir /data
 bash# mount /dev/dsk/c2t9d0s0 /data

Selleks, et bootimise käigus failisüsteem külge ühendataks, peab lisama faili /etc/vfstab sellise rea

 #device            device                  mount    FS      fsck    mount       mount
 #to mount          to fsck                 point    type    pass    at boot    options
 ...
 /dev/dsk/c2t9d0s0  /dev/rdsk/c2t9d0s0      /data    ufs     2       yes        -

UFS failisüsteemi snapshot

UFS failisüsteemi snapshot võimaldab kiiresti fikseerida ajahetkele vastava samal ajal kasutuses oleva failisüsteemi oleku ning seda kasutada näiteks varukoopia tegemiseks. Juurfailisüsteemist snapshoti võtmine ja varukoopia tegemine toimub näiteks selliselt

  • Snapshoti tekitamine, vastav failisüsteem tuleks viia võimalikult nö vaiksesse olekusse seal toimuvate failidesse kirjutamise mõttes
 bash# fssnap -F ufs -o unlink,bs=/moni-teine-failisysteem/backing-store-file-juurfailisysteem /
  • Veendume, et snapshot on olemas
 bash# /usr/lib/fs/ufs/fssnap -i
 Snapshot number               : 0
 Block Device                  : /dev/fssnap/0
 Raw Device                    : /dev/rfssnap/0
 Mount point                   : /
 Device state                  : idle
 Backing store path            : /moni-teine-failisysteem/backing-store-file-juurfailisysteem <UNLINKED>
 Backing store size            : 256 KB
 Maximum backing store size    : Unlimited
 Snapshot create time          : Wed Oct 01 19:25:16 2008
 Copy-on-write granularity     : 32 KB
  • Teeme varukoopia ufsdump utiliidiga
 bash# ufsdump 0f /mnt/loomaaed-juurikas-20080705.dump /dev/rfssnap/0
  • Eemaldamine snapshoti
 bash# fssnap -d /

Juurfailisüsteemist snapshoti võtmisel tuleb ntp server peatada ja peale snapshot eemaldamist jällegi käivitada

 bash# svcs | grep ntp
 online         Jan_10   svc:/network/ntp:default
 bash# svcadm disable ntp
 bash# svcadm enable ntp

Nii moodustatud koopia kasutamiseks peab olema ühendatud külje piisavalt suur tühi failisüsteem ning tuleb öelda

 bash# cd /mnt
 bash# cat /root/loomaaed-juurikas-20080705.dump | ufsrestore rf -

Saaleala moodustamine

Saaleala moodustamiseks ja kasutuselevõtmiseks tuleb öelda

 bash# swap -a /dev/dsk/c2t9d0s1

Kasutusel olevaid saalealasid näeb käsuga

 bash# swap -l
 swapfile             dev  swaplo blocks   free
 /dev/dsk/c2t8d0s1   32,105     16 2101536 2101536
 /dev/dsk/c2t9d0s1   32,113     16 2101536 2101536

Saaleala kasutusest eemaldamine toimub öeldes

 bash# swap -d /dev/dsk/c2t9d0s1

Ühe kõvaketta partitsioonitabeli kopeerimine teisele samasugusele kõvakettale

Ühe kõvaketta partitsioonitabeli kopeerimine teisele samasugusele kõvakettale võib olla vajalik näiteks juhtumil, kui soovitakse moodustada peeglit (ingl. k. mirror) ning üks kõvaketas on juba ettevalmistatud. Peegli valmistamine toimub Solaris Volume Manager'i vahendite abil, kuid reeglina on eelduseks, et mõlemad peegli pooled moodustavad kõvakettad on ühesuguselt partitsioneeritud.

Partitsioonitabel on kirjas kõvaketta disklabelis, disklabeli kopeerimine otse teisele kettale toimub öeldes

 bash# prtvtoc /dev/rdsk/c2t8d0s2 | fmthard -s - /dev/rdsk/c2t9d0s2
 fmthard:  New volume table of contents now in place.

Probleemid

  • Kui kõvaketas oli kasutusel eelnevalt ZFS skeemis, siis on seal kasutusel EFI label, mille üheks tunnuseks on format disk käsu väljundis üheksa partitsiooni (Sun Sparc arvutitel on muidu kaheksa partitsiooni). Nö normaalse SMI disklabeli tekitamiseks tuleb öelda
 bash# format -e
 ...

Partitsioonitabel paistab sellisena

 partition> p
 Current partition table (original):
 Total disk sectors available: 35362115 + 16384 (reserved sectors)
 
 Part      Tag    Flag     First Sector        Size        Last Sector
 0        usr    wm                34      16.86GB         35362115    
 1 unassigned    wm                 0          0              0    
 2 unassigned    wm                 0          0              0    
 3 unassigned    wm                 0          0              0    
 4 unassigned    wm                 0          0              0    
 5 unassigned    wm                 0          0              0    
 6 unassigned    wm                 0          0              0    
 7 unassigned    wm                 0          0              0    
 8   reserved    wm          35362116       8.00MB         35378499    

Labeli muutmiseks tuleb öelda

 partition> l
 [0] SMI Label
 [1] EFI Label
 Specify Label type[1]: 0
 Warning: This disk has an EFI label. Changing to SMI label will erase all
 current partitions.
 Continue? y
 Auto configuration via format.dat[no]? 
 Auto configuration via generic SCSI-2[no]? 
 partition> 

Ning lõpuks format programmist käsu q abil väljuda.

Kui labeli muutmine ei õnnestunud ja vastati

 partition> l
 Unable to get current partition map.
 Cannot label disk when partitions are in use as described.

Siis tõenäoliselt on zfs failisüsteemis kõvaketas veel kasutusel, lahti ühendamiseks tuleb öelda kui tank on pool'i nimi

 bash# zpool export tank