智汀雲盤-網盤開發golang:物理分割槽管理

智汀科技發表於2022-01-14

 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部落格 ” ,連結:http://blog.itpub.net/70009085/viewspace-2852222/,如需轉載,請註明出處,否則將追究法律責任。

相關文章