Concatenazione - striping sotto Solaris9



  Operazioni effettuate per usare quattro dischi rigidi SCSI da ~1GB come un'unica unità virtuale da 3,9GB.
  La prima versione del documento riportava i risultati delle operazioni effettuare su una Ultrasparc10 e un'unità SCSI 911 dotata di quattro dischi rigidi eterogenei, con sistema operativo Solaris9 8/04, aggiornato alle ultime patch il giorno 16 dicembre 2005.
  La prima revisione del documento, con l'aggiunta di stralci tradotti delle pagine man di alcuni dei comandi usati, riporta i risultati effettuari su una Sparcstation5-170 con sistema operativo Solaris9 9/05 di nuova installazione.

  Nel seguito compaiono i comandi da scrivere sulla riga di comando in caratteri normali a spaziatura costante, mentre in corsivo, ma sempre con caratteri a spaziatura costante, sono riportati i messaggi prodotti dal sistema in risposta ai comandi mandati in esecuzione.

  Dapprima, si formattano i dischi.  Nel nostro caso, si crea su ciascuno una sola partizione scrivibile e montabile (flag wm), che occupa tutto il disco.

# format /dev/rdsk/c3t?d0s2
AVAILABLE DISK SELECTIONS:
       0. /dev/rdsk/c3t0d0s2 <IBM-0663L12-1012 cyl 3803 alt 2 hd 5 sec 108>
          /pci@1f,0/pci@1/scsi@2/sd@0,0
       1. /dev/rdsk/c3t2d0s2 <DEC-RZ26N(C)DEC-0616 cyl 3086 alt 2 hd 8 sec 83>  test
          /pci@1f,0/pci@1/scsi@2/sd@2,0
       2. /dev/rdsk/c3t4d0s2 <SEAGATE-ST31200N-8590 cyl 2692 alt 2 hd 9 sec 85>
          /pci@1f,0/pci@1/scsi@2/sd@4,0
       3. /dev/rdsk/c3t5d0s2 <SEAGATE-ST31200N-8590 cyl 2692 alt 2 hd 9 sec 85>
          /pci@1f,0/pci@1/scsi@2/sd@5,0
Specify disk (enter its number)[2]: 3
selecting /dev/rdsk/c3t5d0s2
[disk formatted]
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
partition> p
Current partition table (original):
Total disk cylinders available: 2692 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders        Size            Blocks
  0        usr    wm       0 - 2691     1005.56MB    (2692/0/0) 2059380
  1 unassigned    wm       0               0         (0/0/0)          0
  2     backup    wu       0 - 2691     1005.56MB    (2692/0/0) 2059380
  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 unassigned    wm       0               0         (0/0/0)          0
  7 unassigned    wm       0               0         (0/0/0)          0

[...]

  Formattati tutti i dischi, si crea la base dati dei dispositivi che saranno concatenati.  Questo è fatto con il comando metadb che, come informa la pagina man metadb(1m), "crea e cancella repliche del database dello stato dei metadispositivi. [...] Il database dello stato dei metadispositivi contiene la configurazione di tutti i metadispositivi e bacini di riserva pronti all'uso presenti nel sistema.".  Gli switch utilizzati hanno questi effetti:

<nessuno> Quando è usato senza alcuna opzione, il comando metadb fornisce una breve tabella riportante la condizione attuale del database dello stato dei metadispositivi.
-a Agganciamento di un nuovo dispositivo di database. Il file /kernel/drv/md.conf è aggiornato automaticamente con le nuove informazioni e anche il file /etc/lvm/mddb.cf è aggiornato.  Un modo alternativo di creare le repliche è di definirle nel file /etc/lvm/md.tab specificandone il nome assegnato sulla riga di comando nella forma mddbnn, dove nn è un numero di due cifre dato alle definizioni della replica. Si faccia riferimento alla pagina di manuale md.tab(4) per le istruzioni su come configurare le repliche in questo file.

