Wiki en construction / PBXware 7.0 - Incident concernant les services évolués en français

ServerWARE est un outil formidable pour les infrastructures.

TUTO : Remplacer un disque défectueux sur SERVERware

Temps estimé :9 minutes

Si un des disques de votre SERVERware tombe en panne, zpool sera dans l’état : DEGRADED, sur le serveur primaire.

				
					zpool status

				
			
				
					# zpool status

pool: NETSTOR
state: DEGRADED
status: One or more devices are faulted in response to persistent errors.
    	Sufficient replicas exist for the pool to continue functioning in a
    	degraded state.
action: Replace the faulted device, or use 'zpool clear' to mark the device
    	repaired.
  scan: scrub repaired 0 in 0h0m with 0 errors on Tue Dec  6 15:10:59 2016
config:
    	NAME                	STATE 	READ WRITE CKSUM
    	NETSTOR             	DEGRADED 	0 	0 	0
      	mirror-0             	DEGRADED 	0 	0 	0
        	SW3-NETSTOR-SRV1-1  ONLINE   	0 	0 	0
        	SW3-NETSTOR-SRV2-1  FAULTED  	3 	0 	0  too many errors
errors: No known data errors
				
			

Tout d’abord, vous devez vos assurer que le disque endommagé se trouve sur un serveur secondaire et non primaire.
dans ce cas, vous pouvez le découvrir à partir de la ligne ci-dessus :
SW3-NETSTOR-SRV2-1 FAULTED

SRV2 cela signifie que le serveur n°2 a un disque endommagé.

Si c’est le cas, vous pouvez passer à l’étape suivante.

Si le disque endommagé se trouve sur le serveur primaire SRV1, vous devez d’abord effectuer une prise de contrôle manuelle et le basculer sur le serveur secondaire.

Pour le faire manuellement, connectez-vous au serveur secondaire et exécutez la commande suivante :

				
					killall -SIGUSR1 sysmonit
				
			

Ensuite, vous devrez remplacer physiquement le disque endommagé dans le serveur.

Dans le retour de la commande zpool status, vous pouvez voir que SW3-NETSTOR-SRV2-1 est corrompu, par exemple :

				
					 SW3-NETSTOR-SRV2-1  FAULTED  	3 	0 	0  too many errors

				
			

Si c’est le cas, vous devez remplacer le disque étiqueté SW3-NETSTOR-SRV2-1 par un nouveau et l’ajouter au miroir zpool.

Tout d’abord, retirez physiquement le disque défectueux du serveur et remplacez-le par un nouveau disque.

Après le remplacement, vous devriez voir un nouveau disque dans le répertoire /dev/disk/by-id/ (exemple sur la ligne 15) :

				
					# ls -lah /dev/disk/by-id
