[AIX][IBM i][Linux]

Vérification du comportement du système de fichiers partagé sur Multiplatforms

Exécutez amqmfsck pour vérifier si un système de fichiers partagé sous AIX®, Linux® ou IBM® i répond aux exigences de stockage des données de gestionnaire de files d'attente d'un gestionnaire de files d'attente multi-instance. (La seule condition requise pour une configuration Windows est qu'elle utilise SMB 3 pour la mise à disposition de stockage partagé.)

Avant de commencer

Vous avez besoin d'un serveur avec un stockage en réseau et de deux autres serveurs sur lesquels IBM MQ est installé. Vous devez disposer des droits d'administrateur (root) pour configurer le système de fichiers et être un administrateur IBM MQ pour exécuter amqmfsck.

A propos de cette tâche

Conditions requises pour les systèmes de fichiers partagés sur Multiplatforms décrit la configuration de système de fichiers requise pour l'utilisation d'un système de fichiers partagé avec des gestionnaires de files d'attente multi-instance. La IBM MQ note technique Testing statement for IBM MQ multi-instance queue manager file systems répertorie les systèmes de fichiers partagés avec lesquels IBM a déjà été testé. La procédure décrite dans cette tâche explique comment tester un système de fichiers pour vous aider à déterminer si un système de fichiers non répertorié conserve l'intégrité des données.

La reprise en ligne d'un gestionnaire de files d'attente multi-instance peut être déclenchée par des pannes matérielles ou logicielles, y compris des problèmes de mise en réseau qui empêchent le gestionnaire de files d'attente d'écrire dans ses données ou fichiers journaux. Vous souhaitez principalement provoquer des incidents sur le serveur de fichiers. Mais vous devez également provoquer l'échec des serveurs IBM MQ , afin de tester la libération des verrous. Pour avoir confiance dans un système de fichiers partagé, testez tous les incidents suivants et tous les autres incidents spécifiques à votre environnement:

  1. Arrêt du système d'exploitation sur le serveur de fichiers, y compris la synchronisation des disques.
  2. Arrêt du système d'exploitation sur le serveur de fichiers sans synchronisation des disques.
  3. En appuyant sur le bouton de réinitialisation de chacun des serveurs.
  4. Extraction du câble réseau de chacun des serveurs.
  5. Retrait du câble d'alimentation de chacun des serveurs.
  6. Mise hors tension de chacun des serveurs.

Créez le répertoire sur le stockage en réseau que vous allez utiliser pour partager les données et les journaux du gestionnaire de files d'attente. Le propriétaire du répertoire doit être un administrateur IBM MQ ou, en d'autres termes, un membre du groupe mqm sur AIX and Linux. L'utilisateur qui exécute les tests doit disposer des droits d'administrateur IBM MQ .

Utilisez l'exemple d'exportation et de montage d'un système de fichiers dans Création d'un gestionnaire de files d'attente multi-instance sur Linux ou Création d'un gestionnaire de files d'attente multi-instance à l'aide de la mise en miroir du journal et NetServer sur IBM i pour vous aider à configurer le système de fichiers. Les différents systèmes de fichiers requièrent des étapes de configuration différentes. Lisez la documentation du système de fichiers.

Remarque: Exécutez l'exemple de programme IBM MQ MQI client amqsfhac en parallèle avec amqmfsck pour démontrer qu'un gestionnaire de files d'attente conserve l'intégrité des messages en cas d'échec.

Procédure

