Archive

Posts Tagged ‘solaris’

How to split Solaris mirror

Giugno 28th, 2008 - Giugno 28th, 2008

Eccoci, il Direttore dice che sono mono tematico ultimamente, in effetti e’ vero.

Cosi’ ecco, per gli aficionados nerd che mi leggono, un post tecnico. Come sapete sono stato in Germania la scorsa settimana per delle attivita’ on site. Uno dei task era quello di installare i server del secondo armadio per avere ridondanza. I server sono delle macchina Sun Fire X2200 (processore AMD x86).

A parte che in questo progetto ne abbiamo avuto gia’ troppo di sfiga:

  • Una di queste box che abbiamo trovato era rotta. Ti potevi connettere all’ILOM, ma dopo l’accensione della macchina ed uno start AgentInfo/console non accadeva niente. IL NIENTE. Neanche il bios si riusciva a vedere. L’omino SUN e’ poi venuto a cambiare LA CPU.
  • Su uno di questi server mesi fa siamo stati vittima di un non tanto noto bug di UFS (piu’ che bug lo chiamerei cataclisma), che ci ha fatto perdere il contenuto della root partition.
  • Il controller B di un SAN andato.

Mi chiedo se SUN faccia i quality check come si deve… Non ti aspetti simili problemi specie su macchine che si vantano di essere fighe super enterprise…

Comunque, per mettere su le macchine del secondo armadio ci si rompeva ad installare Solaris a mano in ogni macchina via CD-ROM cosi’ si e’ pensato di fare lo split del mirror delle macchine del primo armadio, usare il secondo disco di ogni macchina del primo armadio come primo disco delle nuove macchine sul secondo armadio.

Fare il boot e risincronizzare i mirror su entrambe le macchine.

