ITPub博客

首页 > 架构设计 > 操作系统 > 智汀云盘-网盘开发golang:物理分区管理

智汀云盘-网盘开发golang:物理分区管理

原创 操作系统 作者:智汀科技 时间:2022-01-14 11:06:37 0 删除 编辑

 1. 物理分区管理

物理分区的管理需要通过GPRC + Protobuf 调用LVM的服务进行操作,在每一次操作前都需要进行GRPC连接,后文不再赘述,默认连接已建立


gRPC连接:

conn, err := grpc.Dial(config.ExtServerSetting.LvmServer, grpc.WithInsecure())
if err != nil {
    ……
}
defer conn.Close()
client := proto.NewDiskManagerClient(conn)



1.1 添加物理分区到存储池

填充指定结构体,生成请求,并添加物理分区到存储池:

ctx := context.Background()
createReq := proto.VolumeGroupCreateOrExtendReq{
    VGName: req.PoolName,
    PVName: req.DiskName,
}
result, err := client.VolumeGroupExtend(ctx, &createReq)



1.2 获取物理分区列表

获取物理分区列表:

VList, err := client.PhysicalVolumeList(ctx, &proto.Empty{})



解析并获取VList内的数据,并填入至变量中响应客户端请求:

for _, pv := range VList.PVS {
    if pv.VGName == "" {
        info := &ListResp{
            Id:          pv.UUID,
            Name:        pv.Name,
            VGName:      pv.VGName,
            Capacity:    pv.Size,
        }
        list = append(list, info)
    }
}
totalRow = int64(len(list))
response.HandleResponseList(c, err, &list, totalRow)





来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70009085/viewspace-2852222/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2021-10-28

  • 博文量
    17
  • 访问量
    6918