磁盘
所有文档

          云服务器 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实例
          下一篇
          镜像