云服务器BCC

    磁盘

    创建CDS磁盘

    支持新建空白CDS磁盘或者从CDS数据盘快照创建CDS磁盘,参考以下代码可以创建CDS磁盘:

    // 新建CDS磁盘
    public static void createVolume(BccClient bccClient) {
        CreateVolumeRequest createVolumeRequest = new CreateVolumeRequest();
        // 设置创建CDS磁盘的大小
        createVolumeRequest.setCdsSizeInGB(cdsSizeInGb);
        // 设置创建CDS磁盘的数量
        createVolumeRequest.setPurchaseCount(purchaseCount);
    
        CreateVolumeResponse createVolumeResponse = bccClient.createVolume(createVolumeRequest);
    
        System.out.println(createVolumeResponse.getVolumeIds());
    }
    
    // 从快照创建CDS磁盘
    public static void createVolumeFromSnapshot(BccClient bccClient, String snapshotId) {
        CreateVolumeRequest createVolumeRequest = new CreateVolumeRequest();
        // 设置创建CDS磁盘的快照来源
        createVolumeRequest.setSnapshotId(snapshotId);
        // 设置创建CDS磁盘的数量
        createVolumeRequest.setPurchaseCount(purchaseCount);
    
        CreateVolumeResponse createVolumeResponse = bccClient.createVolume(createVolumeRequest);
    
        System.out.println(createVolumeResponse.getVolumeIds());
    }

    创建CDS磁盘接口为异步接口,可通过查询磁盘详情接口查询磁盘状态,详细接口使用请参考BCC API 文档查询磁盘详情

    查询磁盘列表

    以下代码可以查询所有的磁盘列表,不包含临时数据盘,支持分页查询以及通过次磁盘所挂载的BCC实例id进行过滤筛选:

    public static void listVolumes(BccClient bccClient) {
        ListVolumesRequest listVolumesRequest = new ListVolumesRequest();
        // 设置分页标志
        listVolumesRequest.setMarker(volumeId);
        // 设置分页返回数据大小
        listVolumesRequest.setMaxKeys(maxKey);
        // 设置筛选的磁盘所挂载的实例Bcc实例id
        listVolumesRequest.setInstanceId(instanceId);
    
        ListVolumesResponse listVolumesResponse = bccClient.listVolumes(listVolumesRequest);
    
        for (VolumeModel volumeModel : listVolumesResponse.getVolumes()) {
            System.out.println(volumeModel.getId());
        }
    }

    查询磁盘详情

    通过磁盘id可以获取对应磁盘的详细信息,以下代码可以查询磁盘详情:

    public static void getVolumeDetail(BccClient bccClient) {
        // 设置磁盘id
        GetVolumeResponse volumeResponse = bccClient.getVolume(volumeId);
        System.out.println(volumeResponse.getVolume().getId());
    }

    挂载CDS磁盘

    可以将未挂载的磁盘挂载在对应的BCC虚机下,以下代码将一个CDS挂载在对应的BCC虚机下:

    public static void attachVolume(BccClient bccClient) {
        AttachVolumeRequest attachVolumeRequest = new AttachVolumeRequest();
        // 设置需要挂载的磁盘id
        attachVolumeRequest.setVolumeId(volumeId);
        // 设置BCC虚机id
        attachVolumeRequest.setInstanceId(instanceId);
        // 打印挂载路径
        System.out.println(bccClient.attachVolume(attachVolumeRequest).getVolumeAttachment().getDevice());
    }
    • CDS磁盘需要挂载在与其处在相同zone下的虚机实例上,否则将返回403错误。
    • 只有磁盘状态为 Available 且实例状态为 Running 或 Stopped 时才允许挂载,否则调用此接口将返回 409 错误。

    卸载CDS磁盘

    可以将已挂载的磁盘从对应的BCC虚机上卸载下来,以下代码卸载CDS磁盘:

    public static void detachVolume(BccClient bccClient) {
        DetachVolumeRequest detachVolumeRequest = new DetachVolumeRequest();
        // 设置待卸载的磁盘对应的ID
        detachVolumeRequest.setVolumeId(volumeId);
        // 设置所挂载的实例ID
        detachVolumeRequest.setInstanceId(instanceId);
        // 执行卸载操作
        bccClient.detachVolume(detachVolumeRequest);
    }
    • 只有实例状态为 Running 或 Stopped 时,磁盘才可以执行此操作,否则将提示 409 错误。
    • 如果 volumeId 的磁盘不挂载在 instanceId 的实例上,该操作失败,提示 404 错误。

    释放CDS磁盘

    用于释放未挂载的CDS磁盘,可指定是否删除磁盘关联的快照,缺省情况下,该磁盘的所有快照将保留,但会删除与磁盘的关联关系:

    public static void releaseVolume(BccClient bccClient) {
    
        ReleaseVolumeRequest releaseVolumeRequest = new ReleaseVolumeRequest();
    
        // 设置磁盘id
    
        releaseVolumeRequest.setVolumeId(volumeId);
    
        // 若要释放磁盘关联的快照,加入以下代码,参数有"on"和"off"
    
        // 若要删除磁盘关联的自动快照,将参数设为"on",否则默认为"off"
    
         releaseVolumeRequest.setAutoSnapshot("on");
    
        // 若要删除磁盘关联的手动快照,将参数设为"on",否则默认为"off"
    
         releaseVolumeRequest.setManualSnapshot("on");
    
         bccClient.releaseVolume(releaseVolumeRequest);
    
    }
    • 已挂载的CDS磁盘不能释放,系统盘不能释放。
    • 磁盘释放后不可恢复。缺省情况下,该磁盘的所有快照将保留,但会删除与磁盘的关联关系。
    • 只有磁盘状态为 Available 或 Expired 或 Error 时才可以执行此操作,否则将提示 409 错误。

    修改磁盘属性

    可以使用以下代码修改指定磁盘名称、描述信息:

    public static void modifyCdsAttribute(BccClient bccClient) {
    
        ModifyCdsAttributeRequest modifyCdsAttributeRequest = new ModifyCdsAttributeRequest();
    
        // 设置磁盘id
    
        modifyCdsAttributeRequest.setCdsId(volumeId);
    
        // 设置新的磁盘名称
    
         modifyCdsAttributeRequest.setCdsName(volumeName);
    
        // 设置磁盘新的描述
    
          modifyCdsAttributeRequest.setDesc(volumeDesc);
    
          bccClient.modifyCdsAttribute(modifyCdsAttributeRequest);
    
    }

    磁盘计费变更

    可以使用以下代码变更磁盘计费方式,仅支持后付费转预付费、预付费转后付费两种方式。变更为预付费需要指定购买时长。

    public static void modifyVolumeChargeType(BccClient bccClient) {
    
        ModifyVolumeChargeRequest modifyVolumeChargeRequest = new ModifyVolumeChargeRequest();
    
        // 设置磁盘id
    
        modifyVolumeChargeRequest.setVolumeId(volumeId);
    
        // 设置新的计费方式为预付费
    
         modifyVolumeChargeRequest.setBillingMethod("prepay");
    
        // 设置新的计费方式为后付费
    
         modifyVolumeChargeRequest.setBillingMethod("postpay");
    
        // 设置购买时长(月)
    
         modifyVolumeChargeRequest.setReservationLength(reservationLength);
    
         bccClient.modifyVolumeChargeType(modifyVolumeChargeRequest);
    
    }

    磁盘扩容

    使用以下代码可以对磁盘进行扩大容量操作:

    public static void resizeVolume(BccClient bccClient) {
        ResizeVolumeRequest resizeVolumeRequest = new ResizeVolumeRequest();
        // 设置磁盘id
        resizeVolumeRequest.setVolumeId(volumeId);
        // 设置磁盘扩容后总大小
        resizeVolumeRequest.setNewCdsSizeInGB(cdsResizeInGb);
        // 执行磁盘扩容
        bccClient.resizeVolume(resizeVolumeRequest);
    }

    磁盘只能进行扩大容量,不支持缩小容量。 只有Available状态的磁盘,才能进行扩容操作 磁盘扩容是一个异步接口,可通过查询磁盘详情接口查询磁盘扩容状态。

    回滚磁盘

    可以使用指定磁盘自身的快照回滚磁盘内容,使用以下代码可以对磁盘进行回滚:

    public static void rollbackVolume(BccClient bccClient) {
        RollbackVolumeRequest rollbackVolumeRequest = new RollbackVolumeRequest();
        // 设置磁盘id
        rollbackVolumeRequest.setVolumeId(volumeId);
        // 设置磁盘的快照id
        rollbackVolumeRequest.setSnapshotId(snapshotId);
        // 执行回滚操作
        bccClient.rollbackVolume(rollbackVolumeRequest);
    }
    • 磁盘状态必须为 Available 才可以执行回滚磁盘操作。
    • 指定快照id必须是由该磁盘id创建的快照。
    • 若是回滚系统盘,实例状态必须为 Running 或 Stopped 才可以执行此操作。
    • 回滚系统盘快照,自本次快照以来的系统盘数据将全部丢失,不可恢复。

    磁盘续费

    对磁盘的续费操作,可以延长过期时长,以下代码可以对磁盘进行续费:

    public static void purchaseReservedVolume(BccClient bccClient) {
        PurchaseReservedVolumeRequest purchaseReservedVolumeRequest = new PurchaseReservedVolumeRequest();
        // 设置磁盘id
        purchaseReservedVolumeRequest.setVolumeId(volumeId);
        // 设置billing信息
        Billing billing = new Billing();
        // 设置续费时长,单位目前只支持'月'为单位
        billing.setReservation(new Reservation().withReservationLength(reservationLength));
        // 设置billing信息
        purchaseReservedVolumeRequest.setBilling(billing);
        // 执行续费磁盘操作
        bccClient.purchaseReservedVolume(purchaseReservedVolumeRequest);
    }

    磁盘开通自动续费

    为指定磁盘开通自动续费

    public static void autoRenewVolume(BccClient bccClient, String volumeId, String renewTimeUnit, int renewTime) {
        AutoRenewVolumeRequest autoRenewVolumeRequest = new AutoRenewVolumeRequest();
    
        // 磁盘ID
        autoRenewVolumeRequest.setVolumeId(volumeId);
        // 按月付费或者按年付费 月是"month",年是"year"
        autoRenewVolumeRequest.setRenewTimeUnit(renewTimeUnit);
        // 自动续费的时间 按月是1-9 按年是 1-3
        autoRenewVolumeRequest.setRenewTime(renewTime);
    
        bccClient.autoRenewVolume(autoRenewVolumeRequest);
    }
    • 注意数据盘才能进行自动续费操作
    • 注意过期状态磁盘不能进行自动续费操作
    • 异步接口,可通过查询磁盘详情接口查询磁盘到期时间

    磁盘取消自动续费

    为指定磁盘取消自动续费

    public static void cancelAutoRenewVolume(BccClient bccClient, String volumeId) {
        CancelAutoRenewVolumeRequest cancelAutoRenewVolumeRequest = new CancelAutoRenewVolumeRequest();
    
        // 磁盘ID
        cancelAutoRenewVolumeRequest.setVolumeId(volumeId);
    
        bccClient.cancelAutoRenewVolume(cancelAutoRenewVolumeRequest);
    }
    • 注意数据盘才能进行取消自动续费操作
    • 异步接口,可通过查询磁盘详情接口查询磁盘到期时间

    磁盘重命名

    用于修改指定磁盘名称

    public static void renameVolume(BccClient bccClient, String volumeId, String newName) {
        RenameVolumeRequest renameVolumeRequest = new RenameVolumeRequest();
        // 待重命名的磁盘ID
        renameVolumeRequest.setVolumeId(volumeId);
        // 磁盘新的名称,自定义镜像名称,支持大小写字母、数字、中文以及-_ /.特殊字符,必须以字母开头,长度1-65。
        renameVolumeRequest.setName(newName);
    
        bccClient.renameVolume(renameVolumeRequest);
    }
    上一篇
    BCC实例
    下一篇
    镜像