先编译打包工具,需要安装Go 1.19+。
$ git clone https://github.com/minerdao/lotus-car.git
$ cd lotus-car
$ go build -o lotus-car
安装完毕后,执行以下命令打包car文件:
./lotus-car generate --input=/mnt/md0/1000/1000.json --parent=/mnt/md0/1000/raw --tmp-dir=/mnt/md0/tmp1 --quantity=320 --out-dir=/mnt/md0/car/dataset_1000_1_320 --out-file=/home/fil/csv/dataset_1000_1_320.csv
参数说明:
- --input:原始文件对应的索引文件路径,
.json
格式,通过lotus-car仓库中python3 main.py -i
来生成。
⚠️ 注意生成索引文件时,需先修改main.py
中的数据集根目录和数据集名称。 - --parent:原始文件所在目录,通常存放在
raw
目录下。 - --tmp-dir:打包过程中的临时文件路径,需放在SSD上。
- --quantity:一次打包的car文件数量(320个 = 10TiB)。
- --out-dir:car文件的保存位置。
- --out-file:打包完car文件后,输出的csv文件名称及路径,此文件用于Client发布存储订单。
一般情况下,SSD上的文件目录按照以下结构进行组织:
/mnt/md0/ # 根目录
|- 1000 # 数据集对应的ID
|- raw # 原始文件
|- car # car文件
|- tmp1 # 临时文件(2个进程各创建一个临时目录)
|- tmp2
|- 1001 # 数据集对应的ID
|- raw
|- car
|- tmp1
|- tmp2
...
一台4块以上nVME U.2组成的Raid0的机器,可启动2个进程同时打包。
每天大约可打包15TiB的数据,每个car文件(18GiB)打包时间约5~6分钟。
打包好的car文件需要移动到存储机器上。你需要启动一个进程,运行lotus-car仓库中main.py
来监听已打包好的car文件,并同步到指定的存储目录。
$ python3 main.py -s
打包完成后,将上面--out-file
对应的csv文件发给Client来发布存储订单。
Miner接单前,需先配置好Boost,关于Boost的配置请参照: https://boost.filecoin.io/getting-started/getting-started。
存储订单发送完毕后,将生成dataset_1000_1_320.csv
的一个csv索引文件,Miner通过此文件导入离线订单。
使用lotus-car仓库中的import-deals.sh
脚本来导入订单,注意修改脚本中car文件所在的目录。
$ ./import-deals.sh dataset_1000_1_320
# 后面跟上数据集名称即可