-f  L'opzione -f è usata per creare il database iniziale di stato. È usato anche per forzare la cancellazione delle repliche al di sotto del numero minimo di uno.  (Le opzioni -a e -f dovrebbero essere usate insieme solamente quando non esistono database di stato).

  Inizialmente i file hanno questo contenuto:

[root@sparc3 root]# cat /kernel/drv/md.conf
#
#pragma ident   "@(#)md.conf    2.1     00/07/07 SMI"
#
# Copyright (c) 1992-1999 by Sun Microsystems, Inc.
# All rights reserved.
#
name="md" parent="pseudo" nmd=128 md_nsets=4;

[root@sparc3 root]# cat /etc/lvm/mddb.cf
#pragma ident   "@(#)mddb.cf    2.1     00/07/07 SMI"
#
# Copyright (c) 2000 by Sun Microsystems, Inc.
# All rights reserved.
#metadevice database location file do not hand edit
#driver minor_t daddr_t checksum

[root@sparc3 root]# cat /etc/lvm/md.tab
#
# Copyright 2002 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
# ident "@(#)md.tab     2.4     02/01/29 SMI"
#
# md.tab
#
#       metainit utility input file.
#
# The following examples show the format for local metadevices, and a
# similar example for a shared metadevice, where appropiate.  The shared
# metadevices are in the diskset named "blue":
#
# Metadevice database entry:
#
#       mddb01  /dev/dsk/c0t2d0s0 /dev/dsk/c0t0d0s0
#
# Concatenation of devices:
#
#       d10             2 1 /dev/dsk/c0t2d0s0 1 /dev/dsk/c0t0d0s0
#       blue/d10        2 1 /dev/dsk/c2t2d0s0 1 /dev/dsk/c2t0d0s0
#
# Stripe of devices:
#
#       d11             1 2 /dev/dsk/c0t2d0s1 /dev/dsk/c0t0d0s1
#       blue/d11        1 2 /dev/dsk/c2t2d0s1 /dev/dsk/c2t0d0s1
#
# Concatenation of stripes (with a hot spare pool):
#
#       d13             2 2 /dev/dsk/c0t2d0s0 /dev/dsk/c0t0d0s0 \
#                         2 /dev/dsk/c0t2d0s1 /dev/dsk/c0t0d0s1 -h hsp001
#       blue/d13        2 2 /dev/dsk/c2t2d0s0 /dev/dsk/c2t0d0s0 \
#                         2 /dev/dsk/c2t2d0s1 /dev/dsk/c2t0d0s1 -h blue/hsp001
#
# Two way mirror:
#
#       d14             -m d10 d11
#       blue/d14        -m blue/d10 blue/d11
#
# Logging w/components for master and logging device
#
#       d0              -t /dev/dsk/c1t2d0s0 /dev/dsk/c1t0d0s0
#       blue/d0         -t /dev/dsk/c2t2d0s0 /dev/dsk/c2t0d0s0
#
# Logging with mirrored master device and striped logging device
#
#       d1              -t d14 d13
#       blue/d1         -t blue/d14 blue/d13
#
# RAID of devices
#
#       d15             -r /dev/dsk/c1t0d0s0 /dev/dsk/c1t1d0s0 \
#                          /dev/dsk/c1t2d0s0 /dev/dsk/c1t3d0s0
#       blue/d15        -r /dev/dsk/c2t0d0s0 /dev/dsk/c2t1d0s0 \
#                          /dev/dsk/c2t2d0s0 /dev/dsk/c2t3d0s0
#
# Hot Spare Pool of devices
#
#       hsp001          /dev/dsk/c1t0d0s0
#       blue/hsp001     /dev/dsk/c2t0d0s0
#
# 100MB Soft Partition
#
#       d1              -p /dev/dsk/c1t0d0s1 100M
#       blue/d1         -p /dev/dsk/c2t0d0s1 100M


  Si crea dunque il database dello stato dei metadispositivi:

