Monday, 19. June 2006Solaris Volume manager - mirror disků
Předcházející verze nástroje Solaris Volume Manager se jmenovaly různě. Nejznámější název je zřejmě v Solaris 8 obsažený Solstice DiskSuite. V Solaris 10 je již tento manager součástí systému a jmenuje se Solaris Volume Manager (SVM). Máme tak možnost přímo nástroji systému vytvářet z připojených disků RAID, aniž bychom museli použít například Veritas VxVM.
Co je k tomu pořeba? Základem jsou samozřejmě nainstalované alespoň základní packages SVM - SUNWmdr a SUNWmdu. Ty nám do systému mj. nainstalují příkazy meta*, které slouží pro manipulaci s metadevices. Solaris Volume Manager si informace o jednotlivých zařízení ukladá do takzvaných metadatabazí. Jsou to malé (cca 4MB) části partišny, ve kterých se udržují informace o aktuální konfiguraci SVM. Těchto metadb je dobré mít dostatečný počet na různých discích, abychom při havárii disku nepřišli i informace o strukuře a tím i o všechna data. Rozložení může být například takovéto: # metadb -i Vidíme, že na discích c0t0d0 a c0t1d0 jsou metadatabáze na 4., 6. a 7. partition, a že jsou up to date. Prozradím vám, že velikost 4. partišny na obou discích je pouze 1 cylindr a neobsahuje nic jiného, než metadb a partišny 6 a 7 jsou fs, které na začátku obsahují také kopii metadb. Ale popořadě. LayoutNejprve je třeba rozhodnout o layoutu disku. Pro naše účely budeme dále uvažovat o RAID-1 (tj. mirror disku). Z různých důvodů je třeba, aby na jednom disku byly alespoň 2 kopie metadb. Budeme tedy potřebovat alespoň jednu neobsazenou a nenamountovanou partišnu. Ostatní mohou být v systému použity. Znamená to, že jsme schopni nasadit SVM a zmirrorovat disk i na plně funkčním a běžícím systému. Samozřejmě, pokud budeme mít alespoň jednu partišnu s cca 8MB (velikost jedné kopie metadb je něco kolem 4MB). Takže dejme tomu, že máme funkční systém na disku c0t0d0 s tímto layoutem: partition mount point K dispozici máme ještě druhý nepoužitý disk c0t1d0, který naformátujeme naprosto shodně: # prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2 MetadbVytvoříme tedy základní (master) metadb a zkontrolujeme vytvoření: # metadb -a -f c0t0d0s4Kopie metadb vytvoříme i na zatím nepoužitých partišnách s6 a s7 obou discích a samozřejmě i na s4 na druhém disku: # medadb -a c0t1d0s4 c0t0d0s6 c0t1d0s6 c0t0d0s7 c0t1d0s7Pozor: Nevytvářejte metadb na partišnách, na kterých máte data! Příkaz metadb přepíše prvních cca 4MB. Čistý mirror (bez dat)Nyní máme zajištěn dostatečný počet metadb na obou discích a můžeme přejít k vytváření metadevices. Na c0t0d0s7 a c0t0d0s6 vytváříme nové mirrory, takže nás zatím netrápí data na disku: # metainit d17 1 1 c0t0d0s7Tímto jsme vytvořili filesystém na mirroru d7, který se skládá ze dvou submirrorů d17 (c0t0d0s7) a d27 (c0t1d0s7) Stejně budeme postupovat i pro mirror d6: # metainit d16 1 1 c0t0d0s6A mirrory jsou hotové: # metastat Za povšimnutí stojí údaj Start Block u metastat , který říká, že systém nezačíná hned na začátku partition, ale až od bloku 10176. Je to tím, že na začátku partišny máme umístěnou metadb a vlastní data tak začínají o něco dál. Můžeme je nyní přimountovat a zapsat do /etc/vfstab. # df -k(zkráceno) Mirror s datyU FS /var je to už něco jiného. Tento FS je přimountovaný a jsou na něm data. Musíme proto postupovat opatrně. Z "živé" partišny c0t0d0s5 uděláme submirror d15 a z něho mirror d5: # metainit -f d15 1 1 c0t0d0s5 Nyní máme vytvořen mirror d5, sestávající zatím pouze z jediného submirroru d15 (c0t0d0s5). Tento mirror je již funkční, ale než k němu připojíme druhý submirror (d25), musíme přemountovat /var na tento nový mirror. Uděláme to tak, že změníme v /etc/vfstab záznam pro /var například na: /dev/md/dsk/d5 /dev/md/rdsk/d5 /var ufs 1 no nologging POZOR: Druhý submirror můžeme připojit až po přemountování systému! Mirror swapuPokud budeme mirrorovat i swap, nesmíme zapomenout nastavit /etc/dumpadm.conf. Nikdy needitujeme rucne, ale pomocí:# dumpadm -d /dev/md/dsk/d1 Mirror root FSPodobný "úkon" provedeme i s root filesystemem. Opět vytvoříme zatím jen mirror (d0) s jedním submirrorem (d10) a druhý submirror (d20) přidáme až pro přemountování: # metainit -f d10 1 1 c0t0d0s0Jelikož se root FS mountuje při bootu ještě před tím, než si systém přečte /etc/vfstab, musíme mu dát vědět, že má rovnou mountovat mirror. Lze to upravit ručně v /etc/system (direktiva rootdev), ale SVM to umí vše udělat za nás příkazem metaroot: # metaroot d0Můžeme se přesvědčit, že byla provedena změna v /etc/vfstab a /etc/system. Po tomto příkazu je třeba restartovat systém, aby se již přimountovaly nové mirrory. Před tím se pro jistotu podíváme na cesty k diskům a flushneme zápisy na disk: # ls -l /dev/dsk/c0t0d0s0Pokud jsme nahodou na discich meli nejaky jiny volume manager a boot block muze korupnuty, doporucuji provest prikaz: # installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c0t0d0s0Tim se nestane, ze dostaneme pri bootu error hlaseni "The file just loaded does not appear to be executable." A nakonec restartujeme: # init 0Init 0 jsme použili proto, abychom si v ok promptu rovnou zapsali alternativní boot cesty (to pro případ, že nám odejde disk c0t0d0, z kterého normálně bootujeme): ok nvalias backup_root /pci@1f,4000/scsi@3/sd@1,0:aNyní přijde na řadu dokončení mirrorů d0 a d5. Vytvoříme druhé submirrory a připojíme je ke stávajícím mirrorům: # metainit d25 1 1 c0t1d0s5Pomocí příkazu metastat se můžeme přesvědčit, že se tyto mirrory začaly synchronizovat: # metastat d5 Během synchronizace si přečteme Solaris Volume Manager dokumentaci, nebo alespoň manuálové stránky pro příkazy metaclear, metadevadm, metainit, metaparam, metareplace, metastat, metadb, metahs, metaoffline, metarecover, metaroot, metasync, metadetach, metaimport, metaonline, metarename, metaset a metattach a po dokončení synchronizace máme celý systém na mirrorovaných filesystémech a havárie disku nás už nevyvede z míry Odezvy
Odezva ze specifického URI na tento záznam
Žádné odezvy
|
Rychlé hledáníKategorieNabídka zaměstnáníLinky
Sdílení weblogu |
