Table des matières

Standalone

Règles de base

Créer un VG (Volume Group)

On prépare les disques :

root@server2835:/$ pvcreate /dev/rdsk/c6t8d0
Physical volume "/dev/rdsk/c6t8d0" has been successfully created.
root@server2835:/$ pvcreate /dev/rdsk/c8t8d0
Physical volume "/dev/rdsk/c8t8d0" has been successfully created.

On prépare la création du VG :

root@server2835:/dev$ ls -l */group*
crw-------   1 root       sys         64 0x010000 Mar 26  2007 alt_vg00/group
crw-r-----   1 root       sys         64 0x000000 Mar 26  2007 vg00/group

root@server2835:/dev$ mkdir extvg01

root@server2835:/dev$ mknod extvg01/group c 64 0x020000

root@server2835:/dev$ ls -l */group*
crw-------   1 root       sys         64 0x010000 Mar 26  2007 alt_vg00/group
crw-r--r--   1 root       sys         64 0x020000 Jan 22 11:20 extvg01/group
crw-r-----   1 root       sys         64 0x000000 Mar 26  2007 vg00/group

On créé le VG :

root@server2835:/dev$ vgcreate -l 255 -p 128 -e 4096 -s 64 /dev/extvg01 /dev/dsk/c6t8d0
Volume group "/dev/extvg01" has been successfully created.
Volume Group configuration for /dev/extvg01 has been saved in /etc/lvmconf/extvg01.conf
root@server2835:/dev$ vgextend /dev/extvg01 /dev/dsk/c68t8d0

Créer un filesystem

lvcreate -n lv_name /dev/vg_name
lvcreate -r N -n lv_name /dev/vg_name (avec Symmetrix)
lvextend -L "taille en MO" /dev/vg_name/lv_name  /dev/dsk/cxtydz
lvextend -m 1 /dev/vg_name/lv_name /dev/dsk/cxtydz_miroir
newfs -F vxfs -o largefiles /dev/vg_name/rlv_name
mkdir <point de montage>
/dev/vg_name/lv_name <point de montage> vxfs delaylog 0 2
mount  <point de montage>
bdf
ls -l <point de montage>

Augmenter un filesystem

lvextend -L "taille en MO"  /dev/vg_name/lv_name  /dev/dsk/cxtydz /dev/dsk/cxtydz_miroir
avec cxtydz primaire et cxtydz_miroir le disque miroir (si nécessaire)
fsadm -F vxfs -b (taille en MO*1024) <point de montage>
bdf

Supprimer un filesystem

umount <point de montage>
lvremove /dev/vg_name/lv_name

Créer un rawdevice Sybase

lvcreate -n lv_name /dev/vg_name
lvcreate -r N -n lv_name /dev/vg_name (avec Symmetrix)
lvextend -L "taille en MO" /dev/vg_name/lv_name /dev/dsk/cxtydz
lvextend -m 1 /dev/vg_name/lv_name /dev/dsk/cxtydz_miroir
chown <user sybase>:<group sybase> /dev/vg_name/r*
ln -s /dev/vg_name/rlv_name /sybase_data/<instance sybase>/rawdevice/<sybase name>

Supprimer un rawdevice Sybase

lvremove /dev/vg_name/lv_name

Réduire un FS

Avec vxfs on peut réduire un FS à chaud (pas spécifique à HP-UX). On réduit d'abord le FS avec fsadm puis on réduit ensuite le LV avec lvreduce. Il faut être précis sur les tailles utilisées, ici on passe le FS à de 6 Go à 4 Go par ex. :

fsadm -b $((4000*1024)) /toto
lvreduce -L 4000 /dev/vg_titi/lv_toto

Cluster

Règles de base

Utilisation du PVG

Lorsque des LVs sont mirrorés sur des disques distants (du SAN inter sites par ex.) il faut être vigilant lors de la création ou l'augmentation des filesystems pour ne pas endommager le miroir. Si on mirrore mal (c'est-à-dire en spécifiant des mauvais disques) on se retrouve avec un mirroir incohérent et on a donc des LVs qui contiennent des PEs sur des disques situés un même site. En cas de crash d'une baie ou d'un incendie, on perd donc les disques, les données et le miroir. D'où l'intérêt de mirrorer avec soin.

Par ex. SAM1) ne sait pas déterminer où sont situés les disques physiquement. Lorsqu'on lui demande d'étendre un LV il prend les premiers disques libres. Et la plupart du temps on se retrouve un miroir incorrect car les n disques utilisés peuvent potentiellement se situés sur un même site. On peut rétablir la situation à coups de lvextend -m 0, lvextend -m 1 et pvmove mais c'est long et moins on a d'espace disque de libre et plus c'est fastidieux à faire.

Si beaucoup de personnes disposent des droits root sur une machine on a donc plus de risques d'obtenir un LVM moisi. Tout le monde ne fait pas forcément attention lors des manipulations LVM. Ou bien d'autres personnes ne savent pas faire ou pensent savoir faire. Pour éviter ça le PVG permet de réduire les risques.

Ci-dessous un résumé des étapes pour mettre en place le PVG :

