format fdisk partition print label
ls /dev/dsk metadb -c3 -f -a c0d0s6 c0d0s7 c1d0s6 c1d0s7 metadb -i // pour voir les meta db // Ne pas toucher: c'est garde ici cat /kernel/drv/md.conf
a chaque ajout de disque, il faut ajouter une slice avec des meta dbs
Resultat de format→partition→print sur le disque externe c1d0 Current partition table (original): Total disk cylinders available: 2431 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 unassigned wm 3 - 28 203.95MB (26/0/0) 417690 1 unassigned wm 29 - 54 203.95MB (26/0/0) 417690 2 backup wu 0 - 2430 18.62GB (2431/0/0) 39054015 3 unassigned wm 55 - 80 203.95MB (26/0/0) 417690 4 unassigned wm 81 - 106 203.95MB (26/0/0) 417690 5 unassigned wm 107 - 132 203.95MB (26/0/0) 417690 6 unassigned wm 133 - 158 203.95MB (26/0/0) 417690 7 unassigned wm 138 - 142 39.22MB (5/0/0) 80325 8 boot wu 0 - 0 7.84MB (1/0/0) 16065 9 alternates wm 1 - 2 15.69MB (2/0/0) 32130
Attention on ne peut pas agrandir /
Passage de c1d0s5 en slice
vi /etc/lvm/md.tab d39 1 1 c1d0s5 metainit d39 metastat d39: Concat/Stripe Size: 417690 blocks (203 MB) Stripe 0: Device Start Block Dbase Reloc c1d0s5 0 No Yes Device Relocation Information: Device Reloc Device ID c1d0 Yes id1,cmdk@AST320414A=7EC0G1JQ six# metastat -p d39 1 1 c1d0s5 six# metastat -c d39 s 203MB c1d0s5
six# newfs /dev/md/rdsk/d39 /dev/md/rdsk/d39: Unable to find Media type. Proceeding with system determined parameters. newfs: construct a new file system /dev/md/rdsk/d39: (y/n)? y Warning: 5670 sector(s) in last cylinder unallocated /dev/md/rdsk/d39: 417690 sectors in 28 cylinders of 240 tracks, 63 sectors 204.0MB in 6 cyl groups (5 c/g, 36.91MB/g, 17536 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, 75696, 151360, 227024, 302688, 378352, six# mkdir /san.d39 six# mount /dev/md/dsk/d39 /san.d39 six# echo ok > /san.d39/test.txt six# vi /etc/vfstab // Pour que ce soit accessible apres un reboot /dev/md/dsk/d39 /dev/md/dsk/d39 /san.d39 ufs 3 yes logging
// On fait le menage vi /etc/vfstab umount /san.d39 metaclear d39 vi /etc/lvm/md.tab
metainit d30 2 1 c1d0s5 1 c1d0s6 six# metainit d30 2 1 c1d0s5 1 c1d0s6 d30: Concat/Stripe is setup six# metastat -p d30 2 1 c1d0s5 \ 1 c1d0s6 six# metastat -c d30 s 392MB c1d0s5 c1d0s6 six# metastat d30: Concat/Stripe Size: 803250 blocks (392 MB) Stripe 0: Device Start Block Dbase Reloc c1d0s5 0 No Yes Stripe 1: Device Start Block Dbase Reloc c1d0s6 32130 Yes Yes Device Relocation Information: Device Reloc Device ID c1d0 Yes id1,cmdk@AST320414A=7EC0G1JQ six# newfs /dev/md/rdsk/d30 /dev/md/rdsk/d30: Unable to find Media type. Proceeding with system determined parameters. newfs: /dev/md/rdsk/d30 last mounted as /san.d39 newfs: construct a new file system /dev/md/rdsk/d30: (y/n)? y Warning: 13230 sector(s) in last cylinder unallocated /dev/md/rdsk/d30: 803250 sectors in 54 cylinders of 240 tracks, 63 sectors 392.2MB in 11 cyl groups (5 c/g, 36.91MB/g, 17536 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, 75696, 151360, 227024, 302688, 378352, 454016, 529680, 605344, 681008, 756672 six# mkdir /san.d30 six# mount /dev/md/dsk/d30 /san.d30 echo ok > /san.d30/test.txt umount /san.d30 metaclear d30
su ou telnet 0 format // pour creer une slice 0 de tout le disque sur chacun des 3 disques // on a 3 slices c1t1d0s0 c1t2d0s0 et c1t3d0s0 qui representent l'ensemble des 3 disques // On cree les bases de donnees de disk suite pour qu'il puisse bosser sur les disques metadb -c3 -f -a c1t1d0 c1t2d0 c1t3d0 // on cree le raid 0 sur 3 disques metainit d30 3 1 c1t1d0s0 1 c1t2d0s0 1 c1t3d0s0 // on verifie metastat metastat -c metastat -p // on format la partition newfs /dev/md/rdsk/d30 // on cree le point de ontage /files mkdir /files mount /dev/md/dsk/d30 /files // et c'est bon df -h /files
/usr/dt/bin/dtksh /usr/dt/examples
alias ll="ls -lart"
six# metainit d31 1 2 c1d0s5 c1d0s6 -i 64k d31: Concat/Stripe is setup six# metastat d31: Concat/Stripe Size: 755055 blocks (368 MB) Stripe 0: (interlace: 128 blocks) Device Start Block Dbase Reloc c1d0s5 0 No Yes c1d0s6 32130 Yes Yes Device Relocation Information: Device Reloc Device ID c1d0 Yes id1,cmdk@AST320414A=7EC0G1JQ six# mkdir /stripe.san six# mount /dev/md/dsk/d31 /stripe.san six# metattach d31 /dev/dsk/c1d0s4 d31: component is attached six# growfs -M /stripe.san /dev/md/rdsk/d31 /dev/md/rdsk/d31: Unable to find Media type. Proceeding with system determined parameters. Warning: 6616 sector(s) in last cylinder unallocated /dev/md/rdsk/d31: 1172744 sectors in 78 cylinders of 240 tracks, 63 sectors 572.6MB in 16 cyl groups (5 c/g, 36.91MB/g, 17536 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, 75696, 151360, 227024, 302688, 378352, 454016, 529680, 605344, 681008, 756672, 832336, 908000, 983664, 1059328, 1134992 six# metastat d31: Concat/Stripe Size: 1172745 blocks (572 MB) Stripe 0: (interlace: 128 blocks) Device Start Block Dbase Reloc c1d0s5 0 No Yes c1d0s6 32130 Yes Yes Stripe 1: Device Start Block Dbase Reloc c1d0s4 0 No Yes Device Relocation Information: Device Reloc Device ID c1d0 Yes id1,cmdk@AST320414A=7EC0G1JQ six#
metainit d41 1 1 c1d0s0 metainit d42 1 1 c1d0s1 metainit d40 -m d41 metattach d40 d42 newfs /dev/md/rdsk/d40 mkdir /mirroir mount /dev/md/dsk/d40 /mirroir metastat df
six# metadetach d40 d41 d40: submirror d41 is detached six# metattach d40 d41 d40: submirror d41 is attached six# six# metaoffline d40 d41 d40: submirror d41 is offlined six# metaonline d40 d41 d40: submirror d41 is onlined
six# metattach d41 /dev/dsk/c1d0s4 d41: component is attached six# metattach d42 /dev/dsk/c1d0s5 d42: component is attached six# growfs -M /mirroir /dev/md/rdsk/d40 /dev/md/rdsk/d40: Unable to find Media type. Proceeding with system determined parameters. Warning: inode blocks/cyl group (322) >= data blocks (236) in last cylinder group. This implies 3780 sector(s) cannot be allocated. /dev/md/rdsk/d40: 831600 sectors in 55 cylinders of 240 tracks, 63 sectors 406.1MB in 11 cyl groups (5 c/g, 36.91MB/g, 17536 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, 75696, 151360, 227024, 302688, 378352, 454016, 529680, 605344, 681008, 756672 six#
metainit d39 -r c1d0s0 c1d0s1 c1d0s3 -i 128k metastat newfs /dev/md/rdsk/d39 //foire car pas ready metastat metastat metastat //suit la progression de creation du raid 5 metastat newfs /dev/md/rdsk/d39 mkdir /raid5 mount /dev/md/dsk/d39 /raid5 ll /raid5 df -h /raid5 // rdsk pas organise // dsk organise // commandes sur rdsk: newfs, fsck // commandes sur dsk: mount
metainit hsp050 c1d0s4 c1d0s5 metastat metaparam d39 -h hsp050 metaparam -h hsp050 d39 metastat
six# metainit d91 -p d39 -o 1 -b 204800 d91: Soft Partition is setup six# metastat d91: Soft Partition Device: d39 State: Okay Size: 204800 blocks (100 MB) Extent Start Block Block count 0 1 204800 d39: RAID State: Okay Interlace: 256 blocks Size: 819315 blocks (400 MB) Original device: Size: 833024 blocks (406 MB) Device Start Block Dbase State Reloc Hot Spare c1d0s0 1120 No Okay Yes c1d0s1 1120 No Okay Yes c1d0s3 1120 No Okay Yes hsp050: 2 hot spares Device Status Length Reloc c1d0s4 Available 417690 blocks Yes c1d0s5 Available 417690 blocks Yes Device Relocation Information: Device Reloc Device ID c1d0 Yes id1,cmdk@AST320414A=7EC0G1JQ six# metahs -d hsp050 c1d0s5 metahs -d hsp050 c1d0s4
OBP ( Open Boot Prom) ( alias bios) ne boote que sur un slice ufs. Il prend le 1er slice system en read only /. Meme si c'est un miroir. Apres dans /etc/system, il monte le mirori du disque systeme avec -o remount rw (read write)
Unix vient de multix. 2 branches Berkeley (/usr/ucb) ou System V Sun plutot berkeley. 38 ans d'unix en 2008. Berkeley doit degager un jour.
installboot (pour Sparc) a faire sur un seul disque installgrub (pour intel) a faire sur les 2 disques du miroir (histoire de master boot record non mirore)
vi /etc/lvm/md.tab cat /etc/lvm/md.tab d10 1 1 c0d0s0 d20 1 1 c1d0s0 d0 -m d10 d11 1 1 c0d0s1 d21 1 1 c1d0s1 d1 -m d11 d15 1 1 c0d0s5 d25 1 1 c1d0s5 d5 -m d15 metainit -a -f metastat cp /etc/vfstab /etc/vfstab.san cp /etc/system /etc/system.san metaroot d0 vi /etc/vfstab metastat d5: Mirror Submirror 0: d15 State: Okay Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 41945715 blocks (20 GB) d15: Submirror of d5 State: Okay Size: 41945715 blocks (20 GB) Stripe 0: Device Start Block Dbase State Reloc Hot Spare c0d0s5 0 No Okay Yes d1: Mirror Submirror 0: d11 State: Okay Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 2104515 blocks (1.0 GB) d11: Submirror of d1 State: Okay Size: 2104515 blocks (1.0 GB) Stripe 0: Device Start Block Dbase State Reloc Hot Spare c0d0s1 0 No Okay Yes d0: Mirror Submirror 0: d10 State: Okay Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 20980890 blocks (10 GB) d10: Submirror of d0 State: Okay Size: 20980890 blocks (10 GB) Stripe 0: Device Start Block Dbase State Reloc Hot Spare c0d0s0 0 No Okay Yes d25: Concat/Stripe Size: 417690 blocks (203 MB) Stripe 0: Device Start Block Dbase Reloc c1d0s5 0 No Yes d21: Concat/Stripe Size: 417690 blocks (203 MB) Stripe 0: Device Start Block Dbase Reloc c1d0s1 0 No Yes d20: Concat/Stripe Size: 417690 blocks (203 MB) Stripe 0: Device Start Block Dbase Reloc c1d0s0 0 No Yes hsp050: is empty Device Relocation Information: Device Reloc Device ID c1d0 Yes id1,cmdk@AST320414A=7EC0G1JQ c0d0 Yes id1,cmdk@AST380011A=4JV2C9VK cat /etc/vfstab six# diff /etc/vfstab /etc/vfstab.san 6,8c6,7 < #/dev/dsk/c0d0s1 - - swap - no - < /dev/md/dsk/d1 - - swap - no - < /dev/md/dsk/d0 /dev/md/rdsk/d0 / ufs 1 no - --- > /dev/dsk/c0d0s1 - - swap - no - > /dev/dsk/c0d0s0 /dev/rdsk/c0d0s0 / ufs 1 no - 10,11c9 < #/dev/dsk/c0d0s5 /dev/rdsk/c0d0s5 /zones ufs 2 yes - < /dev/md/dsk/d5 /dev/md/rdsk/d5 /zones ufs 2 yes - --- > /dev/dsk/c0d0s5 /dev/rdsk/c0d0s5 /zones ufs 2 yes - six# lockfs -fa shutdown -y -g0 -i6
Le Raid 5 offre un bon compromi pour beaucoup de lecture et moins de 20% d'ecriture. Le Raid 1+0 est bien mieux que le raid 0+1 (idiot). Bon pour la base de donnees. Un seul plantage disque maximum en raid 5 peut etre corrige -> Raid 6 mais moins bon ou Raid 5 + Hot Spare.
Un diskset est visible de 2 machines seulement. Un disque dans un diskset est partitionne en slice 0 et slice 7 (Le slice 2 est mis a zero au lieu de la taille totale du disque -> probleme dans Veritas) Disk system est un disk set sans nom. Toutes les commandes prennent un -s pour diskset.
Veritas ou zfs seulement en 2008
Tout, toujours, jamais sont des mots dangereux.
. Fault Tolerant: service interrompu < 1 seconde . Haute disponilite: service interrompu < 6 minutes par an (6 minutes ou plus en realite). Idee: tout redondant x2 (Sun Cluster / Veritas Cluster VCS) . Distribution de charge (rsh/ssh) DRM:Distributed Ressource Management -> appli morcelable (Sun Grid Engine -> Fortement heterogene Bien/ Globus) . Cluster de calcul HPC:High Performance Computing. L'executable appelle des librairies qui sont distibuees sur plusieurs machine (norme MPI)
Machine dans un cluster s'appelle un noeud.
. Application A1 qui ne fonctionne que sur un noeud -> fonctionnement en failover . Application A2 qui fonctionne partout -> fonctionnement scalable (repartition de charges)
. Si possible separer les machines (pas dans le meme rak, pas dans la meme salle)
. Disaster Recovery -> impose des kilometres d'eloignement (Sun Cluster Geographic cluster)
Groupe de ressources:
. adresse ip : ressource reseau . stockage: ressource disque . Apllicaatif: ressource applicative (start,stop,probe ) probe check si ca marche regulierement
Test de charges:
. Mercury Load Runner (cher)
Installation de Sun Cluster . Installation de solaris sur les noeuds (classiquement) . scinstall sur un noeud puis sur l'autre . scsetup pour le choix du quorum . IPMP pour le reseau . NTP, patches, etc.. . SVM (disque suite) ou VxVM (veritas) . install de l'agent nfs scinstall sur une machine ?
ifconfig -a plumb eeprom avec local-mac-address? sur les Sparc: par defaut a false -> mac addresse identique pour toutes les interfaces reseaux On peut la passer a true -> on change avec ifconfig ether
prtpicl -v -c network | grep local Permet de savoir les adresses mac (=ethernet). kstat eri:0 | more -> ancienne facon de faire dladm show-dev
Pas d'underscore dans les hostnames ( caracteres alpha numeriques, tiret au milieu et c'est tout)
hostname dans /etc/hostname.xxx avec xxx= nom de l'interface /etc/nodename = nom du hostname /etc/inet/hosts [IP Physique] Attention! Ne pas faire de move sur /etc/hosts car c'est un lien L'adresse IP sur Solaris 10 est aussi dans /etc/inet/ipnodes (sauf si il y a un lien) Versions de solaris: 03/05 01/06 06/06 11/06, zones ok a partir de 08/07 05/08 cat /etc/release Pour la version de solaris. Pour Solaris 8, il faut aussi modifier /etc/net/*/hosts Plus brutal, il y a aussi: sys-unconfig
Redondance Une certaine forme d'equilibrage avec IPMP (IP MultiPathing) Il faut au moins 2 interfaces sur le meme segment internet (local-mac-address? a true obligatoire) On place les 2 interfaces qfe0 et qfe1 dans le meme groupe IPMP: g1 Le daemon in.mpathd demarre tout seul. A chaque interface on va associer une adresse de test t0 et t1. Autre adresse internet avec qfe0:1 par exemple Les interfaces vont pinger les adresses de test toutes les 2s (failure a 10s).(mode Probe Based) Parametrage de in.mpathd dans /etc/default/mpathd
Dans le fichier /etc/hostname.qfe0, on va tout ecrire dedans: AddresseIP t0 netmask + broadcast + group g1 -failover(pas de bascule de cette adresse ip en cas de panne) deprecated(marche que pour le ping) up addif (addinterface) nomdelamachine netmask + broadcast + up (va chercher l'ip dans /etc/hosts car on a mis le nom de la machine)
Dans le fichier /etc/hostname.qfe1, on va tout ecrire dedans: AddresseIP t1 netmask + broadcast + group g1 -failover deprecated up (On peut mettre standby, cable inactif tant que le 1er n'est pas tombe)
Sous Solaris 10, on peut travailler sans adresse de test -> On travaille en Link Based
vi /etc/hostname.elxl0 10.14.2.26 netmask 255.0.0.0 broadcast 10.255.255.255 group gsan1 -failover deprecated up addif six netmask 255.0.0.0 broadcast 10.255.255.255 up ifconfig elxl0 down unplumb ; ifconfig elxl0 plumb `cat /etc/hostname.elxl0` Created new logical interface elxl0:1 six# ifconfig -a lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 elxl0: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> mtu 1500 index 3 inet 10.14.2.26 netmask ff000000 broadcast 10.255.255.255 groupname gsan1 ether 0:a:5e:5a:1b:e2 elxl0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3 inet 10.14.2.6 netmask ff000000 broadcast 10.255.255.255
snoop pour surveiller le reseau netstat -i 5
Ou recuperer sur http://www.sunfreeware.com iftop et ses copains libcap et curses http://www.blastwave.org
routes disponibles: netstat -rn 10.0.0.0 10.14.2.6 (votre adresse) 127.0.0.1 10.14.2.6 loopback (test client/serveur sur la meme machine ca NE PASSE PAS par le reseau) 224.0.0.1 10.14.2.6 (adresse multicast) default IPDeLaPasserelle(10.0.0.1)
Passerelle dans /etc/defaultrouter (on peut en mettre plusieurs)
Pour faire du routage: On peut payer cisco ou Nortel ou passer par l'Os OS+Routage+Firewall+NAT
Firewall pour Sun: historiquement FW-1 puis SunScreen(abandonne) puis maintenant IPFilter
Pour indiquer les routes commande route /var/sadm/install/contents contient les packages installes
Recuperer gated sur gated.org (fichier de conf /etc/gated.conf)
six# routeadm Configuration Current Current Option Configuration System State --------------------------------------------------------------- IPv4 routing disabled disabled IPv6 routing disabled disabled IPv4 forwarding disabled disabled IPv6 forwarding disabled disabled Routing services "route:default ripng:default" Routing daemons: STATE FMRI disabled svc:/network/routing/legacy-routing:ipv4 disabled svc:/network/routing/legacy-routing:ipv6 disabled svc:/network/routing/ndp:default disabled svc:/network/routing/rdisc:default disabled svc:/network/routing/ripng:default disabled svc:/network/routing/ripng:quagga disabled svc:/network/routing/route:default disabled svc:/network/routing/zebra:quagga disabled svc:/network/routing/rip:quagga disabled svc:/network/routing/ospf:quagga disabled svc:/network/routing/ospf6:quagga disabled svc:/network/routing/bgp:quagga six#
Signifie que l'on accepte qu'un paquet arrive sur une interface reseau et reparte sur une autre ndd - set /dev/ip ip_forwarding 0
Sur Aix, init appelle inittab qui appelle les scripts de /etc/rc En System V, init appelle inittab qui appelle les scripts de /etc/rc2.d (niveau dse init) K22toto pour stop S23titi start
On cree le fichier dans /etc/init.d/tata et on fait un lien sur le niveau de demarrage /etc/rc2.d/S23tata un lien sur le niveau d'arret /etc/rc0.d/K01tata
Probleme: Pas de suivi de processus Pas de dependance entre service
Dans SMF(solaris 10), init appelle inittab qui demarre le demon smf smf travaille avec des services qui peuvent etre suivi, ont des dependances et qui peut demarrer des scripts V (appeles legacy)
svcs donne des infos svcadm qui fait de l'admin svccfg qui fait la config svcprop attributs
Les run levels existent toujours 3 multi-user-server, 2 multi-user et 0 On parle maintenant de milestone fmri = url pour smf
exemple de cron: svcs -a | grep cron svcs cron svcs svc:/system/cron:default (chemin absolu du service cron) svcs -p cron (donne la liste des processus suivi par cron)
ctfs garde les contrats des services (svcprop cron donne 40 dans l'exemple) ctwatch 40
six# svcs -p cron STATE STIME FMRI online 10:08:03 svc:/system/cron:default 10:08:03 1870 cron On tue le service cron six# while true while> do while> pkill -9 cron while> done ^C six# while true do pkill -9 cron done six# svcs -p cron STATE STIME FMRI maintenance 10:08:47 svc:/system/cron:default six# six# svcs -xv cron svc:/system/cron:default (clock daemon (cron)) State: maintenance since Wed Jun 25 10:08:47 2008 Reason: Start method failed repeatedly, last died on Killed (9). See: http://sun.com/msg/SMF-8000-KS See: man -M /usr/share/man -s 1M cron See: man -M /usr/share/man -s 1 crontab See: /var/svc/log/system-cron:default.log Impact: This service is not running. six# Pour le remettre en marche: six# svcadm disable cron six# svcadm enable cron six# svcs -p cron STATE STIME FMRI online 10:11:58 svc:/system/cron:default 10:11:58 4199 cron six#
vi /usr/bin/coucou.sh #!/bin/sh echo "Coucou, ici `uname -n`" ps -eaf
chmod a+x coucou.sh
Declare le servcice coucou vi /etc/inet/services coucou 7101/tcp #coucou
Mettre le service coucou sous controle d'inetd vi /etc/inet/inetd.conf coucou stream tcp nowait root /usr/bin/coucou.sh coucou.sh (les arguments avec le nom de l'exec style C)
On previent inetd avec: pkill -1 inetd
On teste le service avec telnet machine coucou
vi /usr/bin/coucou.sh #!/bin/sh echo "Coucou, ici `uname -n`" ps -eaf
chmod a+x coucou.sh
Declare le servcice coucou vi /etc/inet/services coucou 7101/tcp #coucou
Mettre le service coucou sous controle d'inetd vi /etc/inet/inetd.conf coucou stream tcp nowait root /usr/bin/coucou.sh coucou.sh (les arguments avec le nom de l'exec style C)
On previent inetd avec: inetconv
On teste le service avec telnet machine coucou
svcadm enable svc:/network/coucou/tcp:default svcadm disable svc:/network/coucou/tcp:default svcadm enable coucou/tcp svcadm disable coucou/tcp
/var/adm/messages /var/svc/log/*
mot-clefs des services de syslog: local0 a local7
man inetd /syslog daemon.notice pour inetd (service/facility)
logger force une entree dans syslog
logger -p local0.notice -t SanAppli "Message de texte pour syslog"
Il existe aussi syslogengine.
vi /etc/syslog.conf
local0.notice /var/log/sanSyslog.log local1.notice /var/log/sanSyslog.log # Attention inverse sur la machine cinq local2.notice @cinq
touch /var/log/sanSyslog.log pkill -1 syslogd logger -p local0.notice -t Thierry "Message pour cinq" cat /var/log/sanSyslog.log vi /etc/syslog.conf pkill -1 syslogd logger -p local2.notice -t Thierry "Message pour cinq"
six# cat /var/log/sanSyslog.log Jun 25 11:21:12 six SanAppli: [ID 702911 local0.notice] Message de texte pour syslog Jun 25 11:34:13 six Thierry: [ID 702911 local0.notice] Message pour cinq Jun 25 11:35:40 cinq HP: [ID 702911 local1.notice] ok test
:set list // Pour voir les tabulations dans vi :set nolist //pour virer :set number
cat -etv fichier // pour voir les tabulations
Si zombie a comme id 3700 preap 3700
Autres outils sympas: lsof fuser -cu /zones
Installer avec ./install_stb.sh to run explorer..
first time run this:
# /opt/SUNWexplo/bin/explorer -g
from then on, run this;
# /opt/SUNWexplo/bin/explorer
there are many options to explorer for certain things, but just by itself should get you most of what you need.
default in /etc/opt/SUNWexplo/default/explorer
Cpu, Memoire, Disque, Reseau
cpu: uptime, mpstat, sar, vmstat,DTrace mem:sar,ps,vmstat,prstat,stdprocess, pmap, ptree, p* (pmap -x 1), timex,swap -l,truss,DTrace disk:iostat,sar,DTrace rezo:iostat,sar,netstat,snoop,nfsstat,DTrace
Adrian Cockroft: SE Toolkit (jusqu'a Sol 8/9) Langage de tuning: SymbEl se
Dtrace Toolkit : 200 scripts DTrace de Brendon Gregg
mdb -k >maxusers/D ::dcmds ::ps quit
uptime ok entre 1 et 2 prstat au lieu de top sar -d 5 10 (10 mesures de 5 secondes sur les diques) svcadm enable sar /usr/lib/sa/sa1 1 5 sar -d Creer des fichiers dans /var/adm/sa.jourDuMois sar -A (fait presque toutes les options)
30% idle c'est bien.
Temps io = 0 en solaris 10 Temps system+io doit etre 2 fois moins important que le temps user Un pur serveur nfs n'a que du temps system...
Maintenant mpstat pour les machines multi procs. On retrouve usr sys waitio et idl a la fin. La colonne xcal (Cross Call)donne les conflits de ressource en multi thread. Les xcal ne doivent pas depasses 2000.
Activite disque: sar -d 5 5 (chiant) Temps de reponse a droite On preferre: iostat -xn 5 asvc_t = average service time = temps de reponse
La running queue: sar -q 5 5 La valeur seuil c'est 5. 15 pour un processeur, c'est trop! 15 pour 20 processeurs, c'est bien!
Buffer cache: sar -b 5 5 rcache > 95% ok wcache > 65% ok
Pour prendre de la cpu: find / > /dev/null 2>&1 &
Pour vmstat verifier le scan rate sr. Au dessus de 200, on achete des barrettes de ram ou on lance moins de process
swap -l swapfile dev swaplo blocks free /dev/dsk/c0d0s1 102,1 8 2104504 2104504 Si swap=free, on ne swappe pas. On peut temporairement enlever le swap avec swap -d et le remettre avec swap -a.
iostat -xPnce 10
Rezo: rup = uptime reseau snoop ping -s x.y.z.255 pour envoyer un ping en broadcast
panic ecrit la memoire dans la zone de swap qui devient la zone de dump Declencher un truc pire que panic: mdb -kw > rootdir/D > rootdir/W 314 > ::exit ls
Pour remettre dequerre: En root: svcadm clear boot-archive
Arreter le probleme sendmail au demarrage: vi /etc/hosts 1.2.3.4 truc truc.orsys.com (ou truc.) loghost
truss -f pour suivre les fork du programme espionne. login et init traces dans /var/adm/wtmp last /var/adm/sulog last sulog
taux de saturation d'un file system: df -o i -> on voit les inodes used et les inodes free
mount -o remount,rq / Pour remonter / avec de nouvelles options (pas sur tous les unix)
Brendon Gregg Cadence (cfao) utilise dtrace a fond. On peut geler un process, envoyer un signal sinon ce n'est que de l'observation. Langage D de DTrace. Point de controle = probe dtrace -l | more Donne tous les probes (quadruplets) quadruplet; Provider:Module:Function:Name Provider: famille de probes en fonctions des ressource du system io pour le disk/rezo, etc.. famille fbt (famille poubelle = pas classe) Module: groupes dans les familles
Pour mesurer un temps dans une fonction, on mesure le temps entre l'entry et le return
exemple de script DTrace:
vi /var/tmp/tp1.d #!/usr/sbin/dtrace -s /* #!/usr/sbin/dtrace -qs */ /* qs comme quiet, attention, il ne passe plus a la ligne trace remplace par → printf */ /*debut: ce qui s'execute avant que le traitement ne commence*/ dtrace:::BEGIN { trace("coucou"); } /*milieu: boucle sans fin sur les evenements du systeme*/ syscall::exec*:return { trace(execname); } /* fin */ dtrace:::END { trace("bye"); }
chmod +x /var/tmpl/tp1.d
Je sais (password), Je possede (carte bancaire), Je suis (biometrie)
process privileges: PATH=$PATH:/usr/sbin ppriv -e -D cat /Etc/shadow
ppriv -l | grep dtrace
man ppriv donner les droits dtrace a san: usermod -K defaultpriv=basic,dtrace_kernel,dtrace_proc,dtrace_user san cat/etc/user_attr
cat /etc/user_attr san::::type=normal;defaultpriv=basic,dtrace_kernel,dtrace_proc,dtrace_user
code de retour echo $?
Pour acceder a son serveur: cable serie si on est proche. Serveur de cable serie (Perle) = Terminal concentrateur (liaison TCP/IP) Desactiver l'envoi du break pour solaris -> Stop A RSC, SC, LOM, ALOM, ILOM = pleins de jeux de commandes differents Eviter les kvm pour sun.
sudo -> /etc/sudoers RBACK (Role Base Access Control) useradd /etc/user_attr cd /etc/security vi exec_attr // vi auth_attr Sun a ajoute le Least Privileged Mode On peut s'ajouter des privileges (dtrace) cat /etc/shadow ppriv $$ donne les privileges associes au shell courant ppriv -l -v donne tous les privileges en mode verbose ppriv -e -D cat /etc/shadow // On voit qu'il nous manque file_dac_read Un role est un utilisateur, on fait su - role pour l'utiliser.
/etc/default/login (joue pour telnet/rlogin) On commente ou decommente CONSOLE= Pas de root sur station: CONSOLE=/dev/null
/etc/ftp/ftpusers (inerdit de ftp dont root qui est interdit)
/etc/ssh/sshd_cnfig PermitRootLogin yes // Pour autoriser root svcadm disable ssh svcadm enable ssh
ls -l /usr/bin/passwd r-s r-x r-x root setuid bit = S (interet que pour les fichiers) S+x=s
ls appartient a root alice veut faire ls de passwd, le setuid permet a alice d'etre remplace par root pendant l'operation ls. Attention au backdoor! vi bidouille #!/bin/sh -p /bin/sh -p chmod 4555 bidouille ls -al bidouille Marche pas sur Aix avec un shell ssh san@0 cat/etc/shadow -> marche pas /bidouille cat/etc/shadow -> marche
Recherche des setuid en root find / -mod -4000 -user root -print
Ne pas mettre . en debut de path (en fin presque ok) Mauvais user qui cree un ls pour creer bidouille dans /tmp et qui pleure que /tmp est plein. L'admin fait ls dans /tmp -> backdoor cree.
set gid bit : S sur la seconde partie de la commande On substitue le groupe a la place du user (set-uid-bit) Soit un repertoire partage avec les droits: drwx rwx rwx user1 group1 chaque fichier cree appartient a un group different
sticky bit est un grand T: sert pour /tmp /var/tmp T+x=t /tmp par default est en virtual memory (perdu apres le reboot) /var/tmp resiste au reboot Permet d'eviter le rm pour tout detruire dans /tmp par exemple
=== SSH === ~/.ssh/id_dsa ~/.ssh/id_dsa.pub
1) alice cree ses cles ssh-keygen -t dsa passphrase:
2)scp ~/.ssh/id_dsa.pub bob@m2:/tmp
3) bob ajoute la cle a son trousseau mkdir ~/.ssh cat /tmp/id_dsa.pub >> ~/.ssh/authorized_keys
ufsdump only Sauvegardes croisees entre machine (bonne idee)
Faux disques pour zfs for i in 0 1 2 3 4 5 do mkfile 128M /dev/dsk/c3t${i}d0 done
Raid 1 (mirroir): zpool create hdmirror mirror c0t1d0 c0t2d0 zfs create hdmirror/zones mkdir /zones zfs set mountpoint=/zones hdmirror/zones
On parle de pool coupee en SPA (Storage Pool Area equivalent LVM) et la couche DataSet (equivalent FileSystem)
On cree la pool: zpool create p1 c3t0d0 zpool list zpool status -v On cree le fs zfs create p1/fs1 zfs list df -h
su zfs create trmpool/files mkdir /files zfs set mountpoint=/files trmpool/files zfs set quota=200G trmpool/files zfs set sharenfs=on trmpool/files zfs get all trmpool/files
p1 91M 25K 91M 1% /p1 p1/fs1 91M 24K 91M 1% /p1/fs1
Attention! C'est de l'espace mutualise! Il ne faut plus additionne les lignes! /p1/fs1 Histoire de label EFI des disques de plus de 1To Plus de cylindres en EFI contrairement a l'ancien style SMI
Agrandir le FS: zpool add p1 c3t1d0
Clone de disques lorque le rpool existe deja: zpool status On se debarasse du 2nd disque: zpool detach rpool c0t1d0s0 format -e selectionner le 2eme disque fdisk supprimer toutes les partitions et creer une unique partition solaris 2 (label en SMI) prtvtoc /dev/rdsk/c0t0d0s2 ~ fmthard -s - /dev/rdsk/c0t1d0s2 zpool attach -f rpool c0t0d0s0 c0t1d0s0 On installe le boot sur le 2nd disque installgrub -m /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0t1d0s0
visualiser une fstab zfs: zfs get all p1/fs1
quotas par filesystem reservation (minimum garantie) recordsize taille des blocs d'IO Changer le mountpoint: zfs set mountpoint=/sanZfs p1/fs1
Pour les clusters qui n'utilisent que la vfstab: zfs set mounpoint=legacy vi /etc/vfstab p1/fs1 (rien) /sanZfs zfs (rien) yes
Avec sharenfs on ne touche plus la dfstab
Le checksum est active par defaut -> perte legere en performances
atime = access time (change la date a chaque access)
exec off -> pas d'executables dessus setuid off -> pas de setuid sur le fs zoned off -> pas dans une zone snapdir hidden -> snapshot cache
zfs snapshot p1/fs1@nomDuSnapshot (ou date) zfs set snapdir=visible p1/fs1 cd /p1/fs1/.zfs/snapshot/
heritage entre dataset d'attributs svcadm enable webconsole svcs -a | grep conso https://localhost:6789
zfs rollback p1/fs1@sanZfs
Pour sauvegarder: zfs send -> man zfs
1)Domaines sur les grosses machines 6xxx (decoupage hardware) cher et avec contraintes
2)Sparc avec hyperviseur hardware Txxxx LDOM Solaris 10 Os Hote et des Os par dessus Os Hote sert d'arbitrage.
3)Os Hote + Virtualisation software + Os guests
Para virtualisation (qemu, xen (citrix), vmware, virtualBox) couteux en Ram
4)linux kernelThread et VServers Sun avec les zones (=containers) Aix avec les WPar ->Partitionnement d'Os cout de la zone en memoire est faible contrainte: Patch de l'os plus difficile
zoneadmd va permeabiliser la zone
zconsole = pseudo mode console
boot de zone utilisateur rapide pas la zone globale. zone pas serveur nfs
Chacun a son root et peut rebooter Isolation plutot bonne Mettre les zones sur le san. Granularite au millieme de cpu Transparent pas de difference notable avec un solaris 10 On ne peut pas s'attribuer des ressources en dehors de la zone globale
big zone pour les applis qui s'installent dans /usr. petite zone pour ne pas dupliquer les commandes ls.
1) declarer la zone zonecfg -z z1 create set zonepath=/zones/z1 set autoboot=true add net set physical=elxl0 set address=10.14.x.y+100/8 8 = netmask 255.0.0.0 end commit -> Va creer /etc/zones/z1.xml et /etc/zones/index.xml exit
2) Installer la zone zoneadm -z z1 install zoneadm list -cv
3) demarrer la zone zoneadm -z z1 ready zoneadm -z z1 boot -> repondre aux questions -> reponse dans /zones/z1/root/etc/sysidcfg
zlogin -C z1 (en mode console) Pour quitter la console: ~.
1) declarer la zone zonecfg -z z2
create remove inherit-pkg_dir dir=/sbin remove inherit-pkg_dir dir=/usr remove inherit-pkg_dir dir=/platform remove inherit-pkg_dir dir=/lib
ou
create -b
set zonepath=/zones/z2 set autoboot=true add net set physical=elxl0 set address=10.14.x.y+120/8 8 = netmask 255.0.0.0 end commit -> Va creer /etc/zones/z2.xml et /etc/zones/index.xml exit
2) Installer la zone zoneadm -z z2 install zoneadm list -cv
3) demarrer la zone zoneadm -z z2 ready zoneadm -z z2 boot -> repondre aux questions -> reponse dans /zones/z2/root/etc/sysidcfg
zlogin -C z2 (en mode console) Pour quitter la console: ~.
4) premier boot / test /etc
Changer le terminal de solaris vi /etc/.sysIDtoolState Mettre un 0 au lieu de 1 et rebooter
BrandZ : pour faire autre chose que du solaris 10: Linux, Solaris 8
Pour deplacer une zone: tar du zonepath + /etc/zones
Janus = nom du projet zone chez Sun
Controle de ressources: Controle bourrin: on associe des processor set (1 processeur entier) Controle fin: on preferre travailler avec des parts ou du cpu caping ps -cafe classe RT : Real Timle classe SYS : Systeme classe IA classe TS : Time Sharing (Priorite qui baisse sauf si process en fixed FX) disadmin, nic, priocntl Changement d'ordonnancement: On passe en FSS
zonecfg -z z1 add rctl add value (priv=privileged, limit=10, action=none) end commit
ou zonecfg -z z1 set cpu-shares=10
zonecfg -z global
changement de priorite en live: prctl -n zone.cpu-shares -i zone global prctl -n zone.cpu-shares -v 20 -r -i zone global prctl -n zone.cpu-shares -i zone global
pour mettre la machine a genoux: yes >/dev/null 2>&1
top pour les zones: prstat -Z
Flash Archive boot en rarp (broadcast) ne passe pas les routeurs dhcp tres chiant deploiement national/international: wanboot-http
Il faut recuperer la commande check du cdrom...(pas cool)