Vinum houdt een instellingendatabase bij waarin beschreven staat welke objecten bekend zijn in het systeem. Bij het instellen vult de gebruiker deze database uit één of meer instellingenbestanden met behulp van het hulpprogramma gvinum(8). Vinum bewaart een kopie van de database op iedere slice (die Vinum apparaat noemt) die door Vinum wordt beheerd. Deze database wordt na iedere statuswijziging bijgewerkt, zodat een na een herstart accuraat de toestand van ieder Vinum object wordt weergegeven.
Het instellingenbestand beschrijft de individuele vinum objecten. De definitie van een eenvoudig volume kan er zo uitzien:
drive a device /dev/da3h volume myvol plex org concat sd length 512m drive a
Dit bestand beschrijft vier Vinum objecten:
De drive regel beschrijft een partitie (drive) en de relatieve positie ten opzichte van de onderliggende hardware. Het heeft de symbolische naam a. Deze scheiding van de symbolische naam van de schijf maakt het mogelijk om schijven te verplaatsen van de ene locatie naar de andere, zonder verwarring te veroorzaken.
De volume regel beschrijft een volume. Het enige benodigde attribuut is de naam: myvol.
De plex regel beschrijft een samenstelling. Het enige benodigde attribuut is de organisatie, in dit geval concat. Er is geen naam nodig: het systeem genereert automatisch een naam door .px aan de volumenaam toe te voegen, waarbij x het nummer van de samenstelling in het volume is. De naam van deze samenstelling wordt dus myvol.p0.
De sd regel beschrijft een subschijf. De minimale specificaties zijn de naam van een schijf waar de subschijf kan worden opgeslagen en de lengte van de subschijf. Net als bij een samenstelling is er geen naam nodig: het systeem genereert automatisch een naam door .sx aan de samenstellingnaam toe te voegen, waarbij x het nummer van de subschijf is. De naam van deze subschijf is dus myvol.p0.s0.
Na het verwerken van dit bestand ziet de uitvoer van gvinum(8) er als volgt uit:
# gvinum -> create config1 Configuration summary Drives: 1 (4 configured) Volumes: 1 (4 configured) Plexes: 1 (8 configured) Subdisks: 1 (16 configured) D a State: up Device /dev/da3h Avail: 2061/2573 MB (80%) V myvol State: up Plexes: 1 Size: 512 MB P myvol.p0 C State: up Subdisks: 1 Size: 512 MB S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
Deze uitvoer geeft de korte uitvoer van gvinum(8) weer. Het is grafisch weergegeven in Figuur 22-4.
Deze en de volgende figuren stellen een volume voor dat samenstellingen bevat die weer de subschijven bevatten. In dit triviale voorbeeld bevat het volume een samenstelling en deze samenstelling bevat een subschijf.
Dit speciale volume heeft geen voordeel boven een gewone schijf partitie. Het bevat één samenstelling, dus het is niet redundant. De samenstelling bevat één subschijf, dus er is geen verschil in de plaats van de gegevens met een conventionele schijfpartitie. In de volgende paragrafen worden meer interessante instellingen getoond.
De betrouwbaarheid van een volume wordt vergroot door spiegelen. Bij het opzetten van een gespiegeld volume is het van belang dat subschijven van iedere samenstelling op een andere schijf staan, zodat een defecte schijf niet beide samenstellingen beïnvloedt. De volgende instelling maakt een gespiegeld volume:
drive b device /dev/da4h volume mirror plex org concat sd length 512m drive a plex org concat sd length 512m drive b
In dit voorbeeld was het niet nodig om schijf a opnieuw te definiëren, omdat Vinum alle objecten bijhoudt in de instellingendatabase. Na het verwerken van deze definitie, ziet de instelling er als volgt uit:
Drives: 2 (4 configured) Volumes: 2 (4 configured) Plexes: 3 (8 configured) Subdisks: 3 (16 configured) D a State: up Device /dev/da3h Avail: 1549/2573 MB (60%) D b State: up Device /dev/da4h Avail: 2061/2573 MB (80%) V myvol State: up Plexes: 1 Size: 512 MB V mirror State: up Plexes: 2 Size: 512 MB P myvol.p0 C State: up Subdisks: 1 Size: 512 MB P mirror.p0 C State: up Subdisks: 1 Size: 512 MB P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB S myvol.p0.s0 State: up PO: 0 B Size: 512 MB S mirror.p0.s0 State: up PO: 0 B Size: 512 MB S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB
Het is grafisch weergegeven in Figuur 22-5.
In dit voorbeeld bevat iedere samenstelling de volledige 512 MB van de opslagcapaciteit. Net als in het vorige voorbeeld bevat iedere samenstelling slechts één subschijf.
Het gespiegelde volume in het vorige voorbeeld is beter bestand tegen hardware fouten dan een niet-gespiegeld volume, maar de prestaties zijn lager: iedere schrijfactie naar het volume moet op beide schijven worden uitgevoerd, waardoor een groter deel van de bandbreedte van de schijf nodig is. Als prestaties een belangrijke rol spelen, moet er een andere benadering gekozen worden: in plaats van spiegelen worden de gegevens verdeeld over zoveel mogelijk schijven. De volgende instelling laat een volume zien waarbij een samenstelling over vier schijven verdeeld is:
drive c device /dev/da5h drive d device /dev/da6h volume stripe plex org striped 512k sd length 128m drive a sd length 128m drive b sd length 128m drive c sd length 128m drive d
Zoals eerder al te zien was, is het niet nodig om schijven die al bekend zijn bij Vinum opnieuw te definiëren. Na het verwerken van deze definitie, ziet de instelling er zo uit:
Drives: 4 (4 configured) Volumes: 3 (4 configured) Plexes: 4 (8 configured) Subdisks: 7 (16 configured) D a State: up Device /dev/da3h Avail: 1421/2573 MB (55%) D b State: up Device /dev/da4h Avail: 1933/2573 MB (75%) D c State: up Device /dev/da5h Avail: 2445/2573 MB (95%) D d State: up Device /dev/da6h Avail: 2445/2573 MB (95%) V myvol State: up Plexes: 1 Size: 512 MB V mirror State: up Plexes: 2 Size: 512 MB V striped State: up Plexes: 1 Size: 512 MB P myvol.p0 C State: up Subdisks: 1 Size: 512 MB P mirror.p0 C State: up Subdisks: 1 Size: 512 MB P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB P striped.p1 State: up Subdisks: 1 Size: 512 MB S myvol.p0.s0 State: up PO: 0 B Size: 512 MB S mirror.p0.s0 State: up PO: 0 B Size: 512 MB S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB S striped.p0.s0 State: up PO: 0 B Size: 128 MB S striped.p0.s1 State: up PO: 512 kB Size: 128 MB S striped.p0.s2 State: up PO: 1024 kB Size: 128 MB S striped.p0.s3 State: up PO: 1536 kB Size: 128 MB
Dit volume wordt weergegeven in Figuur 22-6. De grijstinten geven de positie binnen de samenstelling aan: de lichtste strepen komen het eerst, de donkerste het laatst.
Met voldoende hardware is het mogelijk om een volume te bouwen met zowel verbeterde betrouwbaarheid als verbeterde prestaties ten opzichte van een standaard UNIX® partitie. De volgende instelling is een voorbeeld van zo'n volume:
volume raid10 plex org striped 512k sd length 102480k drive a sd length 102480k drive b sd length 102480k drive c sd length 102480k drive d sd length 102480k drive e plex org striped 512k sd length 102480k drive c sd length 102480k drive d sd length 102480k drive e sd length 102480k drive a sd length 102480k drive b
De subschijven van de tweede samenstelling zijn twee schijven verschoven ten opzichte van die van de eerste samenstelling. Dit zorgt ervoor dat een schrijfactie niet naar dezelfde schijven gaat, zelfs niet als die schrijfactie over twee schijven plaatsvindt.
Figuur 22-5 laat deze instelling zien in grafische vorm.