Photographie
[Solaris] Visibilité de raw devices VxVM dans une zone Solaris 10
Imaginez le problème suivant: effectuer une migration en zone Solaris 10 un serveur Sybase qui utilise des raw devices VxVM, et ce sans que les DBA n’aient à se casser la tête à recréer leur base de donnés.
Où est la difficulté ? En fait dans la zone on n’a pas la visibilité du /dev/ de la zone globale et donc on n’a pas non plus accès à /dev/vx/rdsk/.
La solution à ce petit problème est simple, mais pas immédiate. On doit cette astuce à M. Lucien Hercaud. En fait il suffit de remonter le répertoire /dev/vx/rdsk/<dgname> en LOFS dans /export/zones/<zonename>/dev/vx/rdsk/<dgname>.
En faisant cela la zone voit l’ensemble des fichiers spéciaux liés aux devices VxVM dans le chemin habituel /dev/vx/rdsk/<dgname>. Ainsi la base de donnée Sybase dont on a pris soin de monter la distribution en lofs dans la zone également peut démarrer sans aucune intervention particulière.
En voici un exemple de mise en œuvre:
Nous avons depuis longtemps (à l’époque en solaris
une base de donnée sybase stokée sur le SAN sur le DG sybasevg. La machine a été réinstallée en Solaris 8 U2 et le dataserver redémarré directement sans avoir aucun besoin d’adaptation.
Comme on voit dans le vxprint ci dessous il y a des volumes sybdata et syblog qui en fait sont utilisé en raw devices par le dataserver. Mais maintenant nous avons upgradé l’OS en Solaris 10 U6 et on veut mettre le dataserver en Zones. C’est bien plus pratique pour gérer le DRP. Et ZFS n’est pas encore suffisamment fiable tout du moins en raw devices pour mettre un dataserver dessus.
[root@sauron /dev/vx/rdsk/sybasevg][PRD]$ sudo vxprint -htg sybasevg
DG NAME NCONFIG NLOG MINORS GROUP-ID
ST NAME STATE DM_CNT SPARE_CNT APPVOL_CNT
DM NAME DEVICE TYPE PRIVLEN PUBLEN STATE
RV NAME RLINK_CNT KSTATE STATE PRIMARY DATAVOLS SRL
RL NAME RVG KSTATE STATE REM_HOST REM_DG REM_RLNK
CO NAME CACHEVOL KSTATE STATE
VT NAME NVOLUME KSTATE STATE
V NAME RVG/VSET/CO KSTATE STATE LENGTH READPOL PREFPLEX UTYPE
PL NAME VOLUME KSTATE STATE LENGTH LAYOUT NCOL/WID MODE
SD NAME PLEX DISK DISKOFFS LENGTH [COL/]OFF DEVICE MODE
SV NAME PLEX VOLNAME NVOLLAYR LENGTH [COL/]OFF AM/NM MODE
SC NAME PLEX CACHE DISKOFFS LENGTH [COL/]OFF DEVICE MODE
DC NAME PARENTVOL LOGVOL
SP NAME SNAPVOL DCO
dg sybasevg default default 117000 1215790402.361.frodon
dm sybasevg-1 c2t5006048C52A89D2Cd256s2 auto 2048 71302656 -
dm sybasevg-2 c2t5006048C52A89D2Cd257s2 auto 3583 71299200 -
dm sybasevg-3 c2t5006048C52A89D2Cd258s2 auto 3583 71299200 -
v root - ENABLED ACTIVE 4194304 SELECT root-02 fsgen
pl root-02 root ENABLED ACTIVE 4194816 STRIPE 3/256 RW
sd sybasevg-1-01 root-02 sybasevg-1 0 1398272 0/0 c2t5006048C52A89D2Cd256 ENA
sd sybasevg-2-01 root-02 sybasevg-2 0 1398272 1/0 c2t5006048C52A89D2Cd257 ENA
sd sybasevg-3-01 root-02 sybasevg-3 0 1398272 2/0 c2t5006048C52A89D2Cd258 ENA
v sybase - ENABLED ACTIVE 52412416 SELECT sybase-02 fsgen
pl sybase-02 sybase ENABLED ACTIVE 52412928 STRIPE 3/256 RW
sd sybasevg-1-02 sybase-02 sybasevg-1 1398272 17470976 0/0 c2t5006048C52A89D2Cd256 ENA
sd sybasevg-2-02 sybase-02 sybasevg-2 1398272 17470976 1/0 c2t5006048C52A89D2Cd257 ENA
sd sybasevg-3-02 sybase-02 sybasevg-3 1398272 17470976 2/0 c2t5006048C52A89D2Cd258 ENA
v sybdata01 - ENABLED ACTIVE 67108864 SELECT sybdata01-02 fsgen
pl sybdata01-02 sybdata01 ENABLED ACTIVE 67109376 STRIPE 3/256 RW
sd sybasevg-1-03 sybdata01-02 sybasevg-1 18869248 22369792 0/0 c2t5006048C52A89D2Cd256 ENA
sd sybasevg-2-03 sybdata01-02 sybasevg-2 18869248 22369792 1/0 c2t5006048C52A89D2Cd257 ENA
sd sybasevg-3-03 sybdata01-02 sybasevg-3 18869248 22369792 2/0 c2t5006048C52A89D2Cd258 ENA
v sybdata02 - ENABLED ACTIVE 67108864 SELECT sybdata02-02 fsgen
pl sybdata02-02 sybdata02 ENABLED ACTIVE 67109376 STRIPE 3/256 RW
sd sybasevg-1-04 sybdata02-02 sybasevg-1 41239040 22369792 0/0 c2t5006048C52A89D2Cd256 ENA
sd sybasevg-2-04 sybdata02-02 sybasevg-2 41239040 22369792 1/0 c2t5006048C52A89D2Cd257 ENA
sd sybasevg-3-04 sybdata02-02 sybasevg-3 41239040 22369792 2/0 c2t5006048C52A89D2Cd258 ENA
v syblog01 - ENABLED ACTIVE 4194304 SELECT syblog01-02 fsgen
pl syblog01-02 syblog01 ENABLED ACTIVE 4194816 STRIPE 3/256 RW
sd sybasevg-1-05 syblog01-02 sybasevg-1 63608832 1398272 0/0 c2t5006048C52A89D2Cd256 ENA
sd sybasevg-2-05 syblog01-02 sybasevg-2 63608832 1398272 1/0 c2t5006048C52A89D2Cd257 ENA
sd sybasevg-3-05 syblog01-02 sybasevg-3 63608832 1398272 2/0 c2t5006048C52A89D2Cd258 ENA
v syblog02 - ENABLED ACTIVE 4194304 SELECT syblog02-02 fsgen
pl syblog02-02 syblog02 ENABLED ACTIVE 4194816 STRIPE 3/256 RW
sd sybasevg-1-06 syblog02-02 sybasevg-1 65007104 1398272 0/0 c2t5006048C52A89D2Cd256 ENA
sd sybasevg-2-06 syblog02-02 sybasevg-2 65007104 1398272 1/0 c2t5006048C52A89D2Cd257 ENA
sd sybasevg-3-06 syblog02-02 sybasevg-3 65007104 1398272 2/0 c2t5006048C52A89D2Cd258 ENA
v syblog03 - ENABLED ACTIVE 4194304 SELECT syblog03-02 fsgen
pl syblog03-02 syblog03 ENABLED ACTIVE 4194816 STRIPE 3/256 RW
sd sybasevg-1-07 syblog03-02 sybasevg-1 66405376 1398272 0/0 c2t5006048C52A89D2Cd256 ENA
sd sybasevg-2-07 syblog03-02 sybasevg-2 66405376 1398272 1/0 c2t5006048C52A89D2Cd257 ENA
sd sybasevg-3-07 syblog03-02 sybasevg-3 66405376 1398272 2/0 c2t5006048C52A89D2Cd258 ENA
v sybtemp - ENABLED ACTIVE 10485760 SELECT sybtemp-02 fsgen
pl sybtemp-02 sybtemp ENABLED ACTIVE 10486272 STRIPE 3/256 RW
sd sybasevg-1-08 sybtemp-02 sybasevg-1 67803648 3495424 0/0 c2t5006048C52A89D2Cd256 ENA
sd sybasevg-2-08 sybtemp-02 sybasevg-2 67803648 3495424 1/0 c2t5006048C52A89D2Cd257 ENA
sd sybasevg-3-08 sybtemp-02 sybasevg-3 67803648 3495424 2/0 c2t5006048C52A89D2Cd258 ENA
Voici ci dessous les devices qu’on trouve dans /dev/vx/rdsk/sybasevg.
[root@sauron /dev/vx/rdsk/sybasevg][PRD]$ ls
root sybase sybdata01 sybdata02 syblog01 syblog02 syblog03 sybtemp
Ce sont ces fichiers spéciaux qui sont enregistrés dans la configuration du dataserver, il faut donc absolument que dans la zone on retrouve /dev/vx/rdsk/sybasevg. Or une zone n’est pas vraiment une machine vituelle, elle partage le kernel avec la globale et les autres zones. De fait les appels systèmes fait dans la zone sont fait sur le même kernel space que la globale. On peut donc en déduire que l’espace de nommage des major/minor est le même. Il suffirait donc de recréer les fichiers spéciaux correspondant aux devices dans la zone. Mais en fait il y a même plus simple. On peut carrément remonter le repertoire des raw devices en lofs dans la zone. Comme suit:
[root@sauron ~][PRD]$ mount -t lofs /./dev/vx/rdsk/sybasevg /export/zones/sybasezone/dev/vx/rdsk/sybasevg
[root@sauron ~][PRD]$ mount -v
[...]
/./dev/vx/rdsk/sybasevg on /export/zones/sybasezone/dev/vx/rdsk/sybasevg type lofs read-only/setuid/devices/dev=4ec0000 on Sat Feb 21 15:53:39 2009
[...]
Et l’intuition se vérifie, ça marche et le DBA n’a pas besoin de se casser la tête à reconfigurer sa base, et donc évite le risque de la casser dans la migration.
| Print article | This entry was posted by Vincent on 22 March 2009 at 11:24, and is filed under SUN, Solaris. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |
![[lang_fr]trackpad[/lang_fr] configuration du trackpad sous Tiger](http://vin0x64.fr/wp-content/uploads/2009/03/trackpad.jpg)
English