VG /dev/vg_data1
PVG PV_siteA
/dev/dsk/c1t6d0
/dev/dsk/c2t6d0
PVG PV_siteB
/dev/dsk/c3t6d0
/dev/dsk/c4t6d0

Pour le VG vg_data1 on a 2 PVGs composés des disques c[1,2]t6d0 d'une part et c[3,4]t6d0 d'autre part. C'est à dire que lorsqu'on utilise lvextend ou lvreduce le système sait qu'il doit travailler avec 1 disque de chaque PVG.

On utilise l'option PVG-strict de la commande lvchange (c'est le même principe que le strict / superstrict sous AIX) :

lvchange -s /dev/vg_data1/lv_data1

:!: Attention, il faut passer le LV en PVG-strict avant de lui ajouter un mirroir. Ce qui revient à faire, dans l'ordre, : lvcreate, lvchange puis lvextend.
:!::!: Un vgexport met à vide le fichier etc/lvmpvg, il faut penser à le backuper avant de faire des export/import de VG.

C'est tout. Maintenant un simple lvextend sans spécifier de disque fonctionnera en utilisant un disque de chaque PVG. De cette manière on aura un mirroring propre. Par ailleurs on peut également utiliser la méthode en spécifiant manuellement les disques. Enfin quand on rajoute ou supprime un ou plusieurs disques d'un VG il faut penser à mettre à jour le /etc/lvmpvg en conséquence.

Création d'un filesystem

lvcreate -n lv_name /dev/vg_name
lvcreate -r N -n lv_name /dev/vg_name (avec Symmetrix)
lvextend -L "taille en MO" /dev/vg_name/lv_name /dev/dsk/cxtydz
 lvextend -m 1 /dev/vg_name/lv_name /dev/dsk/cxtydz_miroir
newfs -F vxfs -o largefiles /dev/vg_name/rlv_name

LV[26]=“/dev/vg_package2/lv_ubix_data4”; FS[26]=“/oracle_data/disk4/UBXP”; FS_MOUNT_OPT[26]=“”
LV[27]=“/dev/vg_package2bis/lv_gispro”; FS[27]=“/appli/package2/GISPROXY”; FS_MOUNT_OPT[27]=“”

mkdir <point de montage>
mount  <lv_name>  <point de montage>
chown user_name:group_name <point de montage>
vgexport -p -s -m /etc/cmcluster/Packagex/vg_name.map /dev/vg_name
vgexport /dev/vg_name
mkdir /dev/vg_name
chmod 755 /dev/vg_name
mknod /dev/vg_name/group c 64 même_mineur_du_vg_source (ex : 0x010000)
vgimport -s -m /etc/cmcluster/Packagex/vg_name.map /dev/vg_name
chown <user sybase>:<group sybase> /dev/vg_name/r*
mkdir <point de montage>

Augmentation d'un filesystem

lvextend -L "taille en MO"  /dev/vg_name/lv_name  /dev/dsk/cxtydz /dev/dsk/cxtydz_miroir
fsadm -b (taille en MO * 1024) <point de montage>
bdf

Suppression d'un filesystem

umount <point de montage>
rmdir <point de montage>
lvremove /dev/vg_name/lv_name

LV[26]=“/dev/vg_package2/lv_ubix_data4”; FS[26]=“/oracle_data/disk4/UBXP”; FS_MOUNT_OPT[26]=“”
LV[27]=“/dev/vg_package2bis/lv_gispro”; FS[27]=“/appli/package2/GISPROXY”; FS_MOUNT_OPT[27]=“”

vgexport -p -s -m /etc/cmcluster/Packagex/vg_name.map /dev/vg_name
rmdir <point de montage>
vgexport /dev/vg_name
mkdir /dev/vg_name
chmod 755 /dev/vg_name
mknod /dev/vg_name/group c 64 même_mineur_du_vg_source (ex : 0x010000)
vgimport -s -m /etc/cmcluster/Packagex/vg_name.map /dev/vg_name
chown <user sybase>:<group sybase> /dev/vg_name/r*

Création d'un rawdevice Sybase

lvcreate -n lv_name /dev/vg_name
lvcreate -r N -n lv_name /dev/vg_name (avec Symmetrix)
lvextend -L "taille en MO" /dev/vg_name/lv_name /dev/dsk/cxtydz
lvextend -m 1 /dev/vg_name/lv_name /dev/dsk/cxtydz_miroir
chown <user sybase>:<group sybase> /dev/vg_name/r*
ln -s /dev/vg_name/rlv_name /sybase_data/<instance sybase>/rawdevice/<sybase name>

Suppression d'un rawdevice Sybase

lvremove /dev/vg_name/lv_name
vgexport -p -s -m /etc/cmcluster/Packagex/vg_name.map /dev/vg_name
vgexport /dev/vg_name
mkdir /dev/vg_name
chmod 755 /dev/vg_name
mknod /dev/vg_name/group c 64 même_mineur_du_vg_source (ex : 0x010000)
vgimport -s -m /etc/cmcluster/Packagex/vg_name.map /dev/vg_name
chown <user sybase>:<group sybase> /dev/vg_name/r*

