记录一些 DeepSeek 3FS 的运维操作,持续更新中。
1. 基本概念及注意事项
一个 Chain 是由若干个 Target 组成,每个 Target 是一个存储的副本。在全部提交就绪的情况下,一个 Chain 的所有 Target 都是一致的。
一个 Chain 上的 Target 不能在同一个节点上。
Chain 就是存储的空间,写文件是会被分配到一个 Chain 上,读文件也是从一个 Chain 上读取。
一个 Target 是一个数据副本,Target 分布在一组节点上。
Target 有三种 Role:HEAD、MIDDLE、TAIL。HEAD 是最新的数据,TAIL 是最旧的数据,MIDDLE 同步 HEAD 的数据,TAIL 同步 MIDDLE 的数据。
Target 被 remove 之后,磁盘空间也会被释放。
ChainTable 记录着一组 Chain ID,代表着存储系统能用的 Chain。Chain 在没有加入 ChainTable 之前,是不会被用来存储数据的。
1
2
3
| 链的数量 >= 磁盘数量 * 存储目标数 / 副本数
链的数量 >= 条带化宽度
磁盘数量 >= 副本数
|
MGMTD、META、STORAGE、FUSE 节点的配置都需要提交,才能正常工作。
启动带有数据的 Storage 节点时,目录中的 Target 会被重新注册到集群中。这时的 Target 处于 TAIL 状态,会同步 MIDDLE 的数据,容易发生数据的紊乱。
最好不要带数据启动 Storage 节点,直接让 3FS 重建数据。
3FS 组件的状态同步需要一点时间,操作要慢一点,等待状态同步完成。
一条命令可以重复执行,不会有危害。有时状态同步不及时,可以重复执行命令。
2. 条带化参数怎么设置
在初始化集群时,有一个 init-cluster
的操作,里面有一个非常重要的参数 strip size
,即条带化的宽度。
条带化技术就是将数据分割为若干个数据块,分布在不同的 Chain 上,以提高并行读写的性能。条带化的宽度就是被分割的数据块的数量。
条带化的宽度太大会增加元数据管理的复杂度,数据重建恢复的时间也会变长。一般来说,设置为 16 就够了。
如果磁盘太少,可能会限制条带化参数的设置。最好先不要进行 init-cluster
操作,在生成 chainTable
之后,上传之前,执行命令:
1
| cat output/generated_chains.csv
|
1
2
3
4
| ChainId,TargetId,TargetId,TargetId
900100001,100100100101,100100200101,100100400101
900100002,100100200102,100100300101,100100500101
...
|
查看有多少个 chain-id
,条带化参数不能大于 Chain
的数量。
3. 重置、初始化集群
1
2
| writemode on
clearrange "" \xFF
|
之后,节点会下线,全部节点的 ConfigVersion 重置为 0。
需要重启全部的 Storage 节点,顺便清理一下挂载的存储目录。
1
| nerdctl restart 3fs_storage
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml list-nodes
Id Type Status Hostname Pid Tags LastHeartbeatTime ConfigVersion ReleaseVersion
3 MGMTD PRIMARY_MGMTD 8c05a1fbdf97 16 [] N/A 0(UPTODATE) 250228-dev-1-999999-8c9883c2
1 MGMTD HEARTBEAT_CONNECTED 58ca52320c3b 16 [] 2025-03-19 02:20:58 0(UPTODATE) 250228-dev-1-999999-8c9883c2
2 MGMTD HEARTBEAT_CONNECTED 391173a5a978 16 [] 2025-03-19 02:20:59 0(UPTODATE) 250228-dev-1-999999-8c9883c2
101 META HEARTBEAT_CONNECTED b3fea43900e6 193 [] 2025-03-19 02:21:04 0 250228-dev-1-999999-8c9883c2
102 META HEARTBEAT_CONNECTED fcebcb6ca5c3 186 [] 2025-03-19 02:21:06 0 250228-dev-1-999999-8c9883c2
103 META HEARTBEAT_CONNECTED fea159ba0bd6 186 [] 2025-03-19 02:21:00 0 250228-dev-1-999999-8c9883c2
1001 STORAGE HEARTBEAT_CONNECTED 919404e2891f 187 [] 2025-03-19 02:21:06 8(UPTODATE) 250228-dev-1-999999-8c9883c2
1002 STORAGE HEARTBEAT_CONNECTED e19b012d073c 179 [] 2025-03-19 02:21:05 8(UPTODATE) 250228-dev-1-999999-8c9883c2
1003 STORAGE HEARTBEAT_CONNECTED fd2423d5e695 179 [] 2025-03-19 02:21:05 8(UPTODATE) 250228-dev-1-999999-8c9883c2
1004 STORAGE HEARTBEAT_CONNECTED e8b6fbb9a774 178 [] 2025-03-19 02:21:07 8(UPTODATE) 250228-dev-1-999999-8c9883c2
1005 STORAGE HEARTBEAT_CONNECTED 19db0bc40648 172 [] 2025-03-19 02:21:08 8(UPTODATE) 250228-dev-1-999999-8c9883c2
|
此时 MGMTD、META 的配置还没有提交,在初始化集群操作之后,需要再次重启 MGMTD、META 节点。
1
2
| python3 /opt/3fs/deploy/data_placement/src/model/data_placement.py \
-ql -relax -type CR --num_nodes 5 --replication_factor 3 --min_targets_per_disk 6
|
1
| 2025-03-19 10:02:29.157 | SUCCESS | __main__:run:148 - saved solution to: output/DataPlacementModel-v_5-b_10-r_6-k_3-λ_2-lb_1-ub_1
|
1
2
3
4
5
| python3 /opt/3fs/deploy/data_placement/src/setup/gen_chain_table.py \
--chain_table_type CR --node_id_begin 1001 --node_id_end 1005 \
--num_disks_per_node 1 --num_targets_per_disk 6 \
--target_id_prefix 1 --chain_id_prefix 9 \
--incidence_matrix_path output/DataPlacementModel-v_5-b_10-r_6-k_3-λ_2-lb_1-ub_1/incidence_matrix.pickle
|
1
| cat output/generated_chains.csv
|
一共有 10 个 Chain
。
1
| /opt/3fs/bin/admin_cli -cfg /opt/3fs/etc/admin_cli.toml "init-cluster --mgmtd /opt/3fs/etc/mgmtd_main.toml 1 1048576 10"
|
1
2
| nerdctl restart 3fs_mgmtd
nerdctl restart 3fs_meta
|
此时,全部节点已经就绪。
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml < output/create_target_cmd.txt
|
1
| /opt/3fs/bin/admin_cli -cfg /opt/3fs/etc/admin_cli.toml "user-add --root --admin 0 root"
|
1
| Token AACJgD5Y8QCi6ce42wDfTDcr(Expired at N/A)
|
保存一下 Token,后续的操作都需要用到。
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml "upload-chains output/generated_chains.csv"
|
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml "upload-chain-table --desc stage 1 output/generated_chain_table.csv"
|
4. 查看使用存储的客户端
1
2
3
4
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml list-clients
ClientId ClientStart SessionStart LastExtend ConfigVersion Hostname Description Tags ReleaseVersion
a938c253-1030-4138-b618-0e11113a4876 2025-03-14 08:04:26 2025-03-14 08:04:26 2025-03-18 03:39:39 336 927bb7bb3396 fuse: 927bb7bb3396 [] 250228-dev-1-999999-8c9883c2
|
5. 重建一个存储节点
在原来的机器上,就地重建存储节点,通常用于存储目录变更、磁盘更换等情况。
1
| nerdctl restart 3fs_storage
|
1
2
3
4
5
6
7
8
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml list-targets | grep 1001001
100100100101 900100001 TAIL OFFLINE OFFLINE 1001 0 1342177280
100100100105 900100008 TAIL OFFLINE OFFLINE 1001 0 4027580416
100100100104 900100005 TAIL OFFLINE OFFLINE 1001 0 4027580416
100100100106 900100010 TAIL OFFLINE OFFLINE 1001 0 4026531840
100100100102 900100003 TAIL OFFLINE OFFLINE 1001 0 4026531840
100100100103 900100004 TAIL OFFLINE OFFLINE 1001 0 4027580416
|
1
2
3
4
5
6
7
8
| echo "
create-target --node-id 1001 --disk-index 0 --target-id 100100100101 --chain-id 900100001 --use-new-chunk-engine
create-target --node-id 1001 --disk-index 0 --target-id 100100100105 --chain-id 900100008 --use-new-chunk-engine
create-target --node-id 1001 --disk-index 0 --target-id 100100100104 --chain-id 900100005 --use-new-chunk-engine
create-target --node-id 1001 --disk-index 0 --target-id 100100100106 --chain-id 900100010 --use-new-chunk-engine
create-target --node-id 1001 --disk-index 0 --target-id 100100100102 --chain-id 900100003 --use-new-chunk-engine
create-target --node-id 1001 --disk-index 0 --target-id 100100100103 --chain-id 900100004 --use-new-chunk-engine
" > create_target_cmd.txt
|
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml < create_target_cmd.txt
|
1
2
3
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml list-targets
100100500101 900100002 TAIL SYNCING ONLINE 1005 0 1342177280
|
SYNCING 的 Target,表示正在进行数据重建,需要等待其完成。
6. 替换一个存储节点
换一个新的存储节点,node-id 也发生变化。
1
2
3
4
5
6
7
8
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml list-targets |grep 1004
100100400101 900100001 MIDDLE SERVING UPTODATE 1004 0 4026531840
100100400105 900100008 MIDDLE SERVING UPTODATE 1004 0 1342177280
100100400104 900100007 MIDDLE SERVING UPTODATE 1004 0 4026531840
100100400102 900100005 HEAD SERVING UPTODATE 1004 0 4026531840
100100400106 900100009 MIDDLE SERVING UPTODATE 1004 0 4026531840
100100400103 900100006 TAIL SERVING UPTODATE 1004 0 4026531840
|
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
| echo "
offline-target --node-id 1004 --target-id 100100400101
update-chain --mode remove 900100001 100100400101
remove-target --node-id 1004 --target-id 100100400101
offline-target --node-id 1004 --target-id 100100400105
update-chain --mode remove 900100008 100100400105
remove-target --node-id 1004 --target-id 100100400105
offline-target --node-id 1004 --target-id 100100400104
update-chain --mode remove 900100007 100100400104
remove-target --node-id 1004 --target-id 100100400104
offline-target --node-id 1004 --target-id 100100400102
update-chain --mode remove 900100005 100100400102
remove-target --node-id 1004 --target-id 100100400102
offline-target --node-id 1004 --target-id 100100400106
update-chain --mode remove 900100009 100100400106
remove-target --node-id 1004 --target-id 100100400106
offline-target --node-id 1004 --target-id 100100400103
update-chain --mode remove 900100006 100100400103
remove-target --node-id 1004 --target-id 100100400103
" > remove_target_cmd.txt
|
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml < remove_target_cmd.txt
|
1
2
3
4
5
|
- 停掉旧的存储节点
```bash
nerdctl rm 3fs_storage -f
|
其状态会变为 HEARTBEAT_FAILED
,Target 处于 OFFLINE
状态。
将新节点的 node-id 设置为 1006。这里尝试过将新节点的 node-id 与之前的保持一致,但是并不能重建,即使 hostname 相同也不想,可能是还有其他的唯一标识符。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| echo "
create-target --node-id 1006 --disk-index 0 --target-id 100100400101 --chain-id 900100001 --use-new-chunk-engine
update-chain --mode add 900100001 100100400101
create-target --node-id 1006 --disk-index 0 --target-id 100100400105 --chain-id 900100008 --use-new-chunk-engine
update-chain --mode add 900100008 100100400105
create-target --node-id 1006 --disk-index 0 --target-id 100100400104 --chain-id 900100007 --use-new-chunk-engine
update-chain --mode add 900100007 100100400104
create-target --node-id 1006 --disk-index 0 --target-id 100100400102 --chain-id 900100005 --use-new-chunk-engine
update-chain --mode add 900100005 100100400102
create-target --node-id 1006 --disk-index 0 --target-id 100100400106 --chain-id 900100009 --use-new-chunk-engine
update-chain --mode add 900100009 100100400106
create-target --node-id 1006 --disk-index 0 --target-id 100100400103 --chain-id 900100006 --use-new-chunk-engine
update-chain --mode add 900100006 100100400103
" > create_target_cmd.txt
|
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml < create_target_cmd.txt
|
此时会触发 Target 的数据重建,等待 Target 的状态变为 SERVING
。
7. 扩容一个存储节点
这里需要提前规划,总的 Target 数量应该是总的存储数量的整数倍。这里从 5 个节点扩容到 6 个节点,总得 Target 数量是 30 个,扩容之前每个节点上有 6 个 Target,扩容之后每个节点上有 5 个 Target。
node-id 为 1006。新的节点加入后,每个节点上应该有 5 个 Target。下面我们需要找 5 个 Target,然后将其分配到新的节点上。
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml list-targets
|
可以借助 LLM 找到需要迁移的 Target,列出其中的 5 行数据,要求来自不同的 Chain,分别来自不同的节点,按照原始格式输出数据即可
。
1
2
3
4
5
| 100100100101 900100001 HEAD SERVING UPTODATE 1001 0 1342177280
100100200102 900100002 HEAD SERVING UPTODATE 1002 0 1342177280
100100300105 900100009 HEAD SERVING UPTODATE 1003 0 1342177280
100100400105 900100008 TAIL SERVING UPTODATE 1004 0 1342177280
100100500106 900100010 TAIL SERVING UPTODATE 1005 0 1342177280
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| echo "
offline-target --node-id 1001 --target-id 100100100101
update-chain --mode remove 900100001 100100100101
remove-target --node-id 1001 --target-id 100100100101
offline-target --node-id 1002 --target-id 100100200102
update-chain --mode remove 900100002 100100200102
remove-target --node-id 1002 --target-id 100100200102
offline-target --node-id 1003 --target-id 100100300105
update-chain --mode remove 900100009 100100300105
remove-target --node-id 1003 --target-id 100100300105
offline-target --node-id 1004 --target-id 100100400105
update-chain --mode remove 900100008 100100400105
remove-target --node-id 1004 --target-id 100100400105
offline-target --node-id 1005 --target-id 100100500106
update-chain --mode remove 900100010 100100500106
remove-target --node-id 1005 --target-id 100100500106
" > offline_target_cmd.txt
|
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml < offline_target_cmd.txt
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| echo "
create-target --node-id 1006 --disk-index 0 --target-id 100100100101 --chain-id 900100001 --use-new-chunk-engine
update-chain --mode add 900100001 100100100101
create-target --node-id 1006 --disk-index 0 --target-id 100100200102 --chain-id 900100002 --use-new-chunk-engine
update-chain --mode add 900100002 100100200102
create-target --node-id 1006 --disk-index 0 --target-id 100100300105 --chain-id 900100009 --use-new-chunk-engine
update-chain --mode add 900100009 100100300105
create-target --node-id 1006 --disk-index 0 --target-id 100100400105 --chain-id 900100008 --use-new-chunk-engine
update-chain --mode add 900100008 100100400105
create-target --node-id 1006 --disk-index 0 --target-id 100100500106 --chain-id 900100010 --use-new-chunk-engine
update-chain --mode add 900100010 100100500106
" > create_target_cmd.txt
|
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml < create_target_cmd.txt
|
此时,新节点马上就会开始进行数据重建,可以通过 list-targets
查看状态。
8. 下线一个存储节点
这里准备下线 1001 节点,然后将其迁移到其他节点上。
1
2
3
4
5
6
7
8
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml list-targets |grep 1001001
100100100101 900100001 MIDDLE SERVING UPTODATE 1001 0 5369757696
100100100105 900100008 MIDDLE SERVING UPTODATE 1001 0 2684354560
100100100104 900100005 MIDDLE SERVING UPTODATE 1001 0 5369757696
100100100106 900100010 MIDDLE SERVING UPTODATE 1001 0 2684354560
100100100102 900100003 TAIL SERVING UPTODATE 1001 0 5368709120
100100100103 900100004 TAIL SYNCING ONLINE 1001 0 3121610752
|
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
| echo "
offline-target --node-id 1001 --target-id 100100100101
update-chain --mode remove 900100001 100100100101
remove-target --node-id 1001 --target-id 100100100101
offline-target --node-id 1001 --target-id 100100100105
update-chain --mode remove 900100008 100100100105
remove-target --node-id 1001 --target-id 100100100105
offline-target --node-id 1001 --target-id 100100100104
update-chain --mode remove 900100005 100100100104
remove-target --node-id 1001 --target-id 100100100104
offline-target --node-id 1001 --target-id 100100100106
update-chain --mode remove 900100010 100100100106
remove-target --node-id 1001 --target-id 100100100106
offline-target --node-id 1001 --target-id 100100100102
update-chain --mode remove 900100003 100100100102
remove-target --node-id 1001 --target-id 100100100102
offline-target --node-id 1001 --target-id 100100100103
update-chain --mode remove 900100004 100100100103
remove-target --node-id 1001 --target-id 100100100103
" > remove_target_cmd.txt
|
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml < remove_target_cmd.txt
|
这里又需要借助 LLM 来规划 Target 的分布。
将 /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml list-targets
的输出结果和提示词 将节点 1001 上的全部 Target 迁移到其他节点上,需要保障属于同一个 Chain 的 Target 不在同一个节点上,输出迁移后 Target Chain 与新节点的对应关系
一起输入到 LLM 中。得到分布结果:
Target | Chain | Role | New Node |
---|
100100100101 | 900100001 | MIDDLE | 1003 |
100100100105 | 900100008 | MIDDLE | 1002 |
100100100104 | 900100005 | MIDDLE | 1004 |
100100100106 | 900100010 | MIDDLE | 1004 |
100100100102 | 900100003 | TAIL | 1005 |
100100100103 | 900100004 | TAIL | 1006 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| echo "
create-target --node-id 1003 --disk-index 0 --target-id 100100100101 --chain-id 900100001 --use-new-chunk-engine
update-chain --mode add 900100001 100100100101
create-target --node-id 1002 --disk-index 0 --target-id 100100100105 --chain-id 900100008 --use-new-chunk-engine
update-chain --mode add 900100008 100100100105
create-target --node-id 1004 --disk-index 0 --target-id 100100100104 --chain-id 900100005 --use-new-chunk-engine
update-chain --mode add 900100005 100100100104
create-target --node-id 1004 --disk-index 0 --target-id 100100100106 --chain-id 900100010 --use-new-chunk-engine
update-chain --mode add 900100010 100100100106
create-target --node-id 1005 --disk-index 0 --target-id 100100100102 --chain-id 900100003 --use-new-chunk-engine
update-chain --mode add 900100003 100100100102
create-target --node-id 1006 --disk-index 0 --target-id 100100100103 --chain-id 900100004 --use-new-chunk-engine
update-chain --mode add 900100004 100100100103
" > create_target_cmd.txt
|
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml < create_target_cmd.txt
|
等待 Target 的状态从 SYNCING
变为 SERVING
。
1
| nerdctl rm 3fs_storage -f
|
此时 Storage 节点的状态会变为 HEARTBEAT_FAILED
。
1
| 1001 STORAGE HEARTBEAT_FAILED 919404e2891f 190 [] 2025-03-20 03:13:57 7(UPTODATE) 250228-dev-1-999999-8c9883c2
|
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml unregister-node 1001 STORAGE
|
只有节点处于异常状态,才能够下线节点。
9. 添加 Chain
添加 Chain 能够增加 Target 数量,将 Target 放在新的节点上也可以达到扩容的目的。
9.1 添加新的 Chain
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml dump-chains dump-for-add-nodes
|
1
2
3
4
5
6
7
8
9
10
11
12
13
| vim dump-for-add-nodes.3
ChainId,TargetId,TargetId,TargetId
900100001,100100200101,100100100101,100100400101
900100002,100100300101,100100500101,100100200102
900100008,100100100105,100100300104,100100400105
900100007,100100200106,100100500104,100100400104
900100005,100100100104,100100500103,100100400102
900100010,100100100106,100100300106,100100500106
900100009,100100500105,100100300105,100100400106
900100003,100100100102,100100200103,100100300102
900100004,100100100103,100100200104,100100500102
900100006,100100200105,100100300103,100100400103
|
增加新的 Chain,要保证 Chain 上的 Target 数量是一致的。
1
2
| 990100001,190000000001,190000000002,190000000003
...
|
可以加很多条 Chain,但如果想要使用这些 Chain 也意味着需要更多的存储节点,因为相同 Chain 上的 Target 不能在同一个节点上。
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml "upload-chains dump-for-add-nodes.3"
|
1
2
3
4
5
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml list-targets
190000000001 990100001 HEAD SERVING OFFLINE N/A N/A 0
190000000002 990100001 MIDDLE SERVING OFFLINE N/A N/A 0
190000000003 990100001 TAIL SERVING OFFLINE N/A N/A 0
|
此时有新的 Target 等待放置到节点上。
9.2 添加新的 Target
这里以加入的新节点为 1009 为例,只分配部分 Target。
1
2
3
4
5
| echo "
create-target --node-id 1003 --disk-index 0 --target-id 190000000001 --chain-id 990100001 --use-new-chunk-engine
create-target --node-id 1004 --disk-index 0 --target-id 190000000002 --chain-id 990100001 --use-new-chunk-engine
create-target --node-id 1002 --disk-index 0 --target-id 190000000003 --chain-id 990100001 --use-new-chunk-engine
" > create_target_cmd.txt
|
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml < create_target_cmd.txt
|
1
2
3
4
5
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml list-targets |grep 1900
190000000003 990100001 HEAD SERVING UPTODATE 1002 0 0
190000000001 990100001 MIDDLE SERVING UPTODATE 1003 0 0
190000000002 990100001 TAIL SYNCING ONLINE 1004 0 0
|
此时,存储还不能使用这个 Chain,需要将其加入到 ChainTable 中。
9.3 添加新的 ChainTable
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml dump-chain-table 1 ./dump-chainTable
|
1
2
3
4
5
6
7
8
9
10
11
12
13
| vim dump-chainTable
ChainId
900100001
900100002
900100003
900100004
900100005
900100006
900100007
900100008
900100009
900100010
|
新增 Chain 的 ChainId
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml "upload-chain-table --desc stage 1 ./dump-chainTable"
|
1200000000001 920100001 HEAD SERVING UPTODATE 1001 0 0
1
2
3
| echo "
create-target --node-id 1001 --disk-index 0 --target-id 1200000000006 --chain-id 920100002 --use-new-chunk-engine
" > remove_chain_cmd.txt
|
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml < remove_chain_cmd.txt
|
10. LASTSRV 状态的 Target
这种状态通常是 Target 提前加入了存储中,导致的异常状态。
1
2
3
| 120000000004 930100002 HEAD LASTSRV OFFLINE N/A N/A 0
120000000005 930100002 MIDDLE OFFLINE OFFLINE N/A N/A 0
120000000006 930100002 TAIL OFFLINE OFFLINE N/A N/A 0
|
1
2
3
| echo "
create-target --node-id 1001 --disk-index 0 --target-id 120000000005 --chain-id 930100002 --use-new-chunk-engine
" > create_target_cmd.txt
|
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml < create_target_cmd.txt
|
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml rotate-lastsrv 930100002
|
1
2
3
| 120000000005 930100002 HEAD SERVING ONLINE 1001 0 0
120000000006 930100002 MIDDLE OFFLINE OFFLINE N/A N/A 0
120000000004 930100002 TAIL OFFLINE OFFLINE N/A N/A 0
|
此时,Chains 中 HEAD 的状态已经变为 SERVING。
11. 重建一个 Target
适用于 Target 状态异常,比如大小与其他 Target 不一致等情况。
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml list-targets |grep 100100200102
|
1
| 100100200102 900100002 TAIL SYNCING ONLINE 1002 0 3911188480
|
1
2
3
4
5
| echo "
offline-target --node-id 1002 --target-id 100100200102
update-chain --mode remove 900100002 100100200102
remove-target --node-id 1002 --target-id 100100200102
" > offline_target_cmd.txt
|
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml < offline_target_cmd.txt
|
1
2
3
4
| echo "
create-target --node-id 1002 --disk-index 0 --target-id 100100200102 --chain-id 900100002 --use-new-chunk-engine
update-chain --mode add 900100002 100100200102
" > create_target_cmd.txt
|
1
| /opt/3fs/bin/admin_cli --cfg /opt/3fs/etc/admin_cli.toml < create_target_cmd.txt
|