A tárgyalt problémák orvoslására a Vinumban egy négyszintű objektumhierarchiát alakítottak ki:
A legjobban észlelhető objektum a virtuális lemez, amelyet kötetnek (volume) nevezünk. Ez a kötet lényegében ugyanazokkal a tulajdonságokkal rendelkezik, mint egy UNIX®-os lemezmeghajtó, habár akadnak finomabb különbségek. Mérete korlátlan lehet.
A kötetek erekből (plex) állnak, melyek a kötet teljes területét képviselik. Ennélfogva a hierarchia ezen szintje nyújtja a redundanciát. Az ereket legegyszerűbben a tükrözött tömbben helyet foglaló lemezekként tudjuk elképzelni, melyek ugyanazt az adatot tartalmazzák.
Mivel a Vinum a UNIX lemezes tárolást megvalósító alrendszerében helyezkedik el, a többlemezes erek felépítéséhez használhatnánk a UNIX-os partíciókat, azonban ehhez a feladathoz nem eléggé rugalmasak, mivel a UNIX-os lemezek csak korlátozott számú partíciót tartalmazhatnak. A Vinum ehelyett allemeznek (subdisk) nevezett folytonos területekre osztja fel az egyes UNIX-os partíciókat (a meghajtókat), melyeket aztán az erek létrehozására használ fel.
A Vinum által létrehozott meghajtókon (drive) levő allemezek lesznek valódi UNIX-os partíciók. A Vinum-meghajtók tetszőleges számú allemezt tartalmazhatnak. Eltekintve a meghajtó elején található apró területtől, melyen a beállításokra és az állapotra vonatkozó információk tárolódnak, az egész meghajtó felhasználható adatok tárolására.
A most következő szakaszokban ismertetjük, hogy ezek az objektumok milyen módon szolgáltatják a Vinum részéről elvárt funkciókat.
Az erek képesek a Vinum konfigurációjában található több különböző meghajtón elhelyezkedő allemezeket is nyalábba kötni. Ennek következményeképpen az egyes meghajtók mérete nem korlátozza az erek méretét, emiatt a kötetét sem.
A Vinum a tükrözést több ér egyetlen kötetté olvasztásával hozza létre. Az erek mindegyike a köteten található adatokat képviseli. Egy kötet legalább egy, legfeljebb nyolc eret tartalmazhat.
Habár egy ér egy kötet teljes adatát ábrázolja, előfordulhat olyan eset, hogy bizonyos részei hiányoznak fizikai, kialakítási (nem társítottunk allemezeket hozzájuk) okokból adódóan vagy véletlenül (a hozzátartozó lemezterületek sérültek). Amíg legalább egy ér képes a kötet teljes tartalmát szolgáltatni, addig a kötet teljesen épnek tekinthető.
A Vinum az összefűzést és a csíkozást is egyaránt megvalósítja az erek szintjén:
Az összefűzött ér allemezek területeiből építkezik.
A csíkozott ér felosztja az adatokat az allemezek között. Az allemezek mindegyikének ugyanakkorának kell lennie, és legalább két allemeznek lennie kell, hogy eltérjen az összefűzött értől.
A FreeBSD 8.0 verziójában két fajta erezési megoldást találhatunk:
Az összefűzött erek a legrugalmasabbak: tetszőleges számú allemezt tartalmazhatnak, az allemezek mérete pedig eltérhet. Az ér újabb allemezek hozzáadásával tovább bővíthető. Kevesebb processzoridőt igényel, mint egy csíkozott ér, habár a kettő többletköltsége közti eltérés nem mérhető. Másrészről azonban nagyon érzékenyek a forgalmasabb pontokra, vagyis amikor az egyik lemez folyamatosan használatban van, miközben a többi üresen jár.
A csíkozott (RAID-0) erek legnagyobb előnye, hogy csökkentik a forgalmasabb pontok kialakulását: a megfelelő méretű csíkszélesség (ami kb. 256 kB) választásával el tudjuk egyengetni a tömbben dolgozó meghajtók terhelését. Ennek a megközelítésnek a hátránya (részben) a sokkal összetettebb kód, valamint az allemezekre vonatkozó megszorítás, amely szerint meg kell egyezniük a méretüknek, illetve az érhez annyira bonyolult újabb allemezeket kapcsolni, hogy a Vinum jelenleg nem is képes rá. Ezeken kívü a Vinum még támaszt egy triviális igényt is: a csíkozott érben legalább két allemeznek lennie kell, mivel másképp nem tér el egy összefűzött értől.
A 21-1 Táblázat foglalja össze az egyes erezések előnyeit és hátrányait.
Ha kérdése van a FreeBSD-vel kapcsolatban, a következő
címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése,
kérjük erre a címre írjon: <gabor@FreeBSD.org>.