tongsiying

阅读|运动|自律

0%

BlockStorage-Chunkserver

001-chunkserver理解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
chunkserver理解
https://zhidao.baidu.com/question/541048918.html
一、data block , extent 和 segment的区别:
1block:是Oracle中存储数据块的最小单位,所以数据最终都是存储在block中。它也被称为逻辑blocks或是页(pages)。每个操作系统都有自己的block size。而这里的block是Oracle自己的,不同于OS的blocks。可以通过设置DB_BLOCK_SIZE设置Oracle的block为OS的block的几倍,从而减少不必要的I/O。不管block中存放的数据是表、索引还是clusterdata,block的结构都是一致。
2、extent:extent
是每次分配给一个对象的逻辑最小单位,是由一定数量连续的block组成。一个或多个extent又组成了一个segment
3segment:它是extents的集合,它包含了在表空间中所包含的具体逻辑存储机构的所有extents。例如一个未分区的table,index,cluster被成为一个段,一个被分区的index,table的一个partition 被成为一个段。对temporary segment,主要用于排序等操作,只有当DB的内存无法存放相应的排序操作并无法找到其他更好的解决办法时,才会在临时表空间中创建temporarysegment。

二、data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent。一个数据库对象拥有的所有extents被称为该对象的segment.
https://www.cnblogs.com/foxmailed/archive/2012/01/05/2313477.html
GFS 论文笔记
https://www.cnblogs.com/xybaby/p/8967424.html
典型分布式系统分析: GFS
https://www.cnblogs.com/youngerchina/archive/2011/12/15/5624646.html
1
2
3
chunkserver都是追加写
为啥vdbench测试随机写和顺序写有区别呢?
原因:gateway顺序写会进行写合并,因为都是写一个extent;随机写是机率性合并,所有随机写的性能好于顺序写
1
2
3
4
5
15.记录
使用率超过90%的情况下就不能新建extent了,
使用率超过95%  chunkserver就不接收写操作了。 
kill进程启动不会触发修复
kill -9 进程启动会触发修复

002-扫描工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
接口:
1.获取进度
curl -X GET "http://127.0.0.1:8080/snbs/selfscan?pretty=y"

2.启动扫描所有磁盘
curl -X POST "http://127.0.0.1:8080/snbs/selfscan?optype=start"

3.启动扫描指定磁盘
curl -X POST "http://127.0.0.1:8080/snbs/selfscan?optype=start&devs=sdc,sdb,sda"

4.暂停扫描
curl -X POST "http://127.0.0.1:8080/snbs/selfscan?optype=suspend"

6.继续扫描
curl -X POST "http://127.0.0.1:8080/snbs/selfscan?optype=proceed"

7.关闭扫描
curl -X POST "http://127.0.0.1:8080/snbs/selfscan?optype=stop"

8.启动扫描extent列表
curl -X POST http://10.37.2.15:8080/snbs/selfscan?optype=start&chunkid=94e9339792adecfa66b62804,9ije008779ioifuf9"

9.dbh级别的接口
以上接口启动接口加上&level=dbh
&level=dbh
curl -X POST "http://127.0.0.1:8080/snbs/selfscan?optype=start&level=dbh"

10.是否修复:
curl -X POST “http://10.37.2.15:8080/snbs/selfscan?optype=start&level=dbh&repair=true"
true代表及时修复,不带和带其他表示不及时修复,仅仅扫描

003-设置回收、碎片时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1.设置chunkserver回收时间
curl "http://127.0.0.1:8080/snbs/setrecyclestrgy?strgy=00:01-23:59"
strgy:格式:12:00-14:00   
switch:默认值:无,代表沿用现有;数据类型:0/1

2.设置chunkserver碎片整理时间
curl "http://127.0.0.1:8080/snbs/setdefragstrgy?strgy=00:01-23:59"
strgy:格式:12:00-14:00   
switch:默认值:无,代表沿用现有;数据类型:0/1

3.master侧设置全局
curl -X PUT "http://127.0.0.1:8787/service/param?service=chunkserver&ipport=public&param=DefragSwitch&value=1,2" -v
curl -X PUT "http://127.0.0.1:8787/service/param?service=chunkserver&ipport=public&param=VacuumSwitch&value=1,10" -v

