{"id":34980,"date":"2024-09-12T14:51:41","date_gmt":"2024-09-12T07:51:41","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/12\/manage-block-storage-volumes-with-the-linode-api\/"},"modified":"2024-09-12T14:51:41","modified_gmt":"2024-09-12T07:51:41","slug":"manage-block-storage-volumes-with-the-linode-api","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/12\/manage-block-storage-volumes-with-the-linode-api\/","title":{"rendered":"Qu\u1ea3n l\u00fd Block Storage volumes v\u1edbi Linode API"},"content":{"rendered":"<p>API Linode cho ph\u00e9p b\u1ea1n t\u1ea1o, x\u00f3a, \u0111\u00ednh k\u00e8m, t\u00e1ch, sao ch\u00e9p v\u00e0 thay \u0111\u1ed5i k\u00edch th\u01b0\u1edbc kh\u1ed1i l\u01b0\u1ee3ng Block Storage.<\/p>\n<h2 id=\"h-tr\u01b0\u1edbc-khi-b\u1ea1n-b\u1eaft-d\u1ea7u\">Tr\u01b0\u1edbc khi b\u1ea1n b\u1eaft \u0111\u1ea7u<\/h2>\n<p>B\u1ea1n c\u1ea7n c\u00f3 M\u00e3 th\u00f4ng b\u00e1o truy c\u1eadp c\u00e1 nh\u00e2n cho API Linode \u0111\u1ec3 ho\u00e0n th\u00e0nh c\u00e1c b\u01b0\u1edbc trong h\u01b0\u1edbng d\u1eabn n\u00e0y. Xem Qu\u1ea3n l\u00fd m\u00e3 th\u00f4ng b\u00e1o truy c\u1eadp c\u00e1 nh\u00e2n \u0111\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin.<\/p>\n<p>L\u01b0u tr\u1eef m\u00e3 th\u00f4ng b\u00e1o d\u01b0\u1edbi d\u1ea1ng bi\u1ebfn shell t\u1ea1m th\u1eddi \u0111\u1ec3 \u0111\u01a1n gi\u1ea3n h\u00f3a c\u00e1c y\u00eau c\u1ea7u l\u1eb7p l\u1ea1i. Thay th\u1ebf &lt;M\u00e3 th\u00f4ng b\u00e1o truy c\u1eadp&gt; trong v\u00ed d\u1ee5 n\u00e0y b\u1eb1ng m\u00e3 th\u00f4ng b\u00e1o c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>export TOKEN=&lt;token-string&gt;<\/code><\/pre>\n<h2>T\u1ea1o kh\u1ed1i l\u01b0\u1ee3ng l\u01b0u tr\u1eef kh\u1ed1i<\/h2>\n<p>T\u1ea1o kh\u1ed1i l\u01b0u tr\u1eef kh\u1ed1i m\u1edbi b\u1eb1ng c\u00e1ch th\u1ef1c hi\u1ec7n y\u00eau c\u1ea7u POST t\u1edbi \u0111i\u1ec3m cu\u1ed1i \/volumes. B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 t\u1ef1 \u0111\u1ed9ng \u0111\u00ednh k\u00e8m \u1ed5 \u0111\u0129a m\u1edbi v\u00e0o Phi\u00ean b\u1ea3n \u0111i\u1ec7n to\u00e1n hi\u1ec7n c\u00f3 b\u1eb1ng c\u00e1ch chuy\u1ec3n ID c\u1ee7a phi\u00ean b\u1ea3n khi t\u1ea1o \u1ed5 \u0111\u0129a.<\/p>\n<ul>\n<li>Li\u1ec7t k\u00ea c\u00e1c Phi\u00ean b\u1ea3n \u0111i\u1ec7n to\u00e1n tr\u00ean t\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n:<\/li>\n<\/ul>\n<pre class=\"wp-block-code\"><code>curl -H \"Authorization: Bearer $token\" \\<br>https:\/\/api.linode.com\/v4\/linode\/instances<\/code><\/pre>\n<p>Ch\u1ecdn m\u1ed9t Phi\u00ean b\u1ea3n \u0111i\u1ec7n to\u00e1n t\u1eeb danh s\u00e1ch tr\u1ea3 v\u1ec1 r\u1ed3i sao ch\u00e9p c\u00e1c gi\u00e1 tr\u1ecb id v\u00e0 v\u00f9ng c\u1ee7a n\u00f3.<\/p>\n<ul>\n<li>T\u1ea1o m\u1ed9t \u1ed5 \u0111\u0129a trong c\u00f9ng khu v\u1ef1c v\u1edbi phi\u00ean b\u1ea3n m\u1ee5c ti\u00eau. S\u1eed d\u1ee5ng ID c\u1ee7a phi\u00ean b\u1ea3n m\u1ee5c ti\u00eau v\u00e0 \u0111i\u1ec1u ch\u1ec9nh k\u00edch th\u01b0\u1edbc (t\u00ednh b\u1eb1ng GB), v\u00f9ng v\u00e0 nh\u00e3n theo c\u00e1c gi\u00e1 tr\u1ecb mong mu\u1ed1n:<\/li>\n<\/ul>\n<pre class=\"wp-block-code\"><code>curl -H \"Content-Type: application\/json\" \\<br>-H \"Authorization: Bearer $token\" \\<br>-X POST -d '{<br>\"label\": \"my-volume\",<br>\"region\": \"us-east\",<br>\"size\": 100,<br>\"linode_id\": 1234567<br>}' \\<br>https:\/\/api.linode.com\/v4\/volumes<\/code><\/pre>\n<ul>\n<li>Ki\u1ec3m tra \u0111\u1ed1i t\u01b0\u1ee3ng JSON ph\u1ea3n h\u1ed3i v\u00e0 sao ch\u00e9p c\u00e1c gi\u00e1 tr\u1ecb trong tr\u01b0\u1eddng id v\u00e0 filesystem_path:<\/li>\n<\/ul>\n<p>JSON<\/p>\n<pre class=\"wp-block-code\"><code>{<br>\"linode_id\":1234567,<br>\"label\":\"my-volume\",<br>\"size\":100,<br>\"updated\":\"2018-05-07T14:59:48\",<br>\"created\":\"2018-05-07T14:59:48\",<br>\"id\":6830,<br>\"status\":\"creating\",<br>\"region\":\"us-east\",<br>\"filesystem_path\":\"\/dev\/disk\/by-id\/scsi-0Linode_Volume_my-volume\"<br>}<\/code><\/pre>\n<ul>\n<li>Truy v\u1ea5n \u1ed5 \u0111\u0129a b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng \u0111i\u1ec3m cu\u1ed1i \/volumes\/$volume_id \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o n\u00f3 \u0111\u01b0\u1ee3c t\u1ea1o th\u00e0nh c\u00f4ng:<\/li>\n<\/ul>\n<pre class=\"wp-block-code\"><code>curl -H \"Authorization: Bearer $token\" \\<br>https:\/\/api.linode.com\/v4\/volumes\/$volume_id<\/code><\/pre>\n<p>Ch\u1ecdn m\u1ed9t Phi\u00ean b\u1ea3n \u0111i\u1ec7n to\u00e1n t\u1eeb danh s\u00e1ch tr\u1ea3 v\u1ec1 r\u1ed3i sao ch\u00e9p c\u00e1c gi\u00e1 tr\u1ecb id v\u00e0 v\u00f9ng c\u1ee7a n\u00f3.<\/p>\n<ul>\n<li>T\u1ea1o m\u1ed9t \u1ed5 \u0111\u0129a trong c\u00f9ng khu v\u1ef1c v\u1edbi phi\u00ean b\u1ea3n m\u1ee5c ti\u00eau. S\u1eed d\u1ee5ng ID c\u1ee7a phi\u00ean b\u1ea3n m\u1ee5c ti\u00eau v\u00e0 \u0111i\u1ec1u ch\u1ec9nh k\u00edch th\u01b0\u1edbc (t\u00ednh b\u1eb1ng GB), v\u00f9ng v\u00e0 nh\u00e3n theo c\u00e1c gi\u00e1 tr\u1ecb mong mu\u1ed1n:<\/li>\n<\/ul>\n<pre class=\"wp-block-code\"><code>curl -H \"Content-Type: application\/json\" \\<br>-H \"Authorization: Bearer $token\" \\<br>-X POST -d '{<br>\"label\": \"my-volume\",<br>\"region\": \"us-east\",<br>\"size\": 100,<br>\"linode_id\": 1234567<br>}' \\<br>https:\/\/api.linode.com\/v4\/volumes<\/code><\/pre>\n<p>&#8211; Ki\u1ec3m tra \u0111\u1ed1i t\u01b0\u1ee3ng JSON ph\u1ea3n h\u1ed3i v\u00e0 sao ch\u00e9p c\u00e1c gi\u00e1 tr\u1ecb trong tr\u01b0\u1eddng id v\u00e0 filesystem_path:<\/p>\n<p>JSON<\/p>\n<pre class=\"wp-block-code\"><code>{\n  \"linode_id\":1234567,\n  \"label\":\"my-volume\",\n  \"size\":100,\n  \"updated\":\"2018-05-07T14:59:48\",\n  \"created\":\"2018-05-07T14:59:48\",\n  \"id\":6830,\n  \"status\":\"creating\",\n  \"region\":\"us-east\",\n  \"filesystem_path\":\"\/dev\/disk\/by-id\/scsi-0Linode_Volume_my-volume\"\n}<\/code><\/pre>\n<ul>\n<li>Truy v\u1ea5n \u1ed5 \u0111\u0129a b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng \u0111i\u1ec3m cu\u1ed1i \/volumes\/$volume_id \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o n\u00f3 \u0111\u01b0\u1ee3c t\u1ea1o th\u00e0nh c\u00f4ng:<\/li>\n<\/ul>\n<pre class=\"wp-block-code\"><code>curl -H \"Authorization: Bearer $token\" \\<br>https:\/\/api.linode.com\/v4\/volumes\/$volume_id<\/code><\/pre>\n<p>N\u1ebfu tr\u01b0\u1eddng tr\u1ea1ng th\u00e1i trong ph\u1ea3n h\u1ed3i \u0111ang ho\u1ea1t \u0111\u1ed9ng th\u00ec \u1ed5 \u0111\u0129a c\u1ee7a b\u1ea1n \u0111\u00e3 s\u1eb5n s\u00e0ng \u0111\u1ec3 s\u1eed d\u1ee5ng.<\/p>\n<h2>G\u1eafn Volumes<\/h2>\n<p>API kh\u00f4ng th\u1ec3 g\u1eafn tr\u1ef1c ti\u1ebfp t\u1eadp \u0111\u0129a m\u1edbi sau khi n\u00f3 \u0111\u01b0\u1ee3c \u0111\u00ednh k\u00e8m. SSH v\u00e0o Linode v\u00e0 g\u1eafn k\u1ebft th\u1ee7 c\u00f4ng:<\/p>\n<ul>\n<li>T\u1ea1o m\u1ed9t h\u1ec7 th\u1ed1ng t\u1eadp tin tr\u00ean \u1ed5 \u0111\u0129a:<\/li>\n<\/ul>\n<pre class=\"wp-block-code\"><code>mkfs.ext4 $volume_path<\/code><\/pre>\n<ul>\n<li>T\u1ea1o m\u1ed9t \u0111i\u1ec3m g\u1eafn k\u1ebft:<\/li>\n<\/ul>\n<pre class=\"wp-block-code\"><code><code>mkdir \/mnt\/my-volume<\/code><\/code><\/pre>\n<p>G\u1eafn Volumes<\/p>\n<pre class=\"wp-block-code\"><code><code>mount $volume_path \/mnt\/my-volume<\/code><\/code><\/pre>\n<p>\u0110\u1ec3 t\u1ef1 \u0111\u1ed9ng g\u1eafn \u1ed5 \u0111\u0129a m\u1ed7i khi Phi\u00ean b\u1ea3n \u0111i\u1ec7n to\u00e1n c\u1ee7a b\u1ea1n kh\u1edfi \u0111\u1ed9ng, h\u00e3y th\u00eam d\u00f2ng sau v\u00e0o t\u1ec7p \/etc\/fstab c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>\/etc\/fstab<br>$volume_path \/mnt\/my-volume defaults 0 2<\/code><\/pre>\n<h2>G\u1eafn v\u00e0 th\u00e1o \u00e2m l\u01b0\u1ee3ng<\/h2>\n<p>N\u1ebfu b\u1ea1n kh\u00f4ng ch\u1ec9 \u0111\u1ecbnh Phi\u00ean b\u1ea3n \u0111i\u1ec7n to\u00e1n khi t\u1ea1o \u1ed5 \u0111\u0129a ho\u1eb7c mu\u1ed1n g\u1eafn n\u00f3 v\u00e0o m\u1ed9t phi\u00ean b\u1ea3n kh\u00e1c, h\u00e3y s\u1eed d\u1ee5ng \u0111i\u1ec3m cu\u1ed1i \/attach v\u00e0 \/detach:<\/p>\n<ul>\n<li>T\u00e1ch \u00e2m l\u01b0\u1ee3ng. Thay th\u1ebf $volume_id b\u1eb1ng ID t\u1eadp t\u1eeb ph\u1ea7n tr\u01b0\u1edbc:<\/li>\n<\/ul>\n<pre class=\"wp-block-code\"><code>curl -H \"Authorization: Bearer $token\" \\<br>-X POST \\<br>https:\/\/api.linode.com\/v4\/volumes\/$volume_id\/detach<\/code><\/pre>\n<ul>\n<li>\u0110\u00ednh k\u00e8m \u1ed5 \u0111\u0129a v\u00e0o Phi\u00ean b\u1ea3n \u0111i\u1ec7n to\u00e1n m\u1ee5c ti\u00eau m\u1edbi:<\/li>\n<\/ul>\n<pre class=\"wp-block-code\"><code>curl -H \"Authorization: Bearer $token\" \\<br>-H \"Content-Type: application\/json\" \\<br>-X POST -d \\<br>'{ \"linode_id\": $linode-id }' \\<br>https:\/\/api.linode.com\/v4\/volumes\/$volume_id\/attach<\/code><\/pre>\n<p><strong>Xo\u00e1 volume<\/strong><\/p>\n<p>X\u00f3a m\u1ed9t t\u1eadp kh\u1ecfi t\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n b\u1eb1ng y\u00eau c\u1ea7u X\u00d3A. N\u1ebfu \u1ed5 \u0111\u0129a \u0111\u01b0\u1ee3c g\u1eafn v\u00e0o Phi\u00ean b\u1ea3n \u0111i\u1ec7n to\u00e1n, b\u1ea1n s\u1ebd ph\u1ea3i th\u00e1o \u1ed5 \u0111\u0129a ra tr\u01b0\u1edbc khi c\u00f3 th\u1ec3 x\u00f3a \u1ed5 \u0111\u0129a \u0111\u00f3:<\/p>\n<pre class=\"wp-block-code\"><code>curl -H \"Authorization: Bearer $token\" \\<br>-X DELETE \\<br>https:\/\/api.linode.com\/v4\/volumes\/$volume_id<\/code><\/pre>\n<p><strong>Thay \u0111\u1ed5i k\u00edch th\u01b0\u1edbc m\u1ed9t t\u1eadp<\/strong><\/p>\n<p>N\u1ebfu b\u1ea1n c\u1ea7n th\u00eam dung l\u01b0\u1ee3ng, b\u1ea1n c\u00f3 th\u1ec3 t\u0103ng k\u00edch th\u01b0\u1edbc \u1ed5 \u0111\u0129a th\u00f4ng qua API. Kh\u00f4ng th\u1ec3 gi\u1ea3m k\u00edch th\u01b0\u1edbc c\u1ee7a m\u1ed9t t\u1eadp \u0111\u0129a.<\/p>\n<p>Truy\u1ec1n k\u00edch th\u01b0\u1edbc mong mu\u1ed1n (t\u00ednh b\u1eb1ng gigabyte) b\u1eb1ng tham s\u1ed1 k\u00edch th\u01b0\u1edbc:<\/p>\n<pre class=\"wp-block-code\"><code>curl -H \"Content-Type: application\/json\" \\<br>-H \"Authorization: Bearer $token\" \\<br>-X POST -d '{<br>\"size\": 200<br>}' \\<br>https:\/\/api.linode.com\/v4\/volumes\/$volume_id\/resize<\/code><\/pre>\n<p class=\"has-background\" style=\"background-color:#cefdec\">Sau khi thay \u0111\u1ed5i k\u00edch th\u01b0\u1edbc \u00e2m l\u01b0\u1ee3ng, b\u1ea1n c\u0169ng c\u1ea7n thay \u0111\u1ed5i k\u00edch th\u01b0\u1edbc h\u1ec7 th\u1ed1ng t\u1ec7p \u0111\u1ec3 ch\u1ee9a th\u00eam dung l\u01b0\u1ee3ng. \u0110\u1ec3 bi\u1ebft h\u01b0\u1edbng d\u1eabn, h\u00e3y xem m\u1ed9t s\u1ed1 b\u01b0\u1edbc cu\u1ed1i c\u00f9ng tr\u00ean h\u01b0\u1edbng d\u1eabn \u0110\u1ed5i k\u00edch th\u01b0\u1edbc \u00e2m l\u01b0\u1ee3ng.<\/p>\n<p>Ngu\u1ed3n: https:\/\/techdocs.akamai.com\/cloud-computing\/docs\/manage-block-storage-volumes-with-the-api<\/p>\n","protected":false},"excerpt":{"rendered":"<p>API Linode cho ph\u00e9p b\u1ea1n t\u1ea1o, x\u00f3a, \u0111\u00ednh k\u00e8m, t\u00e1ch, sao ch\u00e9p v\u00e0 thay \u0111\u1ed5i k\u00edch th\u01b0\u1edbc kh\u1ed1i l\u01b0\u1ee3ng Block Storage. Tr\u01b0\u1edbc khi b\u1ea1n b\u1eaft \u0111\u1ea7u B\u1ea1n c\u1ea7n c\u00f3 M\u00e3 th\u00f4ng b\u00e1o truy c\u1eadp c\u00e1 nh\u00e2n cho API Linode \u0111\u1ec3 ho\u00e0n th\u00e0nh c\u00e1c b\u01b0\u1edbc trong h\u01b0\u1edbng d\u1eabn n\u00e0y. Xem Qu\u1ea3n l\u00fd m\u00e3 th\u00f4ng b\u00e1o truy<\/p>\n","protected":false},"author":1,"featured_media":36028,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[65],"tags":[],"class_list":["post-34980","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-block-storage"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34980","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/comments?post=34980"}],"version-history":[{"count":0,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34980\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/36028"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=34980"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=34980"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=34980"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}