total 0
drwxr-xr-x 2 root root 480 Srp 27 08:57 .
drwxr-xr-x 7 root root 140 Srp 27 08:13 ..
lrwxrwxrwx 1 root root   9 Srp 27 08:13 ata-INTEL_SSDSC2CW060A3_CVCV308402M3060AGN -> ../../sde
lrwxrwxrwx 1 root root  10 Srp 27 08:13 ata-INTEL_SSDSC2CW060A3_CVCV308402M3060AGN-part1 -> ../../sde1
lrwxrwxrwx 1 root root  10 Srp 27 08:13 ata-INTEL_SSDSC2CW060A3_CVCV308402M3060AGN-part2 -> ../../sde2
lrwxrwxrwx 1 root root  10 Srp 27 08:13 ata-INTEL_SSDSC2CW060A3_CVCV308402M3060AGN-part9 -> ../../sde9
lrwxrwxrwx 1 root root   9 Srp 27 08:13 ata-ST31000520AS_5VX0BZN0 -> ../../sda
lrwxrwxrwx 1 root root  10 Srp 27 08:13 ata-ST31000520AS_5VX0BZN0-part1 -> ../../sda1
lrwxrwxrwx 1 root root   9 Srp 27 08:13 ata-WDC_WD10JFCX-68N6GN0_WD-WX61A465TH1Y -> ../../sdc
lrwxrwxrwx 1 root root  10 Srp 27 08:13 ata-WDC_WD10JFCX-68N6GN0_WD-WX61A465TH1Y-part1 -> ../../sdc1
lrwxrwxrwx 1 root root   9 Srp 27 08:13 ata-WDC_WD10JFCX-68N6GN0_WD-WX81EC512Y4H -> ../../sdd
lrwxrwxrwx 1 root root  10 Srp 27 08:13 ata-WDC_WD10JFCX-68N6GN0_WD-WX81EC512Y4H-part1 -> ../../sdd1
lrwxrwxrwx 1 root root   9 Srp 27 08:57 ata-WDC_WD10JFCX-68N6GN0_WD-WXK1E6458WKX -> ../../sdb
lrwxrwxrwx 1 root root   9 Srp 27 08:13 wwn-0x10076999618641940481x -> ../../sdd
lrwxrwxrwx 1 root root  10 Srp 27 08:13 wwn-0x10076999618641940481x-part1 -> ../../sdd1
lrwxrwxrwx 1 root root   9 Srp 27 08:13 wwn-0x11689569317835657217x -> ../../sdc
lrwxrwxrwx 1 root root  10 Srp 27 08:13 wwn-0x11689569317835657217x-part1 -> ../../sdc1
lrwxrwxrwx 1 root root   9 Srp 27 08:57 wwn-0x11769037186453098497x -> ../../sdb
lrwxrwxrwx 1 root root   9 Srp 27 08:13 wwn-0x12757853320186451405x -> ../../sde
lrwxrwxrwx 1 root root  10 Srp 27 08:13 wwn-0x12757853320186451405x-part1 -> ../../sde1
lrwxrwxrwx 1 root root  10 Srp 27 08:13 wwn-0x12757853320186451405x-part2 -> ../../sde2
lrwxrwxrwx 1 root root  10 Srp 27 08:13 wwn-0x12757853320186451405x-part9 -> ../../sde9
lrwxrwxrwx 1 root root   9 Srp 27 08:13 wwn-0x7847552951345238016x -> ../../sda
lrwxrwxrwx 1 root root  10 Srp 27 08:13 wwn-0x7847552951345238016x-part1 -> ../../sda1
				
			

Maintenant que vous disposez d’un nom de périphérique en bloc, vous pouvez créer une table, une partition et préparer le lecteur pour son utilisation.

Pour créer une table de partition, utilisez parted :

				
					parted /dev/ --script -- mktable gpt

				
			

Créez un nouveau libellé :

Ainsi, dans notre exemple (SW3-NETSTOR-SRV2-1) :

  • SW3-NETSTOR-SRV2 – c’est le disque virtuel sur le SERVEUR 2
  • 1 – est le numéro du disque (disque 1)

Ajoutez maintenant un libellé au nouveau disque.

Créez la partition avec le nom correspondant à notre partition défectueuse sur le serveur. Ce nom nous vient de ce qui précède :

SW3-NETSTOR-SRV2-1 FAULTED 3 0 0 too many errors

La commande dans ce cas sera :

				
					parted /dev/ --script -- mktable ~# parted /dev/ --script -- mkpart "SW3-NETSTOR-SRV2-1" 1 -1


				
			

Vous avez maintenant ajouté une nouvelle partition et créé un libellé.

Pour remplacer le disque, vous pouvez utiliser les commandes sw-nvme qui sont énumérées ci-dessous :