4.检查参数是否生效
curl -s "http://127.0.0.1:8080/sys/debug/config?pretty=y"|grep -E "VacuumSwitch|DefragSwitch|VacuumStrgy|DefragStrgy"



curl -X GET "http://127.0.0.1:8787/service/param?service=chunkserver&ipport=public&param=VacuumSwitch&value"

curl -X GET "http://127.0.0.1:8787/service/param?service=chunkserver&ipport=public&param=DefragSwitch"

004-配置文件参数解释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
1.查看参数设置
curl "http://127.0.0.1:8080/sys/debug/config?pretty=y"
{
"Port": 9595,
"PprofPort": 7772,
"RestfulPort": 7776,
"Master": "10.243.0.129:9696,10.243.0.130:9696,10.243.0.131:9696",
"HeartBeatInterval": 8,
"VolDev": "sdd,sde,sdf,sdg,sdh,sdi,sdj,sdk",
"RcacheDev": "sdc1",  #读缓存
"WcacheDev": "sdc2", #写缓存
"VacuumSwitch": 1,#1 是开,0是关
"VacuumStrgy": "0:01-23:59",#垃圾回收
"MinSegmentTimeLife": 120,
"MinCheckpointTimeLife": 300,
"MinCheckpointSeqLife": 256,
"MaxCheckpointSeqLife": 4096,
"RecycleTap": 500,
"DefragSwitch": 1,
"DefragStrgy": "0:01-23:59",#碎片整理
"DefragQuota": 0.3,
"DefragExtentThreshold": 67108864,
"DefragBlockThreshold": 262144,
"DefragLastWrite": 2592000,
"DefragTap": 1000,
"DefragThreshold": 0.7,
"DefragMaxAliveObjSum": 10,
"DefragInterval": 21600,
"StaticSwitch": 0,
"SegmentUsedRatio": 0.95,
"MaxRepairThreadSum": 10,
"MaxCheckThreadSum": 10,
"MaxMigrateThreadSum": 2,
"SysOpUploadMaxTps": 10,
"SysOpUploadMaxRate": 640,
"SysOpDownloadMaxTps": 10,
"SysOpDownloadMaxRate": 640,
"MigrateUploadMaxTps": 10,
"MigrateUploadMaxRate": 640,
"MigrateDownloadMaxTps": 10,
"MigrateDownloadMaxRate": 640,
"CloneOpUploadMaxTps": 10,
"CloneOpUploadMaxRate": 640,
"CloneOpDownloadMaxTps": 10,
"CloneOpDownloadMaxRate": 64,
"ClientOpTimeOut": 30,
"ReadConcurrentNum": 16
}

