Modifications du enable_background_device_scanner, de l’API et du journal PowerFlex
Summary: Cet article décrit les modifications apportées aux commandes scli et de l’API REST pour activer le scanner en arrière-plan dans VxFlexOS après l’avènement de la fonctionnalité du mode « conservateur » dans la version 3.0.0.2 HF1. Cela nous permet de mieux contrôler les fonctionnalités de création de rapports et de déterminer les modes que le client souhaite activer. Dans toutes les versions précédentes (jusqu’à la v3.0.1 incluse), le scanner en arrière-plan avait deux options, le mode device_only et le mode comparison_mode (qui incluait également toutes les fonctionnalités du mode device_only). ...
Instructions
À partir de ScaleIO v2.5, le mode de comparaison HF1 inclut une nouvelle option permettant d’ignorer la correction des erreurs de comparaison et de les signaler dans le fichier /opt/emc/scaleio/logs/comparison.0. Cela désactivait également la fonctionnalité de réparation de lecture et de création de rapports du mode device_only qui faisait partie du mode de comparaison à l’état normal.
En plus des modifications apportées à l’API et à l’acronyme, une journalisation supplémentaire a été ajoutée aux nœuds SDS lorsque le mode de comparaison du scanner en arrière-plan est activé avec la version 3.0.0.2 HF.
Modifications du journal des modifications : /opt/emc/scaleio/sds/logs/comparison.x
19/11 10:50:12.446570 Scanning combs for device be4c66a400000001, loop #1945 ended, #scanned combs=137, #sec combs (skipped)=69, #primary combs skipped=0, #scanned teeth=19418
Étapes pour réduire le nombre par défaut de fichiers comparisons.x de 10 à un nombre inférieur :
echo "tgt_comparison_file_history =2" >> /opt/emc/scaleio/sds/cfg/conf.txt ; pkill sds
Effectuez cette opération sur tous les SDS où les fichiers doivent être réduits. Nouveaux fichiers journaux de sortie CRC32 (contiennent la sortie de hachage pour les données utilisateur de 1 Mo de PRI ou SEC) à valider entre les pri et secondaires :
/opt/emc/scaleio/sds/logs/{randomID}_compare_combID_offset_[pri/sec].log
EXEMPLE :
/opt/emc/scaleio/sds/logs/1259357004_compare_71f2800001b5_18432_pri.log Trace entry correlating in comparison.x: 13/11 14:03:54.470982 vtreeId a227e28500000000 Comb 71f2800001b5, offset 18432 - compare error - succeeded to fix the secondary by the primary, randId 1259357004.
Journaux SDS/journaux/journaux trc.x correspondants :
trc.5:13/11 14:03:54.459658 0x7f598e35ddb8:mgStorageRegion_VerifyDataCRC:02769: primary and secondary checksums are different (pri=1025730551, sec=3956700141). will dump the error. randId 1259357004. combId:71f2800001b5,vTree:0xa227e28500000000,offsetVol:0x12da000,offsetInComb:18432,sizeInLbs:2048,phyToothIdx:2608,srcToothIdx:inv,dstToothIdx:inv New:(0,0) Requested:(3,1) volId:0 trc.5:13/11 14:03:54.470972 0x7f598e35ddb8:raidScan_FixSecondaryByPrimary:00295: comb:71f2800001b5,vTree:0xa227e28500000000,offsetVol:0x12da000,offsetTooth:0x0, Comb 71f2800001b5, offset 18432 - fix the secondary by the primary, randId 1259357004, rc = SUCCESS trc.5:13/11 14:03:54.470988 0x7f598e35ddb8:raidScan_HandleComparisonError:01006: compare error - succeeded to fix the secondary by the primary. randId 1259357004. combId:71f2800001b5,vTree:0xa227e28500000000,offsetVol:0x12da000,offsetInComb:18432,sizeInLbs:2048,phyToothIdx:2608,srcToothIdx:inv,dstToothIdx:inv New:(0,0) Requested:(3,1) volId:0 trc.5:13/11 14:03:54.472246 0x7f598e35ddb8:raidScan_HandleComparisonError:01046: Sent a message to the MDM on compare error (randId 1259357004). combId:71f2800001b5,vTree:0xa227e28500000000,offsetVol:0x12da000,offsetInComb:18432,sizeInLbs:2048,phyToothIdx:2608,srcToothIdx:inv,dstToothIdx:inv New:(0,0) Requested:(3,1) volId:0
Vérification des deux fichiers de sortie :
-rw-rw-rw-. 1 root root 4096 Nov 13 14:03 1259357004_compare_71f2800001b5_18432_pri.log -rw-r--r--. 1 root root 4096 Nov 19 11:10 1259357004_compare_71f2800001b5_18432_sec.log diff 1259357004_compare_71f2800001b5_18432_pri.log 1259357004_compare_71f2800001b5_18432_sec.log Binary files 1259357004_compare_71f2800001b5_18432_pri.log and 1259357004_compare_71f2800001b5_18432_sec.log differ [root@localhost logs]# md5sum 1259357004_compare_71f2800001b5_18432_pri.log d11924aadfe72dd1117f260f8b092caf 1259357004_compare_71f2800001b5_18432_pri.log [root@localhost logs]# md5sum 1259357004_compare_71f2800001b5_18432_sec.log 620f0b67a91f7f74151bc5be745b7110 1259357004_compare_71f2800001b5_18432_sec.log
Ancien commandement
scli --enable_background_device_scanner
Error: Either a valid Storage Pool ID or name must be specified
Usage: scli --enable_background_device_scanner (((--protection_domain_id | --protection_domain_name ) --storage_pool_name ) | --storage_pool_id ) --scanner_mode [--scanner_bandwidth_limit ] [--report_and_fix | --report_only]
Description: Enable background device scanner
Parameters:
--protection_domain_id Protection Domain ID
--protection_domain_name Protection Domain name
--storage_pool_name Storage Pool name
--storage_pool_id Storage Pool ID
--scanner_mode Scanner mode of operation where MODE can be one of the following:
device_only - Perform read operations. Fix from peer on errors
data_comparison - Perform the device_only test and compare the data content with peer. Not supported for fine granularity Storage Pools
--scanner_bandwidth_limit Bandwidth limit in KB per second per device. The given value should be between 10KB and 10MB. The default value is 3MB
--report_and_fix Report errors and automatically fix them (default)
--report_only Report errors without fixing them
|
Scanner Mode |
Action |
Résultat |
|
device_only |
report_and_fix |
Seules les erreurs de lecture sont détectées, signalées et corrigées. |
|
report_only |
Seules les erreurs de lecture sont détectées et signalées (non corrigées) |
|
|
Non spécifié |
Identique à report_and_fix (option 1) |
|
|
data_comparison |
report_and_fix |
Les erreurs de lecture et de comparaison sont détectées et corrigées. |
|
report_only |
Les erreurs de lecture et de comparaison sont détectées et signalées (non corrigées) |
|
|
Non spécifié |
Identique à report_and_fix (option 3) |
Nouvelle commande
Usage: scli --enable_background_device_scanner (((--protection_domain_id | --protection_domain_name ) --storage_pool_name ) | --storage_pool_id ) --read_error_action --compare_error_action [--scanner_bandwidth_limit ]
Description: Enable background device scanner
Parameters:
--protection_domain_id Protection Domain ID
--protection_domain_name Protection Domain name
--storage_pool_name Storage Pool name
--storage_pool_id Storage Pool ID
--read_error_action Read error handling. Can be one of the following:
report_and_fix - Perform read operations and automatically fix from peer on errors
report_only - Perform read operations and report errors without fixing them
--compare_error_action Compare error handling. Can be one of the following:
no_compare - Perform read operations without comparing data content with peer
report_and_fix - Perform read operations, compare data content with peer, and automatically fix
Not supported for fine granularity Storage Pools
report_only - Perform read operations, compare data content with peer, and report mismatches without fixing them
Not supported for fine granularity Storage Pools
--scanner_bandwidth_limit Bandwidth limit in KB per second per device. The given value should be between 10KB and 10MB. The default value is 3MB
|
Mode d’erreur de lecture |
Mode d’erreur de comparaison. |
Résultat |
Cartographie |
|
|
no_scan |
no_scan |
Combinaison non valide : il existe la commande disable pour cela. |
Non valide 1 |
scannerMode = NULL (non pris en charge) |
|
report_only |
Combinaison non valide : impossible de comparer sans lecture. |
Non valide 2 |
|
|
|
report_and_fix |
Combinaison non valide : impossible de comparer sans lecture. |
Non valide 3 |
|
|
|
report_only |
no_scan |
Seules les erreurs de lecture sont détectées et signalées (non corrigées) |
2 |
scannerMode = device_only compareErrorAction = NULL readErrorAction = report_only
|
|
report_only |
Les erreurs de lecture et de comparaison sont détectées et signalées (non corrigées) |
4 |
scannerMode = data_comparison compareErrorAction = report_only readErrorAction = report_only
|
|
|
report_and_fix |
Les erreurs de lecture et de comparaison sont détectées et signalées, mais seules les erreurs de comparaison sont corrigées. |
Nouveau 1 |
scannerMode = data_comparison compareErrorAction = report_and_fix readErrorAction = report_only
|
|
|
report_and_fix |
no_scan |
Seules les erreurs de lecture sont détectées, signalées et corrigées. |
1 |
scannerMode = device_only compareErrorAction = NULL readErrorAction = report_and_fix
|
|
report_only |
Les erreurs de lecture et de comparaison sont détectées et signalées, mais seules les erreurs de lecture sont corrigées. |
Nouveau 2 |
scannerMode = data_comparison compareErrorAction = report_only readErrorAction = report_and_fix
|
|
|
report_and_fix |
Les erreurs de lecture et de comparaison sont détectées, signalées et corrigées. |
3 |
scannerMode = data_comparison compareErrorAction = report_and_fix readErrorAction = report_and_fix
|