# 快速启用

# 准备工作

  1. 安装必要的第三方库。

    这一部分可以参考 lotus 文档中的相应部分 Software dependencies (opens new window)

  2. 下载代码库

    git clone https://github.com/ipfs-force-community/damocles.git
    
  3. 编译 damocles 的组件

    cd damocles
    make all
    

    完成后,在 ./dist/bin 目录下会有 damocles-workerdamocles-manager 两个可执行文件。

  4. 分发可执行文件到需要的机器上。

  5. ./damocles-worker/create-cgroup.sh 分发到 damocles-worker 所在的机器上,并以准备运行 damocles-worker 的系统用户身份执行。

    这会为这样的用户生成相应的 cgroup 组,以便damocles-worker 为其外部执行器进程分配硬件资源。

# 生产模式

# damocles-manager

  1. 初始化工作目录

    ./dist/bin/damocles-manager daemon init
    
  2. 按需配置默认配置文件 ~/.damocles-manager/sector-manager.cfg

    配置项、作用、配置方法可以参考文档 damocles-manager 的配置解析

  3. 创建矿工号(可选;如果已有,可略过此步骤)

    $ ./damocles-manager util miner create \
    --from=<OWNER_ADDRESS> \
    --owner=<OWNER_ADDRESS> \
    --worker=<WORKER_ADDRESS> \
    --sector-size=32GiB
    

    会得到如下返回值。

    miner actor: f0xxx9 (f2drcv6746m5ehwxxxxxy)	   
    

    结果中的 miner actor f0xxx9 就是创建的 miner id。

    注意⚠️:--from 地址要保证有足够的余额,保证上链成功。

  4. 启动 damocles-manager

    ./dist/bin/damocles-manager daemon run
    

    注意⚠️:如果要开启 winningPost,配置文件的Miners.Proof.Enabled字段和启动的 flag --miner需要同时设置为 true。要开启 windowPost 的话,配置文件的Miners.PoSt.Enabled和启动 flag --poster也需要同时设置为 true。

# damocles-worker

  1. 创建 sealing_thread.location 父级目录,damocles-worker 在启动时会自动初始化每个 sealing_thread.location 目录。

  2. (可选) 下载计算参数文件

    ./dist/bin/damocles-manager util fetch-params 512MiB
    
  3. (可选) 创建 NUMA 亲和的 hugepage 内存文件

  4. 规划用于各阶段的 CPU 核、numa 区域等配置。

    按需完成配置文件。

    配置项、作用、配置方法可以参考文档 damocles-worker 的配置解析

  5. 启动 damocles-worker

    ./dist/bin/damocles-worker daemon -c /path/to/damocles-worker.toml
    

# Mock 模式 (开发人员使用)

默认情况下,可以通过一系列命令在单机上启动一组 mock 实例。

# damocles-manager

通过

./dist/bin/damocles-manager mock --miner=10000 --sector-size=2KiB

命令启动一个模拟为 Actor 为 t010000SP 分配 2KiB 扇区的 damocles-manager 服务。

这一步骤也可以通过代码目录中的 ./mock/start_manager.sh 脚本完成。

# damocles-worker

  1. 创建并初始化本地存储,初始化远程存储

    ./dist/bin/damocles-worker store sealing-init -l ./mock-tmp/store1 ./mock-tmp/store2 ./mock-tmp/store3
    ./dist/bin/damocles-worker store file-init -l ./mock-tmp/remote
    

    这一步骤也可以通过代码目录中的 ./mock/cleanup_store.sh 脚本完成。

  2. mock 配置启动 damocles-worker

    ./dist/bin/damocles-worker daemon -c ./damocles-worker/assets/damocles-worker.mock.toml
    

    这一步骤也可以通过代码目录中的 ./mock/start_worker.sh 脚本完成。