005-统计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
1.查看chunkserver 各个磁盘的tps统计
curl -X GET "http://127.0.0.1:7776/snbs/stats?pretty=y"
{
"DefragStat": {#碎片整理信息
"ChipSum": 4949,#过去24小时整理的碎片数量
"ChipSize": 245198848,#过去24小时,共整理的碎片大小
"RunTimes": 1164#过去24小时一共执行了多少轮碎片整理
},
"RecycleStat": {#空间回收信息
"RecycleSegmentSum": 8,#过去24小时空间回收的segment个数
"DegradedSegmentSum": 0,#过去24小时,触发了回收阈值整理但是实际不能回收的segment(属于问题segment)
"RunTimes": 1174#过去24小时一共执行了多少轮空间回收
},
"chunkserver": {#Chunkserver 是总的统计
"SessionName": "chunkserver",
"op": {#op系统操作,创建、删除、快照、克隆
"AvgDelay": 0,
"AvgSize": 0,
"ErrCount": 0,
"MaxDelay": 0,
"MaxSize": 0,
"MinDelay": 0,
"MinSize": 0,
"TotalCount": 0
},
"read": {#读操作
"AvgDelay": 0,
"AvgSize": 0,
"ErrCount": 0,
"MaxDelay": 0,
"MaxSize": 0,
"MinDelay": 0,
"MinSize": 0,
"TotalCount": 0
},
"write": {#写操作
"AvgDelay": 0,
"AvgSize": 0,
"ErrCount": 0,
"MaxDelay": 0,
"MaxSize": 0,
"MinDelay": 0,
"MinSize": 0,
"TotalCount": 0#总的操作数量
}
},
"vdc": {
"SessionName": "vdc",
"op": {
"AvgDelay": 0,
"AvgSize": 0,
"ErrCount": 0,
"MaxDelay": 0,
"MaxSize": 0,
"MinDelay": 0,
"MinSize": 0,
"TotalCount": 0
},
"read": {
"AvgDelay": 0,
"AvgSize": 0,
"ErrCount": 0,
"MaxDelay": 0,
"MaxSize": 0,
"MinDelay": 0,
"MinSize": 0,
"TotalCount": 0
},
"write": {
"AvgDelay": 0,
"AvgSize": 0,
"ErrCount": 0,
"MaxDelay": 0,
"MaxSize": 0,
"MinDelay": 0,
"MinSize": 0,
"TotalCount": 0
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2.查看chunkserver 的空间使用/缓存命中 统计
curl -X GET "http://127.0.0.1:8080/snbs/states?pretty=y"
"vdb4": {
"DevStat": {#磁盘使用统计信息
"ReadCount": 17616603,//这个磁盘自从格式化到现在的读次数
"WriteCount": 11599415,//这个磁盘自从格式化到现在的写次数
"ReadBytes": 1685985746944,//这个磁盘自从格式化到现在的读大小
"WriteBytes": 796305776640,//这个磁盘自从格式化到现在的写大小
"DiskErrCount": 0,//磁盘读写出错的次数
"DiskSlowCount": 4772,//磁盘慢操作的次数(慢操作的阈值???)
"DiskEvents": [//磁盘事件????怎么统计或则计算
{
"Type": 0,
"OccurFreq": 0,
"OccurTime": 0,
"OccurPos": 0
},
]
},
"LogSegmentCurrent": 83494,#这个磁盘有的总segment数量
"LogSegmentEnd": 267164,
"LogSegmentOffset": 290816,#现在的偏移
"LogSegmentStart": 0,
"SegmentSeqCurrent": 180728,#现在的segment位置
"SegmentSize": 4194304,
"SegmentTotNum": 118001, #现在的segment的seq(不同于位置,是个递增的)
"SegmentTotSize": 494932066304,#segment总大小
"SpaceStat": { #空间统计信息(VolumeStat)
"Total": 494932066304,//总大小
"Used": 132393205760,//已用
"Inited": 362538860544,//没使用
"ActualUsed": 126294142976,#//实际保存数据大小
"ActualRef": 60382912512,#//被引用的大小
"ActualDel": 65911230464,#//实际已经删除的;为引用计数为0的实际segment大小。ObjectDelNum  为引用计数为0的segment中保存的object数量
"ObjectNum": 5751889,
"ObjectRefNum": 1611930,
"ObjectDelNum": 4139959
}
},
"volumeTot": 2 #一共几个磁盘
}
}

ActualDel/ActualUsed=垃圾率,待回收的

006-磁盘碎片度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
1.触发磁盘碎片度计算
curl -X GET "http://127.0.0.1:8080/snbs/analyzefrag"

2.获取磁盘最近一次计算的碎片度
curl -X GET "http://127.0.0.1:7776/snbs/getfragstat"
结果:
{
"LastRunTime": "2019-07-31T15:16:47.038642949+08:00",   #碎片整理的执行时间
"IsRunning": false,    #现在是否正在执行
"FragStat": {
"vdb3": {
"chipsum": 71928,     #零散的碎片数量
"fragvalue": 0.14814044453973393,   #碎片度。0-1之间,越大表示碎片越厉害
"totalsize": 2086170624     #总的存活的数据大小(业务数据+元数据,不包括segment的头以及留白)
},
"vdb4": {
"chipsum": 61720,
"fragvalue": 0.12536954112597834,
"totalsize": 1692164096
}
},
"ChipStat": [  #碎片的分布,第一个表示4K的,第二个表示8K的。。。
773,   //4K个数
104498//8K个数
67,  //12K个数
40//16K个数
29//20K个数
33//24K个数
44,  //28K个数
45,  //32K个数
29,//36K 个数
43//40K个数
46//44K个数
30//48K个数
29//52K个数
36
84//60K个数
22255//64K个数
.
.
.
依次+4k
]
}

007-调试接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
其他开发/白盒常用
/sys/debug  是跟开发相关
/sys 是自身相关
/snbs 是给别人用的命令
/sys/debug/config
/sys/debug/extentlist
/sys/debug/extenthead?chunkid=asd/sys/debug/extentstatus?chunkid=asd


1.清空chunkserver 的缓存命中统计
curl -X GET "http://127.0.0.1:8080/snbs/cache/state/clean"

2.修改日志级别
curl "http://127.0.0.1:8080/log?v=4"

3.查看chunkserver的io统计
curl "http://127.0.0.1:8080/sys/debug/iodelayon"
curl "http://127.0.0.1:8080/sys/debug/iodelayoff"

4.查询node上的extentid信息
curl "http://127.0.0.1:8080/sys/debug/extentlist?pretty=y"
{
"vdb3": [
{
"extentId": "00000000003e8fc00000004f",
"size": 268435456,
"ExtentType": 2,
"tranSeq": 1,
"createTime": 1569501808946106623,
"devName": "",
"status": 0,
"hasClone": false
}
],
"volumeTot": 2
}

5.查看chunkid对应的seq
curl -X GET "http://127.0.0.1:8080/sys/debug/extentstatus?chunkid=000000000007a1d4000000b3&pretty=y"

6.移除指定extent(出现不能修复的extent的情况下,需要删除extent)
curl -X GET "http://127.0.0.1:8080/sys/debug/extentdel?chunkid=0000000001d164a200000005"

9.触发全量检验
curl -X GET "http://127.0.0.1:8080/snbs/fullcheck"
实时修复+full:
日志看到这个res:0 就是修复成功
tail -f stackfile | grep "rebuild.go:51"

10.seq相差太大修复不了时,设置下面value=1,默认修成seq大的副本,然后再fullcheck
curl "http://127.0.0.1:8080/sys/debug/getfixnode?value=1"
seq相差太大的时候选择最大的
check完之后再把value改为0

11.加快修复迁移:
Chunkserver有修复迁移时,etcd里面设置设置Chunkserver参数:
SysOpUploadMaxTps=0.1
SysOpDownloadMaxTps=0.1
查询:
curl -X GET "http://10.242.180.207:8787/service/param?service=chunkserver&ipport=public&param=SysOpUploadMaxTps"
curl -X GET "http://10.242.180.207:8787/service/param?service=chunkserver&ipport=public&param=SysOpDownloadMaxTps"
设置:
curl -X PUT "http://10.242.180.207:8787/service/param?service=chunkserver&param=SysOpUploadMaxTps&value=0.1,2&pretty=y&ipport=public" -v
curl -X PUT "http://10.242.180.207:8787/service/param?service=chunkserver&param=SysOpDownloadMaxTps&value=0.1,2&pretty=y&ipport=public" -v

12.获取现在的任务数量
curl "http://127.0.0.1:8080/sys/debug/systask?pretty=y"
{
  "CheckTaskSum": 0,
  "MigrateTaskSum": 0,
  "RepairTaskSum": 0
}

13.返回statSegment的信息:
curl "http://127.0.0.1:7776/sys/debug/statsg?dev=vdb3&start=116382&end=116383&pretty=y" -o 116382vdb3

14.从chunkserver读取数据(指定chunk指定位置,指定大小数据)
curl "http://10.242.231.123:7776/sys/debug/extentread?chunkid=000000000172c9e100000009&offset=136560640&size=8192" -o 123-8k

15.修复extent到某个extent,例如553这种
curl "http://127.0.0.1:8080/snbs/repairextent?chunkid=0000000000663be900000215&seq=137607&othernode=10.238.161.6:9595"

16.查看chunkid的最新的seq:
curl -s -X GET "http://127.0.0.1:8080/sys/debug/extentstatus?chunkid=00000000000dbbba00000004&pretty=y"

17.根据seq读取数据:
curl "http://127.0.0.1:8080/sys/debug/extentexport?chunkid=00000000000dbbba0000000a"

18.抽空试试,把这个参数设置大一些。然后全量克隆。
朱晓伟 2020-03-12 17:22:16
curl -X PUT "http://127.0.0.1:8787/service/param?service=chunkserver&ipport=public&param=SysOpDownloadMaxRate&value=999999,0&pretty=y"

008-参数设置:

1
2
3
4
5
6
7
8
9
1.启动命令中的参数优先级最高
2.其次优先使用etcd中的配置。 /etc/etcd/etcd.conf
3.公共配置没有的情况下使用本地缓存的私有配置(本地配置文件)
4.本地配置文件没有的,采用默认配置。
5.本地的配置文件一直会记录现在使用的配置,并会实时更新(etcd,卸载磁盘/调整回收时间)
6..默认值、有配置文件、etcd值、启动参数 启动的时候启动参数优先级最高
7.运行当中,接口设置是什么,配置文件会更改

1.chunkid和extentid不是一个东西

009-磁盘:

1
2
3
387  /home/snbs/ChunkServer/chunkserver format -dev=sda6 -type=wcache
388 /home/snbs/ChunkServer/chunkserver format -dev=sda6 -purpose=wcache
389 /home/snbs/ChunkServer/chunkserver format -dev=sdh -purpose=base
1
for i in `cat sv_snbs_chunkserver.conf|grep command|awk '{print $5}'|sed 's/-VolDev=//g;s/,/ /g'`;do /home/snbs/ChunkServer/server format -dev=${i} -purpose=base;done
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
1.移除指定磁盘
移除数据盘:
curl -X GET "http://127.0.0.1:8080/snbs/removedev?dev=sdc"
移除写缓存盘:
curl -X GET "http://127.0.0.1:8080/snbs/removedev?dev=sdb1&type=wcache"
移除读缓存盘:(chunkserver已无读缓存)
curl -X GET "http://127.0.0.1:8080/snbs/removedev?dev=sdc&type=rcache"
元数据缓存盘:
curl -X GET "http://127.0.0.1:8080/snbs/removedev?dev=sda&type=metacache"

2.重新加载指定磁盘(加载前format磁盘)
实际不需要带forceRollback:
重新加载数据盘:
curl "http://127.0.0.1:8080/snbs/reloaddev?dev=vdc"
重新加写缓存盘:(一个缓存盘对应一个数据盘)
curl " http://127.0.0.1:8080/snbs/reloaddev?dev=sda2&dataDevName=sda&type=wcache"
重新加载读缓存盘:(chunkserver已无读缓存)
curl "http://127.0.0.1:8080/snbs/reloaddev?dev=vdc&type=rcache"
重新加载元数据缓存盘:
curl "http://127.0.0.1:8080/snbs/reloaddev?dev=vdc&type=metacache"

向前回滚的checkpoint数量(默认0,不可为负数):1
curl "http://127.0.0.1:8080/snbs/reloaddev?dev=vdc&forceRollback=1"
curl "http://127.0.0.1:8080/snbs/reloaddev?dev=vdc&forceRollback=1?type=wcache"

注:重新加载一个磁盘,原本没加载的加载上,原本加载上的重新加载
forceRollback:强制向前回滚的checkpoint数量;数据盘加载有效;数据类型:字符串,默认值:0;不可为负数
type:wcache/rcache/metacache或空值
type为空值,指data盘

3.格式指定磁盘
curl -X GET "http://127.0.0.1:8080/snbs/formatdev?dev=vdb3&purpose=base"
purpose:wcache/rcache/metacache/base
base;为数据盘

4.磁盘debug异常模拟
卡顿:
curl "http://127.0.0.1:8080/sys/debug/disktest?debugType=1&sleepTime=600&probability=100&diskName=sdd,sde"
损坏:
curl "http://127.0.0.1:8080/sys/debug/disktest?debugType=2&diskName=sdd,sde"
恢复:
curl "http://127.0.0.1:8080/sys/debug/disktest?debugType=0&diskName=sdd,sde"

sleepTime:600(单位ms)
probability:100(出问题的几率)
diskName:可以是多个逗号分隔,也可以是单个
debugType:0/1/2 恢复/卡顿/损坏

010-问题extent修复

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
首先查看snbs中出问题的extent可以从两部分查询:
1.从master查询并修复
1)从master获取snbs资源池信息
curl "http://10.242.231.121:8787/pool?pretty=y&poolname=pool-tt"
{
"poolname": "pool-tt",
"createtime": "2019-08-02 17:50:25",s
"regionid": "region-tt",
"rebalancetime": "19:15"//定时均衡时间,支持分钟级别
"rebalanceswitch": 1//非0即为打开
"faultdomainnum": 6, //故障域,zone的个数
"node_active_num": 5,
"node_num": 5,
"volume_num": 16,
"total_byte": 4949320663040,
"free_byte": 2648694587392,
"used_byte": 2300626075648
}