# metadb -a -f c3t0d0s0 c3t2d0s0 c3t4d0s0
# metadb -a c3t5d0s0
# metadb
        flags           first blk       block count
     a        u         16              8192            /dev/dsk/c3t0d0s0
     a        u         16              8192            /dev/dsk/c3t2d0s0
     a        u         16              8192            /dev/dsk/c3t4d0s0
     a        u         16              8192            /dev/dsk/c3t5d0s0

  Creato il database dello stato dei metadispositivi, lo si configura con il comando metainit.  Vanno specificati, nell'ordine:

1) il nome del metadispositivo della concatenazione, della stripe, o della concatenazione di stripe che si stanno definendo;
2) il numero di stripe individuali nel metadispositivo.  Per una stripe semplice, questo valore è sempre 1.  Per una concatenazione questo numero è pari al numero di slice.  Per una concatenazione di stripe, questo valore cambia a seconda del numero delle stripe;
3) specifica il numero di slice che costituiscono una stripe.  Se questo valore è maggiore di 1, allora si effettua una stripe di slice.

# metainit d0 1 4 c3t0d0s0 c3t2d0s0 c3t4d0s0 c3t5d0s0
d0: Concat/Stripe is setup

  Con il comando metastat si vede lo stato del metadispositivo o dei bacini di riserva pronti all'uso:

# metastat d0
d0: Concat/Stripe
    Size: 8161560 blocks (3.9 GB)
    Stripe 0: (interlace: 32 blocks)
        Device     Start Block  Dbase   Reloc
        c3t0d0s0       8640     Yes     Yes
        c3t2d0s0       8632     Yes     Yes
        c3t4d0s0       8415     Yes     Yes
        c3t5d0s0       8415     Yes     Yes

Device Relocation Information:
Device   Reloc  Device ID
c3t0d0   Yes    id1,sd@SIBM_____0663L12_________________00207297
c3t2d0   Yes    id1,sd@s4445432020202020525a32364e20202020284329204445433030333034353635
c3t4d0   Yes    id1,sd@SSEAGATE_ST31200N________00656916
c3t5d0   Yes    id1,sd@SSEAGATE_ST31200N________00646200

  Finalmente, con il comando newfs si può creare un filesystem sull'intero metadispositivo (di 8KiB per inode nell'esempio che segue):

# newfs -i 8192 /dev/md/rdsk/d0
newfs: construct a new file system /dev/md/rdsk/d0: (y/n)? y
/dev/md/rdsk/d0:        8161560 sectors in 15114 cylinders of 5 tracks, 108 sectors
        3985.1MB in 158 cyl groups (96 c/g, 25.31MB/g, 3264 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
 32, 51984, 103936, 155888, 207840, 259792, 311744, 363696, 414752, 466704,
 7672800, 7724752, 7776704, 7828656, 7879712, 7931664, 7983616, 8035568,
 8087520, 8139472,
# mkdir /mnt/db0
# mount -F ufs /dev/md/dsk/d0 /mnt/db0
# df -h /mnt/db0
Filesystem             Size   Used  Available Capacity  Mounted on
/dev/md/dsk/d0         3.8G     9K       3.8G     1%    /mnt/db0

  Fine.  Il dispositivo /dev/md/dsk/d0 adesso può essere usato e montato come un qualsiasi dispositivo a blocchi.


Prima redazione del 17 aprile 2005.
Ultimo aggiornamento del 16 marzo 2009.


I diritti d'autore sono detenuti dall'Autore dell'originale.
I diritti della manualistica nella versione originale sono della Sun Microsystems.
Si ritiene che gli stralci della documentazione originale tradotti siano tali, nell'uso
che ne è stato fatto e nella proporzione che ne è stata tradotta, dal rientrare nei termini
della legislazione statunitense dell'uso equo - fair use, come delineato nelle sezioni
dalla 107 alla 118 della Legge sui diritti d'autore (Copyright Act)
http://www.copyright.gov/fls/fl102.html
Salvo eventualmente le parti tradotte dalla manualistica Sun di cui sopra, il testo è
coperto dalla licenza Creative Commons versione 3.0 Attribuzione - Non commerciale -
Condivisibile alle stesse condizioni http://creativecommons.org/licenses/by-nc-sa/3.0/deed.it

< Torna al livello superiore <
<< Torna alla pagina iniziale <<