Cambios en enable_background_device_scanner, API y registro de PowerFlex
Summary: En este artículo, se describen los cambios realizados en los comandos de la scli y la API REST para habilitar el escáner en segundo plano en VxFlexOS después de la llegada de la característica de modo "conservador" en v3.0.0.2 HF1. Esto nos permite tener un mejor control sobre las funcionalidades de generación de informes y determinar qué modos desea que se activen los clientes. En todas las versiones anteriores (hasta la versión 3.0.1 inclusive) el escáner en segundo plano tenía dos opciones, el modo device_only y comparison_mode (que también incluía todas las funcionalidades del modo device_only). ...
Instructions
A partir de ScaleIO v2.5, el modo de comparación HF1 incluyó una nueva opción para omitir la corrección de los errores de comparación e informar al respecto en el archivo /opt/emc/scaleio/logs/comparison.0. Esto también deshabilitó la funcionalidad de creación de informes y reparación de lectura del modo de device_only que formaba parte del modo de comparación en un estado normal.
Junto con los cambios en la scli y la API, se agregaron algunos registros adicionales a los nodos de SDS cuando el modo de comparación del escáner en segundo plano está habilitado con v3.0.0.2 HF.
Cambios en el registro de cambios: /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
Pasos para reducir el número predeterminado de archivos comparisons.x de 10 a un número menor:
echo "tgt_comparison_file_history =2" >> /opt/emc/scaleio/sds/cfg/conf.txt ; pkill sds
Realice esto en todos los SDS en los que se deban reducir los archivos. Nuevos archivos de registro de salida CRC32 (contienen la salida de hash para los datos de usuario de 1 MB de PRI o SEC) para validar entre principal y secundario:
/opt/emc/scaleio/sds/logs/{randomID}_compare_combID_offset_[pri/sec].log
EJEMPLO:
/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.
Registros sds/logs/trc.x correspondientes:
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
Comprobación de los dos archivos de salida:
-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
Comando antiguo
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
|
Modo de escáner |
Acción |
Resultado |
|
device_only |
report_and_fix |
Solo se detectan, informan y corrigen los errores de lectura. |
|
report_only |
Solo se detectan e informan errores de lectura (no corregidos) |
|
|
No especificado |
Igual que report_and_fix (opción 1) |
|
|
data_comparison |
report_and_fix |
Se detectan y corrigen los errores de lectura y comparación. |
|
report_only |
Los errores de lectura y comparación se detectan y notifican (no se corrigen) |
|
|
No especificado |
Igual que report_and_fix (opción 3) |
Nuevo comando
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
|
Modo de error de lectura |
Compare el modo de error. |
Resultado |
Cartografía |
|
|
no_scan |
no_scan |
Combinación no válida: existe el comando de deshabilitación para esto. |
No válido 1 |
scannerMode = NULL (no compatible) |
|
report_only |
Combinación no válida: no se puede comparar sin leer. |
No válido 2 |
|
|
|
report_and_fix |
Combinación no válida: no se puede comparar sin leer. |
No válido 3 |
|
|
|
report_only |
no_scan |
Solo se detectan e informan errores de lectura (no corregidos) |
2 |
scannerMode = device_only compareErrorAction = NULO readErrorAction = report_only
|
|
report_only |
Los errores de lectura y comparación se detectan y notifican (no se corrigen) |
4 |
scannerMode = data_comparison compareErrorAction = report_only readErrorAction = report_only
|
|
|
report_and_fix |
Los errores de lectura y comparación se detectan e informan, pero solo se corrigen los errores de comparación. |
Nuevo 1 |
scannerMode = data_comparison compareErrorAction = report_and_fix readErrorAction = report_only
|
|
|
report_and_fix |
no_scan |
Solo se detectan, informan y corrigen los errores de lectura. |
1 |
scannerMode = device_only compareErrorAction = NULO readErrorAction = report_and_fix
|
|
report_only |
Los errores de lectura y comparación se detectan e informan, pero solo se corrigen los errores de lectura. |
Nuevo 2 |
scannerMode = data_comparison compareErrorAction = report_only readErrorAction = report_and_fix
|
|
|
report_and_fix |
Los errores de lectura y comparación se detectan, informan y corrigen. |
3 |
scannerMode = data_comparison compareErrorAction = report_and_fix readErrorAction = report_and_fix
|