Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
21 novembre 2010 7 21 /11 /novembre /2010 11:40

 

Même si ZFS devient le système de fichiers par défaut pour toutes les nouvelles installations de Oracle Solaris il ne faut pas oublier de maintenir son parc existant. Hier lors d'une intervention sur un serveur Solaris 8, j'ai fait appel à mes souvenirs pour re-encapsuler un disque système sous contrôle VxVM. Ci-joint la méthode, expliquée pas à pas...

 

# Variables disques
DISKSYS=c0t0d0
DISKMIR=c1t0d0

 

# Recup de la taille de la private
PRVLEN=$(devinfo -p /dev/rdsk/${DISKSYS}s0 | awk '{print $4}')

 

# Recup offset private (slice 3)
PRVOFFSET=$(prtvtoc -h /dev/rdsk/${DISKSYS}s2 | grep " ${PRVLEN} " | awk '{print $4}')

 

# Recup offset publique (slice 4)
PUBOFFSET=$(prtvtoc -h /dev/rdsk/${DISKSYS}s2 | grep " ${PRVLEN} " | awk '{print $NF}')
PUBOFFSET=$((OFFSET+1))

 

# Initialisation du disque
vxdisksetup -i ${DISKMIR} prioffset=${PRVOFFSET} privlen=${PRVLEN} puboffset=${PUBOFFSET}

 

# Ajout du disque dans le dg
DGNAME=$(vxdisk -e list | grep ${DISKSYS} | awk '{print $4}')
vxdg -g ${DGNAME} adddisk rootmir=${DISKMIR}

 

#
#sd rootdisk-01  rootvol-01   rootdisk 0        12584484 0         c0t0d0   ENA
#sd rootdisk-02  swapvol-01   rootdisk 54344979 16776423 0         c0t0d0   ENA
#sd rootdisk-03  export-01    rootdisk 12584484 41760495 0         c0t0d0   ENA

 

# Mise en place de la vtoc (identique au disque système)
prtvtoc -h /dev/rdsk/${DISKSYS}s2 | while read VTOC
do
   SLICE=$(print $VTOC | awk '{ print $1 }')
   TAG=$(print $VTOC | awk '{ print $2 }')
   FLAGS=$(print $VTOC | awk '{ print $3 }')
   START=$(print $VTOC | awk '{ print $4 }')
   SIZE=$(print $VTOC | awk '{ print $5 }')

   if [ ${SLICE} != 3 -a ${SLICE} != 4 ]
   then
       vxpartadd /dev/rdsk/${DISKMIR}s2 ${SLICE} 0x${TAG} 0x2${FLAGS} ${START} ${SIZE}
   fi
done

 

# Création des subdisques, plex et synchro
vxprint -g ${DGNAME} -qst | grep ${DISKSYS} | while read CONF
do
    NUM1=$(print ${CONF} | awk '{print $2}' | cut -f2 -d"-")
    NUM2=$(print ${CONF} | awk '{print $3}' | cut -f2 -d"-")
    NUM2=$((NUM2+1))
    VOLUME=$(print ${CONF} | awk '{print $3}' | cut -f1 -d"-")
    OFFSET=$(print ${CONF} | awk '{print $5}')
    SIZE=$(print ${CONF} | awk '{print $6}')

    vxmake -g ${DGNAME} sd rootmir-${NUM1} rootmir,${OFFSET},${SIZE}
    vxmake -g ${DGNAME} plex ${VOLUME}-${NUM2} sd=rootmir-${NUM1}
    vxplex -g ${DGNAME} att ${VOLUME} ${VOLUME}-${NUM2} &
done

 

# Ne pas oublier par la suite le bootblock et de renseigner correctement l'eeprom.

 

Avec quelques petites variantes, on peut faire pas mal de choses intéressantes : génération d'un disque alterné, génération d'un disque système avec des tailles de disques différentes (recopie par ufsdump)... Attention à une chose, le dg de boot doit contenir un et un seul volume avec le tag root. Seul ce volume est bootable (si le fichier system est correctement mis à jour ainsi que la vfstab).

Partager cet article

commentaires