2)从master查询每个资源池下的出现问题的extent
curl http://127.0.0.1:8787/pool/repair/status?poolname=store&pretty=y
参数介绍:poolname //代表资源池的name
应答如下:
{
"prepare": {},
"repairing": {
"10.238.161.1:9595": [ //所在节点
"000000000007a2aa00000072" //extent id
],
"10.238.161.3:9595": [
"000000000007a27900000068"
],
"10.238.161.4:9595": [
"0000000000155cd3000000fd"
]
}
}


3)从gateway查询每个extent对应副本的seq
Curl "http://127.0.0.1:8686/snbs/debug/stat?type=chunkid&chunkid=000000000007a2c011&pretty=y"
[
{
"ckunkid": "000000000007a2c600000011",
"repsn": [
{
"ckaddr": "10.238.161.5:9595",
"sn": 67770
},
{
"ckaddr": "10.238.161.4:9595",
"sn": 67770
},
{
"ckaddr": "10.238.161.1:9595",
"sn": 67770
}
]
}
]

4)从chunkserver开始修复extent到指定的节点
Curl "http://127.0.0.1:8080/snbs/repairextent?chunkid=00000000014ca44900000183&seq=9&othernode=10.37.2.16:9191"
请求方法:GET
请求路径:/snbs/repairextent
请求地址:chunkserver IP:restfulPort
请求参数:
名称 描述 值
chunid Extentid
seq 指定到修复的seq
othernode 指定从othernode修复

