Solaris 10

Administration Niveau 2

Journee 1

Partitionnement des disques

 format
	fdisk
	partition
		print
	label

Utilisation de disk suit

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

Ajout de disque

a chaque ajout de disque, il faut ajouter une slice avec des meta dbs

Resultat de partitionnement

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

Cas de /

Attention on ne peut pas agrandir /

Slice

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

d39

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

Passage de c1d0s5 et c1d0s4 en concatenes (3.3)

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

Creation d'une partition concat/stripe sur 3 disques de donnees c1t1d0 c1t2d0 et c1t3d0 (avec un disque systeme sur c1t0d0)

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

dtksh

/usr/dt/bin/dtksh
/usr/dt/examples

alias sur ksh

alias ll="ls -lart"

d31 - Raid 0

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#

mirror 4.2

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

d40

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#

RAID5

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

Hot Spare

   metainit hsp050 c1d0s4 c1d0s5
   metastat
   metaparam d39 -h hsp050
   metaparam  -h hsp050 d39
   metastat

Journee 2

Soft Partition

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

Gestion du disque systeme

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.

Pour le boot x86/x64 avec SVM

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)

Encapsulation du disque systeme

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

Raid

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.

DiskSet

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.

Depasser les 16 teras

Veritas ou zfs seulement en 2008

Petits mots de Jean-Marc LACOSTE

Tout, toujours, jamais sont des mots dangereux.

http://sunsolaris.no-ip.info/solaris/

Sun Cluster

. 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 ?

Reseau

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

IPMP

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

Routage

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#

IP Forwarding

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

Journee 3

SMF

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#

Ecriture d'un service avant solaris 10

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

Ecriture d'un service en solaris 10

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

Messages d'erreurs

/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

vi

:set list  // Pour voir les tabulations dans vi
:set nolist //pour virer 
:set number 
cat -etv fichier // pour voir les tabulations

tuer les zombies

Si zombie a comme id 3700
preap 3700
Autres outils sympas:
lsof
fuser -cu /zones

Sun Explorer Data Collector pour le support sun

http://sunsolve.sun.com

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

Tuning

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

Dump System

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

Journee 4

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)

DTrace

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

http://www.brendangregg.com/dtrace.html

Shell

code de retour
echo $?

Securite

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.

root a travers le rezo

/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

Droits unix

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

Sauvegarde system

ufsdump only
Sauvegardes croisees entre machine (bonne idee)

ZFS

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

Journee 5

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

Zones

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.  

petite zone

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: ~.

grosse zone

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

Jump Start

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)
M:/SanDiegoWWW/www/dokuwiki/data/pages/solaris_10.txt · Dernière modification: 2011/11/22 14:16 par admin
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante : CC Attribution-Noncommercial 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki