====== Timestamps dans historique ====== Dans //.bash_profile// et //.profile// : trap 'date "+# %c" | read -s' debug ====== Activer noms de users longs ====== /sbin/init.d/pwgr stop lugadmin -e /sbin/init.d/pwgr start ====== Purger wtmps ====== * Méthode bourrin cat /dev/null > /var/adm/wtmps ====== Console texte sur les ILO2 ====== Au prompt : hpiLO-> Taper //textcons//. Pour configurer en clavier français : textcons xlt 5 textcons xlt 8 ====== can't rewrite terminal control entry ====== Le / est probablement plein sur la machine en question. Il faut essayer d'ouvrir un shell minimal à distance à partir d'une autre machine (si possible) avec la commande suivante, par exemple : remsh nomdelamachine /usr/bin/ksh -i Si ça ne passe pas on peut essayer de se logger en FTP et supprimer des fichiers mais dans ce cas la il faut avoir autorisé ''root'' à se logger en FTP et c'est pas top :-\ Ou alors si un reboot peut être envisagé on peut booter en mode single, au prompt : BO PRI hpux -is Faire du ménage puis lancer un ''init 3'' ====== Une vPar ne boote pas ====== Parfois le boot ne passe pas bien. Il faut la démarrer en mode ''manuel''. Ci-dessous la procédure : * A partir d'une autre //vPar// on désactive le boot : vparmodify -p bugged_machine -B manual * On arrête la partition si elle est bloquée : vparreset -p bugged_machine -h * On démarre en init 1 : vparboot -p bugged_machine -o "-is" * Une fois au prompt on finit le boot à la main : vgchange -a y vg00 mount -a (+ les fsck si on a fait le step 2 ;-) ) init 3 ====== Récupérer les infos de modifications, accès, etc sur un fichier ====== machine:/# tusc -v ls /etc/passwd|tail|grep time st_atime: Thu Jun 22 10:41:49 2006 st_mtime: Fri Jun 16 10:54:32 2006 st_ctime: Fri Jun 16 10:54:32 2006 ====== Console/GSP sous HP-UX ====== * breaker une console [[http://forums1.itrc.hp.com/service/forums/questionanswer.do?threadId=1034463&admit=-682735245+1174053118603+28353475|Lien vers forums HP-UX]] Utiliser C-8 ou C-\ ou C-S-\ ou C-S-8 ou Backspace * passer d'une console à l'autre (vPar / nPar) Utiliser C-a * Pour sortir Utiliser C-b ====== Blocage du boot ====== Il se peut que le boot bloque juste avant le démarrage de l'OS (HP-UX start up) avec ces messages sur la console : /sbin/auto_parms: DHCP access is disabled (see /etc/auto_parms.log) stty: : Not a typewriter stty: : Not a typewriter stty: : Not a typewriter A ce stade on passe en //init 3// et les scripts du répertoire ///sbin/rc3.d// sont lancés. HP-UX scanne les paramètres de ces scripts et cherche le paramètre //start_msg//. Si un script ne contient pas ce paramètre le boot est bloqué et plus rien n'avance. En général il peut s'agir de quelqu'un qui a créé un script avec seulement les paramètres classiques : start, stop , restart et status. Dans ce cas il faut booter en init 2 par exemple et trouver le script qui pose problème. Un //grep -w start_msg// dans ///sbin/rc3.d// avec une boucle suffit à déterminer le script qui pose problème. Ou bien breaker la console (voir [[http://bazar.ndlp.info/doku.php/informatique:nix:hp:hpux_tips#console_gsp_sous_hp-ux|plus haut]].) ====== Boot is Blocked (BIB) ====== Après avoir resetté une vPar ou une cell, on peut se retrouver face à cette situation (sur le VFP) : # Partition state Activity - --------------- -------- 0 Cell(s) Booting: 7156 Logs # Cell state Activity - ---------- -------- 0 Boot is blocked (BIB) BOOT_MONARCH_DONE_CHECKING_SLAVE 2269 Logs 2 Boot is blocked (BIB) BOOT_MONARCH_DONE_CHECKING_SLAVE 2277 Logs En gros rien ne se passe. Dans ce cas il faut //booter// la partition qui pose problème : [GSP0] MP> CM Enter HE to get a list of available commands [GSP0] MP:CM> BO This command boots the selected partition. Part# Name ----- ---- 0) machine1 1) machine2 Select a partition number: 0 Do you want to boot partition number 0? (Y/[N]) Y -> The selected partition will be booted. ====== Extraire un max d'infos ====== Lancer la commande ///var/PSS/hpux_config// qui génère un fichier texte et un fichier html qui contient un paquet d'infos. ====== Delocker root sur hp-ux trusted edition ====== Pour locker : passwd -l Pour délocker : /usr/lbin/modprpw -l -k ====== Retirer le prompt "TERM = (hp)" ====== Commenter la ligne dans //.login// : eval `tset -s -Q -m ':?hp' ======Manipulations générales====== Scanner les devices ioscan -funC disk Installer les devices insf ======Ajouter un device de swap===== lvcreate -C y -L 4096 -n lvol1 /dev/vg00 swapon -p 0 /dev/vg00/lvol1 echo "/dev/vg00/lvol1 ... swap pri=0 0 0" >> /etc/fstab **Guidelines for Assigning Swap Priority**\\ http://docs.hp.com/en/B2355-90950/ch06s03.html#gdpri When you add swap areas, you can assign a priority to each. Priorities range from 0 (the highest) to 10 (the lowest). The system uses the swap areas with higher priority first. The system gives device swap priority over file system swap when each has the same priority. Here are the guidelines you should use: * Given multiple swap devices with identical performance, assign each an identical priority. By so doing, you will allow the system to use each of them on an interleaved basis which enhances performance. * Assign higher priorities to the swap areas that have faster performance and lower priorities to areas that are slower. * Give device swap areas priority over file system swap areas. * Give lower use file systems priority over higher use file systems. The primary swap area has priority 1. Device and file system swap areas set dynamically default to a priority of 1 if no priority is specified. ====== Retrouver ses disques après la perte d'une baie + reboot serveur ====== ioscan -fnCdisk vgchange -a y Ou si le vg est associé à un package vgchange -a e -q n -s ====== Recréer les alternate en masse ====== *Ménage des anciens dev ioscan -funC disk | awk '/NO_HW/ { print $3 }' | xargs -t -i rmsf -H {} *Récupération de la liste des VGs liste=`lsvg |egrep PV|awk '{print $3}'` *Recréation des VGs for dsk in $liste do echo $dsk alterdsk=`echo $dsk|awk '{gsub("c5t","c15t",$1);print $1}'` echo $alterdsk vgextend /dev/ $alterdsk done ====== Warnings sur disques ====== // vgdisplay: Warning: couldn't query physical volume "/dev/dsk/c9t0d0": The specified path does not correspond to physical volume attached to this volume group // mv /etc/lvmtab /etc/lvmtab.SAV4 vgscan -avp (pour contrôler) vgscan -av vgchange -a y Lancer un //vgsync// derrière au cas où. ====== Activer les IO asynchrones ====== Dans notre cas nous voulons activer les IO asynchrones pour Sybase. Ci-dessous les étapes nécessaires : * Modification des droits sur ///dev/async// : chown sybase:bin /dev/async * Mettre à les jours privilèges spécifiques pour Sybase (ou le groupe rattaché, ici **DBA**) : setprivgrp DBA RTPRIO MLOCK CHOWN On peut lister les privilèges avec la commande //getprivgrp//. * Vérifier si le kernel prend en charge le driver : * //HP-UX 11.11// root@SomeMachine:/ kmsystem |head -1;kmsystem |grep sync Module Configured Loadable asyncdsk Y - asyncdsk_included N - * //HP-UX 11.23// SomeMachine:/#kcmodule |head -1;kcmodule|grep sync Module State Cause Notes asyncdsk static explicit Si c'est KO il faut ajouter ce module au kernel avec //sam// par exemple (et donc effectuer un reboot après la recompilation du nouveau kernel). ====== Mirroring vg00 ====== Après changement de disque : ioscan -fnC disk vgcfgrestore -n vg00 /dev/rdsk/cXtYdZ vgchange -a y vg00 vgsync vg00 lvlnboot –v mkboot /dev/rdsk/cXtYdZ mkboot -a "hpux -lq" /dev/rdsk/cXtYdZ mkboot -b /usr/sbin/diag/lif/updatediaglif -p ISL -p HPUX -p LABEL -p AUTO /dev/rdsk/cXtYdZ mkboot -b /usr/sbin/diag/lif/updatediaglif2 -p ISL -p HPUX -p LABEL -p AUTO /dev/rdsk/cXtYdZ Si différent de ci-dessous : * setboot Primary bootpath : 0/0/1/1.0.0 Alternate bootpath : 0/0/2/0.0.0 * lvlnboot -v Boot Definitions for Volume Group /dev/vg00: Physical Volumes belonging in Root Volume Group: /dev/dsk/c2t0d0 (0/0/2/0.0.0) -- Boot Disk /dev/dsk/c1t0d0 (0/0/1/1.0.0) -- Boot Disk PV Name: lvol1 on: /dev/dsk/c2t0d0 /dev/dsk/c1t0d0 Root: lvol3 on: /dev/dsk/c2t0d0 /dev/dsk/c1t0d0 Swap: lvol2 on: /dev/dsk/c2t0d0 /dev/dsk/c1t0d0 Dump: lvol2 on: /dev/dsk/c2t0d0, 0 * Refaire le //lvlnboot// lvlnboot –b /dev/vg00/lvol1 lvlnboot –s /dev/vg00/lvol2 lvlnboot –d /dev/vg00/lvol2 lvlnboot –r /dev/vg00/lvol3 lvlnboot –R ====== Virer des disques ====== inq -nodots -sid -sym_wwn |grep -E "13C3|13C7|13CB|13B7|13BB|13BF"|while read a b c d do lssf $a|awk '{print "rmsf -H "$15}' |sh done ====== Cur PV ≠ Act PV ====== vgreduce -f /dev/vg_toto mv /etc/lvmtab /etc/lvmtab.old vgscan -av ====== Espace vide sur certains PVs ===== On peut parfois se retrouver dans ce cas lors de suppressions ratées : server022:/var/adm/syslog#pvdisplay -v /dev/dsk/c124t7d6 |grep "?" |tail 06877 current ??? 00490 06878 current ??? 00491 06879 current ??? 00492 06880 current ??? 00493 06881 current ??? 00494 06882 current ??? 00495 06883 current ??? 00496 06884 current ??? 00497 06885 current ??? 00498 06886 current ??? 00499 L'espace est réservé sur le disque mais n'est plus utilisable. En fait la suppression n'a pas été faite correctement. Il faut le recréer pour pourvoir le supprimer correctement. On récupère les infos sur le VG en question : server022:/dev/vg_Package1#ls -l|sort -k 6 total 0 crw-rw-rw- 1 root sys 64 0x020000 Nov 20 10:00 group brw-r----- 1 root sys 64 0x020001 Nov 20 10:00 lv_VAS3_sybdata31 crw-r----- 1 sybase DBA 64 0x020001 Nov 20 10:00 rlv_VAS3_sybdata31 brw-r----- 1 root sys 64 0x020002 Nov 20 10:00 lv_cftpkg1_23 crw-r----- 1 sybase DBA 64 0x020002 Nov 20 10:00 rlv_cftpkg1_23 brw-r----- 1 root sys 64 0x020003 Nov 20 10:00 lv_VAS3_sybdata07 crw-r----- 1 sybase DBA 64 0x020003 Nov 20 10:00 rlv_VAS3_sybdata07 brw-r----- 1 root sys 64 0x020004 Nov 20 10:00 lv_VAS3_sybtempdbdat2 crw-r----- 1 sybase DBA 64 0x020004 Nov 20 10:00 rlv_VAS3_sybtempdbdat2 brw-r----- 1 root sys 64 0x020005 Nov 20 10:00 lv_VAS3_sybdata08 crw-r----- 1 sybase DBA 64 0x020005 Nov 20 10:00 rlv_VAS3_sybdata08 ... brw-r----- 1 root sys 64 0x020007 Nov 20 10:00 lv_esycomore crw-r----- 1 sybase DBA 64 0x020007 Nov 20 10:00 rlv_esycomore brw-r----- 1 root sys 64 0x020008 Feb 2 10:38 lv_VAS3_sybtempdblog4 crw-r----- 1 sybase DBA 64 0x020008 Feb 2 10:38 rlv_VAS3_sybtempdblog4 brw-r----- 1 root sys 64 0x02000b Nov 20 10:00 lv_VAS3_sybmaster On trie sur les //minors// pour trouver celui qui manque dans le VG : **0x020005\\ ...\\ 0x020007** :!: //on peut aussi retrouver ces infos en restaurant le device avec TSM.// Puis on recréé le device avec un nom bidon : server022:/dev/vg_Package1#mknod rtoto c 64 0x020006 server022:/dev/vg_Package1#mknod toto b 64 0x020006 server022:/dev/vg_Package1#ls -l *toto crw-r--r-- 1 root sys 64 0x020006 Feb 2 14:36 rtoto brw-r--r-- 1 root sys 64 0x020006 Feb 2 14:36 toto On vérifie : server022:/dev/vg_Package1#pvdisplay -v /dev/dsk/c124t7d6 |grep -c "?"h 0 server022:/dev/vg_Package1#lvdisplay /dev/vg_Package1/toto |head -5 --- Logical volumes --- LV Name /dev/vg_Package1/toto VG Name /dev/vg_Package1 LV Permission read/write LV Status available/syncd On peut enfin supprimer le LV avec //lvremove//. Sur un cluster ne pas oublier de synchroniser les maps. Bravo root. ======= Renommer un disque au nom désagréable ===== server502:/appli# ls -l total 48 drwxr-xr-x 16 root sys 8192 Aug 7 2009 Package1 drwxr-xr-x 6 root sys 96 Oct 26 11:12 Package2 drwxr-xr-x 11 root sys 8192 Jul 17 2006 Package3 drwxr-xr-x 8 root sys 8192 Sep 28 2005 Package4 drwxr-xr-x 3 root sys 96 Oct 26 10:40 Package2 ls -lb (-b List nonprinting characters in the octal \ddd notation.) total 48 drwxr-xr-x 16 root sys 8192 Aug 7 2009 Package1 drwxr-xr-x 6 root sys 96 Oct 26 11:12 Package2 drwxr-xr-x 11 root sys 8192 Jul 17 2006 Package3 drwxr-xr-x 8 root sys 8192 Sep 28 2005 Package4 drwxr-xr-x 3 root sys 96 Oct 26 10:40 Packgae2\010\010\010\010age2 * Les directory ont bien un nom differents avec des caracteres speciaux, on recupère l'inode de la directory (l'inode est unique par FS) ls -lib /appli total 48 3784 drwxr-xr-x 16 root sys 8192 Aug 7 2009 Package1 3774 drwxr-xr-x 6 root sys 96 Oct 26 11:12 Package2 3780 drwxr-xr-x 11 root sys 8192 Jul 17 2006 Package3 3785 drwxr-xr-x 8 root sys 8192 Sep 28 2005 Package4 10869 drwxr-xr-x 3 root sys 96 Oct 26 10:40 Packgae2\010\010\010\010age2 * On check find /appli/ -xdev -inum 10869 /appli/Package2 find /appli/ -xdev -inum 10869 -exec ls -libd {} \; 10869 drwxr-xr-x 3 root sys 96 Oct 26 10:40 /appli/Packgae2\010\010\010\010age2 * On renomme la directory foireuse en toto find /appli/ -xdev -inum 10869 -exec mv {} toto \; ll total 48 drwxr-xr-x 16 root sys 8192 Aug 7 2009 Package1 drwxr-xr-x 6 root sys 96 Oct 26 11:12 Package2 drwxr-xr-x 11 root sys 8192 Jul 17 2006 Package3 drwxr-xr-x 8 root sys 8192 Sep 28 2005 Package4 drwxr-xr-x 3 root sys 96 Oct 26 10:40 toto Autre technique plus amusante : printf %b "Packgae2\010\010\010\010age2 toto\n"|xargs -n2 mv