Troubleshooting

Perte de fonctionnalités

On peut avoir un souci de montage de FS avec certaines options comme convosync ou mincache. Ou alors être dans l'impossibilité d'augmenter un FS avec fsadm. Il faut vérifier la license VxFS avec vxlicense -p :

vrts:vxlicense: INFO: Feature name: HP_OnlineJFS [50]
vrts:vxlicense: INFO: Number of licenses: 1 (non-floating)
vrts:vxlicense: INFO: Expiration date: Sun Jun 24 10:00:00 2007 (148.1 days ago)
vrts:vxlicense: INFO: Release Level: 22
vrts:vxlicense: INFO: Machine Class: All
vrts:vxlicense: INFO: Site ID: 0

Il faut dans ce cas patcher le OnLineFS avec la version la plus à jour.

Supprimer le mode cluster d'un VG

vgchange -c n /dev/vg_apps

Tips

fsadm: ERROR: V-3-20340: attempt to resize <volume> failed with errno 28

Soit on augmente le FS octet par octet avec fsadm -b soit on vérifie la fragmentation du FS :

root@server:/ fsadm -E /some/fs
fsadm: /etc/default/fs is used for determining the file system type
  Extent Fragmentation Report
        Total    Average      Average     Total
        Files    File Blks    # Extents   Free Blks
        41818           4           4       57741
    blocks used for indirects: 319
    % Free blocks in extents smaller than 64 blks: 100.00
    % Free blocks in extents smaller than  8 blks: 100.00
    % blks allocated to extents 64 blks or larger: 0.86
    Free Extents By Size
           1:      57741            2:          0            4:          0
           8:          0           16:          0           32:          0
          64:          0          128:          0          256:          0
         512:          0         1024:          0         2048:          0
        4096:          0         8192:          0        16384:          0
       32768:          0        65536:          0       131072:          0
      262144:          0       524288:          0      1048576:          0
     2097152:          0      4194304:          0      8388608:          0
    16777216:          0     33554432:          0     67108864:          0
   134217728:          0    268435456:          0    536870912:          0
  1073741824:          0   2147483648:          0

Plus le nombre de blocs contenus dans les extents les plus petits est important, plus le FS est fragmenté, ce qui est le cas ici.

Pour défragmenter, à chaud :

fsadm -e -d /some/fs

/usr/contrib/bin/mapdsk

Exemple de sortie de la commande :

Au lieu de se contenter de lire les fichiers lvm, elle interroge aussi la pvda des disques, voici ce que ça donne sur un cluster:

(on teste l'ajout d'un disque sur un VG lié à un package)

server1 server2 commande
/dev/rdsk/c6t7d3UNUSED/dev/rdsk/c2t7d3UNUSEDpvcreate /dev/rdsk/c2t7d3
/dev/rdsk/c6t7d3 NOCONF in /dev/vg00 /dev/rdsk/c2t7d3NOCONF in /dev/vg00 vgextend /dev/vg_Package2 /dev/dsk/c2t7d3
/dev/rdsk/c6t7d3NOCONF in /dev/vg_Package2/dev/rdsk/c2t7d3CONFIG in /dev/vg_Package2export import des maps
/dev/rdsk/c6t7d3CONFIG in /dev/vg_Package2/dev/rdsk/c2t7d3CONFIG in /dev/vg_Package2vgreduce /dev/vg_Package2 /dev/dsk/c2t7d3
/dev/rdsk/c6t7d3ERROR in /dev/vg_Package2/dev/rdsk/c2t7d3NOCONF in /dev/vg00export import des maps
/dev/rdsk/c6t7d3NOCONF in /dev/vg00 /dev/rdsk/c2t7d3NOCONF in /dev/vg00pvremove /dev/rdsk/c2t7d3
/dev/rdsk/c6t7d3UNUSED/dev/rdsk/c2t7d3UNUSED

Du coup, on en déduit:

UNUSEDOn peut utiliser le disque on est sur de sa dispo
NOCONF in /dev/vg00Sur un noeud du cluster, le pvcreate a été fait, mais le disque n'est affecté à aucun VG
CONFIG in /dev/<vg>Le Disque est dans un VG, la map est OK
NOCONF in /dev/<vg>Le disque est dans le VG, la map n'est pas à jour export/import de map à effectuer
ERROR in /dev/<vg>Le disque n'est plus dans le VG, la map n'est pas à jour export/import de map à effectuer

Lors des tests, on n'a pas regargé le comportement des disques alternés.

Renommer un VG

vgexport -s -p -m /tmp/pkg3.map /dev/vg_Package3
vgchange -a n /dev/vg_Package3
vgexport /dev/vg_Package3
mkdir /dev/vg_Package8
chmod 755 /dev/vg_Package8
mknod /dev/vg_Package8/group c 64 0x070000
vgimport -m /tmp/pkg3.map -s /dev/vg_Package8
vgchange -a y vg_Package8
lsvg vg_Package8

Si le VG est sur un cluster, refaire 3 4 5 sur le second noeud.

1)
outil de gestion système d'HP-UX