CommandeDescription
sw-nvme listListe tous les dispositifs connectés avec /dev/nvme-fabrics
sw-nvme discoverDécouvre tous les dispositifs exportés sur l’hôte distant avec l’IP et le port donnés
sw-nvme connectImporte le dispositif distant à partir de l’IP, du port et du nqn donnés
sw-nvme disconnectSupprime le dispositif importé de l’hôte
sw-nvme disconnect-allSupprime tous les dispositifs importés de l’hôte
sw-nvme importPour le fichier donné au format JSON approprié, importe des dispositifs distants
sw-nvme reload-importPour le fichier donné au format JSON approprié, importe des dispositifs distants après avoir déconnecté toutes les importations actuelles
sw-nvme enable-modulesCette commande active les modules noyau nécessaires pour NVMe/TCP
sw-nvme enable-namespaceActive l’espace de noms avec l’identifiant donné
sw-nvme disable-namespaceDésactive l’espace de noms avec l’identifiant donné
sw-nvme loadPour le fichier donné au format JSON approprié, exporte des dispositifs distants
sw-nvme storeSi les dispositifs sont exportés manuellement, store sauvegarde la configuration système au format JSON approprié
sw-nvme clearCette commande supprime le dispositif exporté de la configuration système. Si spécifiée avec ‘all’, elle supprimera toutes les configurations
sw-nvme exportPour le paramètre d’URL donné, exporte le dispositif sur le port avec le nqn
sw-nvme export-stopSupprime le dispositif en cours d’exportation sur le port avec l’identifiant
sw-nvme reload-configurationPour le fichier donné au format JSON approprié, exporte des dispositifs distants après avoir supprimé toutes les exportations actuelles
sw-nvme replace-diskCette commande combine ‘clear all’ et reload-configuration pour faciliter la procédure de remplacement de disque sur SERVERware
sw-nvme expand-poolCette commande met à jour la configuration d’exportation et ajoute un nouvel espace de noms dans le sous-système sw-mirror pour SERVERware

À présent, vous devrez effectuer le remplacement du disque ancien par le nouveau en utilisant la commande suivante :

				
					sw-nvme replace-disk --old /dev/disk/by-id/old_disk_id --new /dev/disk/by-id/new_disk_id

				
			

Pour trouver l’identifiant du disque ancien dans, utilisez la commande sw-nvme show.

Exemple (ligne 16) :

				
					~#sw-nvme show  
{
 "config": "/sys/kernel/config/nvmet",
 "hosts": [
  "3cc5c2aa47825e608570a938971bcd7c"
 ],
 "subsystems": {
  "sw-mirror": {
   "acl": [
    "3cc5c2aa47825e608570a938971bcd7c"
   ],
   "namespaces": [
    {
     "id": 1,
     
"device": "/dev/disk/by-id/ata-KINGSTON_SA400S37120G_50026B73804B902A",
"enabled": true
}

],

"allow_any_host": false

}

},

"ports": {

"1": {

"address": "1.1.1.31",

"port": 4420,

"address_family": "ipv4",

"trtype": "tcp",

"subsystems": "sw-mirror"

}

}

}
				
			

Maintenant que vous avez l’identifiant de l’ancien disque et du nouveau disque, votre commande pour le remplacement du disque sera :

				
					~#sw-nvme replace-disk --old /dev/disk/by-id/ata-KINGSTON_SA400S37120G_50026B73804B902A --new /dev/disk/by-id/ata-WDC_WD10JFCX-68N6GN0_WD-WXK1E6458WKX

				
			

Ceci marque la fin de la procédure sur le serveur secondaire.

Ensuite, sur le serveur principal, ajoutez un disque virtuel nouvellement créé au pool ZFS.

Ensuite, exécutez :

				
					partprobe

				
			

Vous pouvez voir l’état zpool :

				
					~# zpool status
  pool: NETSTOR
 state: DEGRADED
status: One or more devices are faulted in response to persistent errors.
    	Sufficient replicas exist for the pool to continue functioning in a
    	degraded state.
action: Replace the faulted device, or use 'zpool clear' to mark the device
    	repaired.
  scan: scrub repaired 0 in 0h0m with 0 errors on Tue Dec  6 15:10:59 2016