Dans chacune des vérifications, provoquez tous les échecs de la liste précédente pendant que le vérificateur de système de fichiers est en cours d'exécution. Si vous avez l'intention de couriramqsfhac en même temps queamqmfsck , faites la tâche, Exécution d'amqsfhac pour tester l'intégrité des messages en parallèle de cette tâche.

  1. Montez le répertoire exporté sur les deux serveurs IBM MQ .

    Sur le serveur de système de fichiers, créez un répertoire partagé sharedet un sous-répertoire pour sauvegarder les données des gestionnaires de files d'attente multi-instance, qmdata. Pour un exemple de configuration d'un répertoire partagé pour les gestionnaires de files d'attente multi-instance sous Linux, voir Création d'un gestionnaire de files d'attente multi-instance sous Linux

  2. Vérifiez le comportement de base du système de fichiers.
    Sur un serveur IBM MQ , exécutez le vérificateur de système de fichiers sans paramètres.
    Sur le serveur IBM MQ 1:
    amqmfsck /shared/qmdata
    
  3. Vérifiez simultanément l'écriture dans le même répertoire à partir des deux serveurs IBM MQ .
    Sur les deux serveurs IBM MQ , exécutez le vérificateur de système de fichiers en même temps avec l'option -c .
    Sur le serveur IBM MQ 1:
    amqmfsck -c /shared/qmdata
    
    Sur le serveur IBM MQ 2:
    amqmfsck -c /shared/qmdata
    
  4. Vérification de l'attente et de la libération des verrous sur les deux serveurs IBM MQ .
    Sur les deux serveurs IBM MQ , exécutez le vérificateur de système de fichiers en même temps avec l'option -w .
    Sur le serveur IBM MQ 1:
    amqmfsck -w /shared/qmdata
    
    Sur le serveur IBM MQ 2:
    amqmfsck -w /shared/qmdata
    
  5. Vérifiez l'intégrité des données.
    1. Mise en forme du fichier de test.
      Créez un fichier volumineux dans le répertoire testé. Le fichier est formaté de sorte que les phases suivantes puissent aboutir. Le fichier doit être suffisamment volumineux pour qu'il y ait suffisamment de temps pour interrompre la deuxième phase afin de simuler la reprise en ligne. Essayez la valeur par défaut de 262144 pages (1 Go). Le programme réduit automatiquement cette valeur par défaut sur les systèmes de fichiers lents de sorte que le formatage se termine en environ 60 secondes
      Sur le serveur IBM MQ 1:
      amqmfsck -f /shared/qmdata
      
      Le serveur répond avec les messages suivants:
      Formatting test file for data integrity test.
      
      
      Test file formatted with 262144 pages of data.
      
    2. Ecriture de données dans le fichier de test à l'aide du vérificateur de système de fichiers tout en provoquant un échec.

      Exécutez le programme de test sur deux serveurs en même temps. Démarrez le programme de test sur le serveur qui va subir l'échec, puis démarrez le programme de test sur le serveur qui va survivre à l'échec. Cause de l'échec que vous recherchez.

      Le premier programme de test s'arrête avec un message d'erreur. Le deuxième programme de test obtient le verrou sur le fichier de test et écrit les données dans le fichier de test en commençant là où le premier programme de test s'est arrêté. Laissez le deuxième programme de test s'exécuter jusqu'à la fin.

      Tableau 1. Exécution du contrôle d'intégrité des données sur deux serveurs en même temps
      IBM MQ Serveur 1 IBM MQ Serveur 2
      amqmfsck -a /shared/qmdata
      
       
      Please start this program on a second machine
      with the same parameters.
      
      
      File lock acquired.
      
      
      Start a second copy of this program
      with the same parameters on another server.
      
      
      
      Writing data into test file.
      
      
      
      To increase the effectiveness of the test,
      interrupt the writing by ending the process,
      temporarily breaking the network connection
      to the networked storage,
      rebooting the server or turning off the power.
      
      amqmfsck -a /shared/qmdata
      
      Waiting for lock...
      
      
      Waiting for lock...
      
      
      Waiting for lock...
      
      
      Waiting for lock...
      
      
      Waiting for lock...
      
      
      Waiting for lock...
      
      Turn the power off here.
       
      File lock acquired.
      
      
      Reading test file
      
      
      Checking the integrity of the data read.
      
      
      Appending data into the test file
      after data already found.
      
      
      The test file is full of data.
      It is ready to be inspected for data integrity.
      

      La durée du test dépend du comportement du système de fichiers. Par exemple, il faut généralement de 30 à 90 secondes à un système de fichiers pour libérer les verrous de fichier obtenus par le premier programme à la suite d'une panne de courant. Si vous avez trop peu de temps pour introduire l'échec avant que le premier programme de test ait rempli le fichier, utilisez l'option -x de amqmfsck pour supprimer le fichier de test. Essayez le test à partir du début avec un fichier de test plus grand.

    3. Vérifiez l'intégrité des données dans le fichier de test.
      Sur le serveur IBM MQ 2:
      amqmfsck -i /shared/qmdata
      
      Le serveur répond avec les messages suivants:
      File lock acquired
      
      
      Reading test file checking the integrity of the data read.
      
      
      The data read was consistent.
      
      
      The tests on the directory completed successfully.
      
  6. Supprimez les fichiers de test.
    Sur le serveur IBM MQ 2:
    amqmfsck -x /shared/qmdata
    
    Test files deleted.
    

    Le serveur répond avec le message suivant:

    Test files deleted.
    

Résultats

Le programme renvoie un code d'exit égal à zéro si les tests aboutissent et différent de zéro dans le cas contraire.

Exemples

Le premier ensemble de trois exemples montre la commande produisant une sortie minimale.

