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
|
12. 服务占用磁盘空间逐渐增加
服务运行一段时间后,占用磁盘空间逐渐增加,需要清理。
1
2
3
4
| du -h --max-depth=1
32M ./2026-02-28
16M ./2026-03-01
|
1
2
| ls -alh 2026-02-28/myhost-h20-9/StorageEventTrace.myhost-h20-9.2026-02-28-08-01-13.34.parquet
-rw-r--r-- 1 root root 68K Feb 28 08:01 2026-02-28/myhost-h20-9/StorageEventTrace.myhost-h20-9.2026-02-28-08-01-13.34.parquet
|
1
2
3
4
5
6
7
8
9
10
11
12
13
| cat << 'EOF' > read_parquet_file.py
import pandas as pd
file = "2026-02-28/myhost-h20-9/StorageEventTrace.myhost-h20-9.2026-02-28-08-01-13.34.parquet"
df = pd.read_parquet(file)
pd.set_option('display.max_columns', None)
pd.set_option('display.width', 1000)
print(df.head())
EOF
python3 read_parquet_file.py
|
1
2
| dateReq_payload_key_vChainId_chainVer updateReq_payload_key_chunkId updateReq_payload_rdmabuf updateReq_payload_updateVer updateReq_payload_updateType updateReq_payload_checksum_type updateReq_payload_checksum_value updateReq_payload_inlinebuf updateReq_options_isSyncing updateReq_options_fromClient updateReq_options_commitChainVer updateReq_tag_clientId_uuid updateReq_tag_clientId_hostname updateReq_tag_requestId updateReq_tag_channel_id updateReq_tag_channel_seqnum updateReq_retryCount updateReq_userInfo_uid updateReq_userInfo_gid updateReq_userInfo_groups updateReq_userInfo_token updateReq_featureFlags updateReq_debugFlags_injectRandomServerError updateReq_debugFlags_injectRandomClientError \
0 1772265673 myhost-h20-9 ds3fs-h 10009 101000900105 1048576 1048576 16777216 900100007 60 00000000-0000009A-5ACD0000-00000001 {"addr":94591273574400,"size":1048576,"rkeys":... 2 1 1 1102467336 std::vector<uint8_t>(0) False False 0 b9b6870c-bbb1-40b3-ab43-6b75b20ec845 bj6-e-ai-kas-node-h200-01 514799878 4 166861963 0 0 0 [] AAAvR39B8QC+IPTY2wD24X+I 0 False False
|
里面是对文件系统进行写入时进行详细的时间记录,可以用于排查故障和审计。
在启动配置中,可以对事件追踪进行配置。
1
2
3
4
5
6
| [server.storage.event_trace_log]
dump_interval = '30s'
enabled = true
max_num_writers = 1
max_row_group_length = 100000
trace_file_dir = '.'
|