config:


    	NAME                	STATE 	READ WRITE CKSUM
    	NETSTOR             	DEGRADED 	0 	0 	0
      	mirror-0          	DEGRADED 	0 	0 	0
        	SW3-NETSTOR-SRV1-1  ONLINE   	0 	0 	0
        	SW3-NETSTOR-SRV2-1  FAULTED  	3 	0 	0  too many errors


errors: No known data errors
				
			

Le résultat est le suivant :

SW3-NETSTOR-SRV2-1 présente un état FAULTED, indiquant un problème avec le disque secondaire.

Vous devez à présent procéder au remplacement du GUID de l’ancien disque par celui du nouveau, afin que zpool puisse identifier ce dernier.

Pour effectuer cette modification dans le zpool, vous devez d’abord identifier le nouveau GUID. Vous pouvez utiliser la commande zdb à cette fin (lignes 35 & 36) :

				
					~# zdb
NETSTOR:
	version: 5000
	name: 'NETSTOR'
	state: 0
	txg: 15
	pool_guid: 14112818788567273316
	errata: 0
	hostname: 'HydraA-1'
	vdev_children: 1
	vdev_tree:
    	type: 'root'
    	id: 0
    	guid: 14112818788567273316
    	children[0]:
        	type: 'mirror'
        	id: 0
        	guid: 17350955661294397060
        	metaslab_array: 34
        	metaslab_shift: 33
        	ashift: 12
        	asize: 1000164294656
        	is_log: 0
        	create_txg: 4
        	children[0]:
            	type: 'disk'
            	id: 0
            	guid: 11541101181530606692
            	path: '/dev/disk/by-partlabel/SW3-NETSTOR-SRV1-1'
            	whole_disk: 1
            	create_txg: 4
        	children[1]:
            	type: 'disk'
            	id: 1
         	guid: 12365645279327980714
            	path: '/dev/disk/by-partlabel/SW3-NETSTOR-SRV2-1'
        	whole_disk: 1
            	create_txg: 4
	features_for_read:
    	com.delphix:hole_birth
    	com.delphix:embedded_data
				
			

Notez la ligne importante pour la sortie de zdb :

				
					guid: 12365645279327980714
path: '/dev/disk/by-partlabel/SW3-NETSTOR-SRV2-1'
				
			

La partie guid doit être mise à jour dans le zpool.

Vous pouvez mettre à jour le guid avec la commande :

				
					zpool replace NETSTOR   -f

				
			

Par exemple :

				
					zpool replace NETSTOR 12365645279327980714 /dev/disk/by-partlabel/SW3-NETSTOR-SRV2-1 -f

				
			

Vérifiez maintenant l’état zpool :

				
					~# zpool status
  pool: NETSTOR
 state: DEGRADED
status: One or more devices is currently being resilvered.  The pool will
    	continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver in progress since Tue Dec  6 16:12:53 2016
	591M scanned out of 728M at 65,6M/s, 0h0m to go
	590M resilvered, 81,14% done
config:
	NAME                  	STATE 	READ WRITE CKSUM
    	NETSTOR               	DEGRADED 	0 	0 	0
      	mirror-0            	DEGRADED 	0 	0 	0
        	SW3-NETSTOR-SRV1-1	ONLINE   	0 	0 	0
        	replacing-1       	UNAVAIL  	0 	0 	0
          	old             	UNAVAIL  	0 	0 	0    corrupted data
          	SW3-NETSTOR-SRV2-1  ONLINE   	0 	0 	0  (resilvering)
errors: No known data errors

				
			

Vous devez désormais attendre que le zpool ait terminé sa réversibilité et votre remplacement de disque sera opérationnel.

Partager

TUTO : Remplacer un disque défectueux sur SERVERware

Ou copiez le lien ci-dessous

CONTENU