Mi sono fatto una procedura che pubblico per gli altri sysadmin o wannabie tali:

  • stop all applications (runlevel 1?)
  • unmount all possible mount points. umount /var ?
  • detach the second mirror of /root, /var, swap and slice 6
    metadetach d10 d12    # /
    metadetach d50 d52    # /var
    metadetach d20 d22    # swap
    metadetach d60 d62    # slice 6, if present
  • detach the metadb on the second disk  — metadb -d /dev/dsk/c2d0s7
  • detach the metadb on the first disk forcing  –  metadb -fd /dev/dsk/c1d0s7
  • run a file check on the detached mirrors
  • mount the root file system of the detached mirror (mount /dev/dsk/c2d0s0 /mnt) (upgrade /etc/hosts, /etc/nodename, zones, etc.)
  • I hope but I don’t know if the sun engineer copied grub to the second disk.
    installgrub -m /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c2d0s0
  • remove all entries in /mnt/etc/system between  begin and end of MDD (do the same on /etc/system)
    * Begin MDD root info (do not edit)
    rootdev:/pseudo/md@0:0,10,blk
    * End MDD root info (do not edit)
  • remove all entries in /mnt/kernel/drv/md.conf between  begin and end of MDD (do the same on /mnt/kernel/drv/md.conf):
    # Begin MDD database info (do not edit)
    mddb_bootlist1="cmdk:71:16:id1,cmdk@ASEAGATE_ST32500NSSUN250G_0741B58YS4=5QE58YS4/hcmdk:71:8208:id1,cmdk@ASEAGATE_ST32500NSSUN250G_0741B58YS4=5QE58YS4/hcmdk:71:16400:id1,cmdk@ASEAGATE_ST32500NSSUN250G_0741B58YS4=5QE58YS4/hcmdk:7:16:id1,cmdk@ASEAGATE_ST32500NSSUN250G_0741B58Z22=5QE58Z22/hcmdk:7:8208:id1,cmdk@ASEAGATE_ST32500NSSUN250G_0741B58Z22=5QE58Z22/hcmdk:7:16400:id1,cmdk@ASEAGATE_ST32500NSSUN250G_0741B58Z22=5QE58Z22/h";
    # End MDD database info (do not edit)
  • save the original vfstab; copy /mnt/etc/vfstab /mnt/etc/vfstab.mirror (do this on the first disk too)
  • edit /mnt/etc/hosts, /mnt/etc/nodename, /mnt/etc/hostname.* and /mnt/etc/zones/*, etc.
  • restore the vfstab to boot without mirror device; maybe there is an old one (without zfs!!!) (do this on the first disk too)

Dopo aver effettuato questa procedura si spegne la macchina in questione con init 5.
Si spegne anche l’altra macchina. Quella ancora brasata.

Si attende un 30 secondi per lo spin off dei dischi (sono paranoico), poi si swappano i dischi e si eseguono le normali procedure di mirroring del root file system su solaris. Trovate un sacco di howto su internet ma ne pubblico uno alla prossima puntata.

Popularity: 46% [?]

pallotron Hardware, Informatica, Lavoro, Tips and Tricks, Unix , , , , ,

Solaris Mirror Root MiniHowto

- Giugno 28th, 2008

Benvenuti nella seconda puntata.

Questo minihowto suppone che il vostro disco sia organizzato cosi’:

  • c1d0s0 e’ /
  • c1d0s1 e’ la partizione di swap
  • c1d0s5 e’ /var
  • c1d0s6 e’ /usr
  • c1d0s7 verra’ usato per ospitare metadb

Entrare in modalita’ single user:

# init 1

Smontare tutti i possibili mount point. Usare il comando format sul secondo disco c2d0, questo ci consentira’ di usare fdisk per installare preventivamente le partizioni richieste da Solaris.

Copiare la tabella delle partizioni dal primo disco sul secondo:

# prtvtoc /dev/rdsk/c1d0s2 | fmthard -s - /dev/rdsk/c2d0s2

Installare grub sul secondo disco:

# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c2d0s0

Creare 3 metadbs sullo slice 7 di ogni disco:

# metadb -af -c 3 /dev/dsk/c1d0s7 /dev/dsk/c2d0s7

Creare i metadevice submirror associandoli ai dischi reali.

# metainit -f d11 1 1 c1d0s0
# metainit -f d12 1 1 c2d0s0

Questo comando associa il submirror d11 al mirror d10:

# metainit d10 -m d11

Si fa lo stesso con le altre slice:

# metainit -f d21 1 1 c1d0s1
# metainit -f d22 1 1 c2d0s1
# metainit d20 -m d21
 
# metainit -f d51 1 1 c1d0s5
# metainit -f d52 1 1 c2d0s5
# metainit d50 -m d51
 
# metainit -f d61 1 1 c1d0s6
# metainit -f d62 1 1 c2d0s6
# metainit d60 -m d61

A questo punto lanciare metaroot per indicare quale metadisk e’ quello che monta la partizione di root. Questo comando andra’ a modificare alcuni file come /etc/system, /kernel/drv/md.conf ed anche /etc/vfstab (ma solo la partizione /):

# metaroot d10

Controllare la situazione con il comando metastat:

# metastat

Editare vfstab per farlo puntare ai raid devices sostituendo i vari device coi corrispondendi metadevice in /dev/md/:

# vi /etc/vfstab
#device         device          mount           FS      fsck    mount   mount
#to mount       to fsck         point           type    pass    at boot options
#
fd      -       /dev/fd fd      -       no      -
/proc   -       /proc   proc    -       no      -
/dev/md/dsk/d20 -       -       swap    -       no      -
/dev/md/dsk/d10 /dev/md/rdsk/d10        /       ufs     1       no      -
/dev/md/dsk/d60        /dev/md/rdsk/d60        /usr    ufs     1       no      -
/dev/md/dsk/d50 /dev/md/rdsk/d50        /var    ufs     1       no      -
/devices        -       /devices        devfs   -       no      -
ctfs    -       /system/contract        ctfs    -       no      -
objfs   -       /system/object  objfs   -       no      -
swap - /tmp tmpfs - yes size=512m

Usare il comando lockfs e rebootare:

# lockfs -fa
# init 6

Al reboot fare l’attach dei submirror del secondo disco:

# metattach d10 d12
# metattach d20 d22
# metattach d50 d52
# metattach d60 d62

A questo punto il sync del disco secondario iniziera’. Per controlloare lo stato di avanzamento utilizzate questo comando:

# metastat | grep -i sync

PS: il sync puo’ durare diverse ore a seconda delle perfomance del vostro server e dello spazio.

Popularity: 46% [?]

pallotron Hardware, Informatica, Lavoro, Tips and Tricks, Unix , , , , , , ,

Impossibile sniffare sulla interfaccia di loopback in Solaris?

Agosto 12th, 2008 - Agosto 12th, 2008

Salve,

Oggi ho sclerato una giornata per fare il troubleshooting di una cosa su Solaris. Problemi di comunicazione random tra apache che fa reverse proxy verso un tomcat nella stessa Zona di Solaris con traffico passante sulla interfaccia di loopback. Pero’:

root@solaris # ./tcpdump -n -i lo0
tcpdump: /dev/lo0: No such file or directory
 
root@solaris # snoop -d lo0
snoop: /dev/lo: No such file or directory

Solaris. Sei proprio un sistema operativo di merda!

Leggete http://phildev.net/ipf/IPFsolaris.html#solaris12:

# Why can’t I filter on the loopback interface, or virtual interfaces?
The loopback interface on Solaris is a “fake” interface. You cannot filter it, nor can you snoop it. This is for performance reasons. Virtual interfaces in Solaris are very similar, to filter on them, use the physical interface instead.

Perfomance reasons! Ma andatevene affanculo va’!
Alla fine sono riuscito a sniffare in un altro modo invertendo il reverse proxy verso un tomcat di un altro nodo e sniffando sulla interfaccia reale… sono riuscito ad isolare il problema e a decidere chi dei due sia il colpevole (almeno credo) e domani ci lavoro.

Saluti.

Popularity: 24% [?]

pallotron Esperienze, Informatica, Lamentazioni, Lavoro, Unix , , , , , , ,