How to split Solaris mirror

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.

Comments Posted in Hardware, Informatica, Lavoro, Tips and Tricks, Unix
Tagged , , , , ,

Comments

  1. pallotron says:

    lo dicevo infatti a mo’ di derisione! 😀
    cmq da sun ti aspetti qualcosa di meglio anche dalle macchine piu’ di fascia bassa…
    non che ci abbiamo trovato CPU scassate, e controller SAN fottuti. dovrebbero passarli sti benedetti check di qualita’ no? 😀

  2. Fabio C. says:

    Chiamare dei server con cpu AMD (nello specifico le X2200!) come “figo superenterprise” mi sembra una grossa esagerazione 🙂

  3. ELiBuS says:

    So io che sto avanti… 🙂 Solaris è rimasta system 4! 😀

  4. pallotron says:

    appunto 😀
    scusa l’ho usato fino a 5 giorni fa init 5 😀

  5. direttore says:

    elibus sei scarso, devi guardare quello di solaris

  6. ELiBuS says:

    Fratello ho verificato, non mi pare sia come dici:

    # /etc/init.d/rc takes care of runlevel handling
    #
    # runlevel 0 is System halt (Do not use this for initdefault!)
    # runlevel 1 is Single user mode
    # runlevel 2 is Local multiuser without remote network (e.g. NFS)
    # runlevel 3 is Full multiuser with network
    # runlevel 4 is Not used
    # runlevel 5 is Full multiuser with network and xdm
    # runlevel 6 is System reboot (Do not use this for initdefault!)

    Per essere ancora + certo ho appena provato un “init 5” 🙂

  7. pallotron says:

    no.
    init 6 fa reboot
    init 5 fa shutown con poweroff
    init 0 invece fa shutdown, poi ti chiede press a key to reboot.
    init 1 lo sai

    almeno questo su x86. non mi ricordo su sparc.

  8. ELiBuS says:

    non spegne ‘init 6’? init 5 dovrebbe essere l’avvio con X.