指定从othernode修复
返回200 正确
其他错误

5)通知gateway刷新下最新extent的信息
Curl "http://127.0.0.1:8686/snbs/debug/stat?type=updateseqnum&chunkid=xxxxxx"


2.从gateway查询并修复
1)从gateway查询所有snbs出现问题的extent
curl "http://127.0.0.1:8686/snbs/debug/stat?type=allchunkid"

2)从gateway查询每个extent对应副本的seq
Curl "http://127.0.0.1:8686/snbs/debug/stat?type=chunkid&chunkid=000000000007a2c011&pretty=y"
[
{
"ckunkid": "000000000007a2c600000011",
"repsn": [
{
"ckaddr": "10.238.161.5:9595",
"sn": 67770
},
{
"ckaddr": "10.238.161.4:9595",
"sn": 67770
},
{
"ckaddr": "10.238.161.1:9595",
"sn": 67770
}
]
}
]
3)从chunkserver开始修复extent到指定的节点
Curl "http://127.0.0.1:8080/snbs/repairextent?chunkid=00000000014ca44900000183&seq=9&othernode=10.37.2.16:9191"
请求方法:GET
请求路径:/snbs/repairextent
请求地址:chunkserver IP:restfulPort

名称 描述 值
chunid Extentid
seq 指定到修复的seq
othernode 指定从othernode修复

返回200 正确
其他错误

4)通知gateway刷新下最新extent的信息
Curl "http://127.0.0.1:8686/snbs/debug/stat?type=updateseqnum&chunkid=xxxxxx"
赞赏一下吧~