首页 > 架构设计 > 操作系统 > 智汀云盘-网盘开发golang:物理分区管理
物理分区的管理需要通过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/ ,如需转载,请注明出处,否则将追究法律责任。