Test réussi du verrouillage de fichier de base sur un serveur
> amqmfsck /shared/qmdata
The tests on the directory completed successfully.
Echec du test du verrouillage de fichier de base sur un serveur
> amqmfsck /shared/qmdata
AMQ6245: Error Calling 'write()[2]' on file '/shared/qmdata/amqmfsck.lck' error '2'.
Test réussi du verrouillage sur deux serveurs
Tableau 2. Verrouillage réussi sur deux serveurs
IBM MQ Serveur 1 IBM MQ Serveur 2
> amqmfsck -w /shared/qmdata
Please start this program on a second
machine with the same parameters.
Lock acquired.
Press Return
or terminate the program to release the lock.
 
 
> amqmfsck -w /shared/qmdata
Waiting for lock...
[ Return pressed ]
Lock released.
 
 
Lock acquired.
The tests on the directory completed successfully
Le deuxième ensemble de trois exemples montre les mêmes commandes en mode prolixe.
Test réussi du verrouillage de fichier de base sur un serveur
> amqmfsck -v /shared/qmdata
System call: stat("/shared/qmdata")'
System call: fd = open("/shared/qmdata/amqmfsck.lck", O_RDWR, 0666)
System call: fchmod(fd, 0666)
System call: fstat(fd)
System call: fcntl(fd, F_SETLK, F_WRLCK)
System call: write(fd)
System call: close(fd)
System call: fd = open("/shared/qmdata/amqmfsck.lck", O_RDWR, 0666)
System call: fcntl(fd, F_SETLK, F_WRLCK)
System call: close(fd)
System call: fd1 = open("/shared/qmdata/amqmfsck.lck", O_RDWR, 0666)
System call: fcntl(fd1, F_SETLK, F_RDLCK)
System call: fd2 = open("/shared/qmdata/amqmfsck.lck", O_RDWR, 0666)
System call: fcntl(fd2, F_SETLK, F_RDLCK)
System call: close(fd2)
System call: write(fd1)
System call: close(fd1)
The tests on the directory completed successfully.
Echec du test du verrouillage de fichier de base sur un serveur
> amqmfsck -v /shared/qmdata
System call: stat("/shared/qmdata")
System call: fd = open("/shared/qmdata/amqmfsck.lck", O_RDWR, 0666)
System call: fchmod(fd, 0666)
System call: fstat(fd)
System call: fcntl(fd, F_SETLK, F_WRLCK)
System call: write(fd)
System call: close(fd)
System call: fd = open("/shared/qmdata/amqmfsck.lck", O_RDWR, 0666)
System call: fcntl(fd, F_SETLK, F_WRLCK)
System call: close(fd)
System call: fd = open("/shared/qmdata/amqmfsck.lck", O_RDWR, 0666)
System call: fcntl(fd, F_SETLK, F_RDLCK)
System call: fdSameFile = open("/shared/qmdata/amqmfsck.lck", O_RDWR, 0666)
System call: fcntl(fdSameFile, F_SETLK, F_RDLCK)
System call: close(fdSameFile)
System call: write(fd)
AMQxxxx: Error calling 'write()[2]' on file '/shared/qmdata/amqmfsck.lck', errno 2
(Permission denied).
Test réussi du verrouillage sur deux serveurs
Tableau 3. Verrouillage réussi sur deux serveurs-mode prolixe
IBM MQ Serveur 1 IBM MQ Serveur 2
> amqmfsck -wv /shared/qmdata
Calling 'stat("/shared/qmdata")'
Calling 'fd = open("/shared/qmdata/amqmfsck.lkw",
O_EXCL | O_CREAT | O_RDWR, 0666)'
Calling 'fchmod(fd, 0666)'
Calling 'fstat(fd)'
Please start this program on a second
machine with the same parameters.
Calling 'fcntl(fd, F_SETLK, F_WRLCK)'
Lock acquired.
Press Return
or terminate the program to release the lock.
 
 
> amqmfsck -wv /shared/qmdata
Calling 'stat("/shared/qmdata")'
Calling 'fd = open("/shared/qmdata/amqmfsck.lkw",
O_EXCL | O_CREAT | O_RDWR,0666)'
Calling 'fd = open("/shared/qmdata/amqmfsck.lkw,
O_RDWR, 0666)'
Calling 'fcntl(fd, F_SETLK, F_WRLCK)
'Waiting for lock...
[ Return pressed ]
Calling 'close(fd)'
Lock released.
 
 
Calling 'fcntl(fd, F_SETLK, F_WRLCK)'
Lock acquired.
The tests on the directory completed successfully