Resize VM
/v2.1/servers/{server_id}/actionResize đưa VM sang flavor khác, thay đổi vCPU và RAM, và thường cả root disk. Đây là thao tác ba bước:
- Yêu cầu resize, truyền
flavorRefđích. - VM chuyển sang
VERIFY_RESIZEvà ở đó cho đến khi bạn confirm hoặc revert. - Confirm để giữ kích thước mới, hoặc revert để quay về flavor cũ.
Nguồn: resize-server
Request
Điều kiện tiên quyết
- VM phải ở trạng thái
SHUTOFF. Dừng VM trước bằng{"os-stop": null}(xem Thao tác VM). - Flavor đích phải tồn tại và hiển thị với project của bạn (xem Liệt kê flavor).
- Quota project của bạn phải đủ chỗ cho kích thước đích.
Tham số
server_idstringbắt buộcpathUUID của VM.
resizeobjectbắt buộcbodyObject bọc action resize.
1 trường
flavorRefstringbắt buộcbodyUUID của flavor đích.
confirmResizenullbắt buộcbodyGiữ flavor mới.
revertResizenullbắt buộcbodyQuay về flavor trước đó.
Bước 1 — gửi yêu cầu resize
Dùng curl
curl -ks -X POST -H 'Content-Type: application/json' -H 'X-Auth-Token: gAAAAA<...>' \
-d '{"resize": {"flavorRef": "468c0c15-08bd-4e1d-8564-5053ce12966b"}}' \
https://api.vietnix.cloud:8774/v2.1/servers/{server_id}/action
Bước 2 — kiểm tra kết quả
curl -ks -H 'Content-Type: application/json' -H 'X-Auth-Token: gAAAAA<...>' \
https://api.vietnix.cloud:8774/v2.1/servers/{server_id}
Trong response, status phải là VERIFY_RESIZE và OS-EXT-SRV-ATTR:instance_name cùng flavor phải đã trỏ đến kích thước đích. Khởi động VM và kiểm tra guest thấy CPU/RAM mới trước khi confirm.
Bước 3 — confirm hoặc revert
# keep the new flavor
curl -ks -X POST -H 'Content-Type: application/json' -H 'X-Auth-Token: gAAAAA<...>' \
-d '{"confirmResize": null}' \
https://api.vietnix.cloud:8774/v2.1/servers/{server_id}/action
# go back to the previous flavor
curl -ks -X POST -H 'Content-Type: application/json' -H 'X-Auth-Token: gAAAAA<...>' \
-d '{"revertResize": null}' \
https://api.vietnix.cloud:8774/v2.1/servers/{server_id}/action
Response
Mã trạng thái
Thành công
| Mã | Mô tả |
|---|---|
| 202 - Accepted | Yêu cầu resize hoặc revert đã được chấp nhận. |
| 204 - No Content | Resize đã được confirm. |
Lỗi
| Mã | Mô tả |
|---|---|
| 400 - Bad Request | Flavor không hợp lệ hoặc body của request sai định dạng. |
| 401 - Unauthorized | User phải xác thực trước khi gửi request. |
| 403 - Forbidden | Policy không cho phép user hiện tại thực hiện thao tác này. |
| 404 - Not Found | VM hoặc flavor không tồn tại. |
| 409 - Conflict | VM đang ở trạng thái không cho phép thao tác này, ví dụ resize VM đang chạy, hoặc confirm khi không có resize nào đang chờ. |
Không confirm trước khi guest khởi động thành công trên flavor mới. Sau khi đã confirm, quay lại nghĩa là phải resize thêm lần nữa. VM để ở trạng thái VERIFY_RESIZE vẫn tiêu tốn tài nguyên và không thể resize lại cho đến khi được confirm hoặc revert.
Giảm kích thước có thể thất bại khi root disk mới nhỏ hơn dữ liệu đã có, hoặc khi image không hỗ trợ kích thước disk đích. Với VM dùng volume-backed, kích thước volume không thay đổi theo flavor; hãy mở rộng volume riêng nếu cần.