ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

FileCoin项目说明

2021-12-02 02:32:26  阅读:300  来源: 互联网

标签:md string 项目 lotus FileCoin 说明 raid0 path xfs


FileCoin项目详细说明

工作时间:2021-5 ~ 2021.12
工作内容

FileCoin是最近一份工作,在架构上属于IPFS的激励层。其中,IPFS全称为星际文件传输协议。
在实际工作中,主要内容如下:
一、根据官方文档编译生成二进制文件(源码开发语言为Golang和少量rust)
二、根据官方文档提示进行linux集群部署,这部分主要为ansible的运维代码编写
三、对源码中效率较低的调度进行优化
四、对运行过程中产生的bug进行解决

FileCoin官方文档站点

https://lotus.filecoin.io/docs/set-up/install/#software-dependencies

编译的二进制代码文件(截选)

运维源码(截选)

代码片段示例

make-raid0.yml

- hosts: "{{ host }}"
  become: yes
  tasks:
    - name: 格式化设备为 raid0 + xfs
      shell: |
        local -a disks=($(fdisk -l | grep Disk | grep /dev/ | grep TiB | awk '{print $2}' | sed 's/://' | grep 'nv' | sort))
        (( $#disks <= 1 )) && return 1
        echo y | mdadm --create --verbose --level=0 --metadata=1.2 --raid-devices=$#disks --chunk=512K /dev/md/raid0 $disks
        mdadm --detail --scan >> /etc/mdadm.conf
        mkfs.xfs -f -L myraid0 /dev/md/raid0
        mkdir -p /lotus/raid0

        echo "# ==== generated by formating_ssd at $(date +%c) ====" >> /etc/fstab
        echo "LABEL=myraid0 /lotus/raid0 xfs defaults,largeio,swalloc 0 0" >> /etc/fstab
        echo "# ==== END ====" >> /etc/fstab

        mount -a
        chown -R XX:XX /lotus

        mv /lotus/cache /lotus/raid0/lotus_cache
        ln -s /lotus/raid0/lotus_cache /lotus/cache
      args:
        executable: /usr/bin/zsh

检测raid0掉盘并修复(golang)

/************************************************************************
    功能:    定时检测raid0是否掉盘并修复
            默认每2分钟执行一次

    时间: 2021/8/27
**************************************************************************/

package main

import (
    "flag"
    "log"
    "os"
    "os/exec"
    "strings"
    "time"
)

const (
    INTERVAL = 120 //单位:秒
    PATH     = "/lotus/raid0"
    MD       = "/dev/md/raid0"
    BASH     = "/bin/bash"
)

func multi_cmd_lines(path string, md string) string {
    return strings.Join([]string{
        "systemctl stop lotus-worker",
        "umount " + path,
        "xfs_repair " + md,
        "mount -a",
        "umount " + path,
        "xfs_repair " + md,
        "mount -a",
        "systemctl start lotus-worker",
    }, ";")
}

func timer(interval time.Duration, path string, md string) {
    t := time.NewTicker(interval)
    for {
        go func(path string) {
            _, err := os.Stat(path)
            if err != nil {
                log.Println(err)
                cmd := exec.Command(BASH, "-c", multi_cmd_lines(path, md))
                out, err := cmd.CombinedOutput()
                log.Println(string(out), err)
            } else {
                log.Println("正常检测raid0!")
            }
        }(path)
        <-t.C
    }
}
func main() {
    secs := flag.Int("time", INTERVAL, "- 输入检测间隔时间,单位:秒") //检测间隔时间(秒)
    path := flag.String("path", PATH, "- 输入raid0目录")
    md := flag.String("md", MD, "- 输入xfs修复目录")
    flag.Parse()
    go timer(time.Duration(*secs)*time.Second, *path, *md)
    select {}
}

实际线上环境的(客户)封装浏览器查看

机房/深圳坂田:https://filfox.info/zh/address/f01167426

 

项目总结

区块链知识
Golang二进制编译、部分优化
linux运维、shell编程、ansible运维
Golang小程序修复故障
整体难度比较大,需要对linux非常熟练

标签:md,string,项目,lotus,FileCoin,说明,raid0,path,xfs
来源: https://www.cnblogs.com/tinaluo/p/15631485.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有