PowerFlex enable_background_device_scanner、API 和日志更改
Summary: 本文介绍在 v3.0.0.2 HF1 中出现“保守”模式功能后,对 scli 和 REST API 命令进行更改,以在 VxFlexOS 中启用后台扫描仪。这使我们能够更好地控制报告功能,并确定客户希望激活的模式。在所有以前的版本(包括 v3.0.1)中,后台扫描程序有两个选项,device_only 模式和 comparison_mode(其中还包括device_only模式的所有功能)。 ...
Instructions
从 ScaleIO v2.5 开始,HF1 比较模式包括一个新选项,用于跳过修复比较错误,并在 /opt/emc/scaleio/logs/comparison.0 文件中报告该错误。这还禁用了device_only模式的读取修复和报告功能,该模式是正常状态下比较模式的一部分。
当使用 v3.0.0.2 HF 启用后台扫描程序比较模式时,除了 scli 和 API 更改之外,还向 SDS 节点添加了一些额外的日志记录。
更改日志更改:/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
将 comparisons.x 文件的默认数量从 10 个减少到较小数量的步骤:
echo "tgt_comparison_file_history =2" >> /opt/emc/scaleio/sds/cfg/conf.txt ; pkill sds
在应缩减文件的所有 SDS 上执行此作。新的 CRC32 输出日志文件(包含来自 PRI 或 SEC 的 1MB 用户数据的哈希输出),用于在主要和次要之间进行验证:
/opt/emc/scaleio/sds/logs/{randomID}_compare_combID_offset_[pri/sec].log
示例:
/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.
相应的 sds/logs/trc.x 日志:
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
检查两个输出文件:
-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
旧命令
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
|
扫描仪模式 |
操作 |
结果 |
|
device_only |
report_and_fix |
系统只会检测、报告和修复读取错误。 |
|
report_only |
仅检测并报告读取错误(不修复) |
|
|
未指定 |
与 report_and_fix 相同(选项 1) |
|
|
data_comparison |
report_and_fix |
读取和比较错误都会被检测和修复。 |
|
report_only |
检测并报告读取和比较错误(未修复) |
|
|
未指定 |
与 report_and_fix 相同(选项 3) |
新建命令
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
|
读取错误模式 |
比较错误模式。 |
结果 |
映射 |
|
|
no_scan |
no_scan |
无效组合 - 为此提供了禁用命令。 |
无效 1 |
scannerMode = NULL(不支持) |
|
report_only |
无效组合 — 没有读取就无法进行比较。 |
Invalid 2 |
|
|
|
report_and_fix |
无效组合 — 没有读取就无法进行比较。 |
Invalid 3 |
|
|
|
report_only |
no_scan |
仅检测并报告读取错误(不修复) |
2 |
scannerMode = device_only compareErrorAction = 空 readErrorAction = report_only
|
|
report_only |
检测并报告读取和比较错误(未修复) |
4 |
scannerMode = data_comparison compareErrorAction = report_only readErrorAction = report_only
|
|
|
report_and_fix |
系统会检测并报告读取和比较错误,但只会修复比较错误。 |
新 1 |
scannerMode = data_comparison compareErrorAction = report_and_fix readErrorAction = report_only
|
|
|
report_and_fix |
no_scan |
系统只会检测、报告和修复读取错误。 |
1 |
scannerMode = device_only compareErrorAction = 空 readErrorAction = report_and_fix
|
|
report_only |
系统会检测并报告读取和比较错误,但只会修复读取错误。 |
新增 2 |
scannerMode = data_comparison compareErrorAction = report_only readErrorAction = report_and_fix
|
|
|
report_and_fix |
读取和比较错误都会被检测、报告和修复。 |
3 |
scannerMode = data_comparison compareErrorAction = report_and_fix readErrorAction = report_and_fix
|