在 GCP 上建立一個 persistent disk

概述

Google Compute Engine 讓你在 Google 的基礎設施上建立以及運行虛擬機。 你可以在建立運行著不同作業系統的虛擬機,包含不同偏好的 Linux (Debian, Ubuntu, Suse, Red Hat, CoreOS) 以及 Windows Server

Google Compute Engine 提供 persistent disks, 這是虛擬機上的主要儲存空間。 就像是實體的硬碟一樣, persistent disks 可獨立存在於你的虛擬機 - 如果一台虛擬機被刪除了,附加的 persistent disk 將可以持續將資料留住,並且可以附加到其他的虛擬機上。

Persistent disks 有兩種:

一般persistent disk
SSD persistent disk

更多兩者差異的資訊,可以參考 Storage Options 。 兩種類型的 persistent type 有其不同的容量限制,更多資訊請參考 Persistent Disk 官方文件



本篇將會做什麼?

  • 建立一個新的 VM instance ,然後在其新增 persistent disk
  • 掛載並格式化 persistent disk


前言

本篇主要是利用 Google 的 Qwiklab 平台學習的同時,做的一份學習筆記
原文請參閱
Refer to official link



設定及要求

在你按下 Start Lab 按鈕之前

詳讀所有的教學。 Labs 是有時間限制的, 而且你不可以停止時間倒數。 倒數計時器在你按下 Start Lab 按鈕後開始倒數, 上面顯示的時間為你還能使用 Cloud 資源的時間。

Qwiklabs 的手把手環境, 讓你可以在真實環境中來操作進行 Qwiklabs 上提供的課程, 而不是在一個模擬或是展示的環境。 我們透過提供你一個全新的、暫時的帳號密碼, 在計時器歸零之前, 你可以用來登入並存取 Google Cloud Platform。

你需要什麼?

要完成這個 lab, 你需要:

  • 一個一般的網路瀏覽器(推薦 Chrome)
  • 完成這個 lab 的時間

備註: 如果你已經有你自己的個人 GCP 帳號或專案,請不要使用在這一個 lab

現在你已經開始你的 lab, 你將會登入 Google Cloud Shell 主控台, 然後開啟命令列工具

如何開始你的 lab, 然後登入 Console?

  • 按下 Start Lab 按鈕。 如果你需要付費, 會有一個彈出視窗來讓你選擇付費的方式。 在左方你會看到一個面板, 上面有暫時的帳號密碼, 你必須使用這些帳號密碼在此次 lab

  • 複製 username, 然後點擊 Open Google Console。 Lab 會開啟另外一個視窗, 顯示選擇帳號的頁面

tip: 開啟一個全新的視窗,然後跟原本的頁面並排

  • 選擇帳號頁面, 點擊 Use Another Account

  • 登入頁面開啟, 貼上之前複製的 username 以及 password, 然後貼上

重要: 必須使用之前於 Connection Details 面板 取得的帳號密碼,不要使用你自己的 Qwiklabs 帳號密碼。 如果你有自己的 GCP 帳號, 請不要用在這裡(避免產生費用)

  • 點擊並通過接下來的頁面:
    • 接受 terms 以及 conditions
    • 不要增加 recovery optoinstwo factor authentication (因為這只是一個臨時帳號)
    • 不要註冊免費體驗

稍待一些時候, GCP 控制台將會在這個視窗開啟。

注意: 按下左上方位於 Google Cloud Platform 隔壁的 Navigation menu, 你可以瀏覽選單, 裡面有一系列的 GCP 產品以及服務


啟動 Google Cloud Shell

Google Cloud Shell 是載有開發工具的虛擬機器。 它提供了5GB的 home 資料夾, 並且運行在 Google Cloud 上。 Google Cloud Shell 讓你可以利用 command-line 存取 GCP 資源

  • GCP 控制台, 右上的工具列,點擊 Open Cloud Shell 按鈕

  • 在打開的對話框裡, 按下 START CLOUD SHELL:

你可以立即按下 START CLOUD SHELL 當對話視窗打開。

連結並提供環境會需要一點時間。 當你連結成功, 這代表你已成功獲得授權, 且此專案已被設為你的專案ID, 例如:

gcloudGoogle Cloud Platform 的 command-line 工具, 他已事先被安裝在 Cloud Shell 並且支援自動補齊

使用這個 command, 你可以列出有效帳戶名稱:

gcloud auth list

輸出:

Credentialed accounts:
- <myaccount>@<mydomain>.com (active)

範例輸出:

Credentialed accounts:
- google1623327_student@qwiklabs.net

你可以使用以下 command 來列出專案 ID

gcloud config list project

輸出:

[core]
project = <project_ID>

範例輸出:

[core]
project = qwiklabs-gcp-44776a13dea667a6

gcloud 的完整文件可以參閱 Google Cloud gcloud Overview



建立 VM instance

  • 建立一個名為 ‘gcelab’ 的新虛擬機 instance
    gcloud compute instances create gcelab --zone us-central1-c
  • 新建的VM instance將有內建10GB的初始化disk

建立新的 persistent disk

  • 在 Cloud Shell 中輸入以下指令,注意 zone 參數需與 VM instance 一致
    gcloud compute disks create mydisk --size=200GB --zone us-centrall-c

在運轉中的 VM instance 上新增剛建立的 persistent disk

gcloud compute instances attach-disk gcelab --disk mydisk --zone us-central1-c

在 VM instance 上找到剛剛新增的 persistent disk

  • SSH 到 virtual machine

    gcloud compute ssh gcelab --zone us-central1-c
  • 輸入y繼續

  • 如果需要設定密碼,可以輸入密碼

  • 在 /dev/disk/by-id/ 下找到 disk 裝置

    ls -l /dev/disk/by-id/
  • 找到預設裝置名稱如下:

    scsi-0Google_PersistentDisk_persistent-disk-1.
  • 如果你想要一個不一樣的裝置名稱,當你在新增 disk 時,你可以加入裝置名稱參數

    gcloud compute instances attach-disk gcelab --disk mydisk --device-name yourDeviceName --zone us-central1-c

格式化,並且掛載 persistent disk

  • 在找到裝置後,我們可以將 disk 分區,格式化,並且掛載
  • 建立一個掛載點
    sudo mkdir /mnt/mydisk
  • 使用 mkfs 工具,格式化 disk 為 ext4 格式,這個指令將會刪除指定 disk 下的所有資料
    sudo mkfs.ext4 -F -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/disk/by-id/scsi-0Google_PersistentDisk_persistent-disk-1
  • 利用 mount 工具,掛載 disk
    sudo mount -o discard,defaults /dev/disk/by-id/scsi-0Google_PersistentDisk_persistent-disk-1 /mnt/mydisk

    設定自動掛載

  • 預設值中,在 VM instance 重新啟動之後, persistent disk 並不會自動掛載,我們需要在/etc/fstab檔案中增加一些輸入
    sudo vim /etc/fstab
  • 在開頭是 UUID 那段程式碼之後,加入:
    /dev/disk/by-id/scsi-0Google_PersistentDisk_persistent-disk-1 /mnt/mydisk ext4 defaults 1 1
  • 此時,你的 /etc/fstab 應該看起來要像這樣:
    UUID=e084c728-36b5-4806-bb9f-1dfb6a34b396 / ext4 defaults 1 1
    /dev/disk/by-id/scsi-0Google_PersistentDisk_persistent-disk-1 /mnt/mydisk ext4 defaults 1 1

:wq

小習題:

  • Can you prevent the destruction of an attached persistent disk when the instance is deleted?
    • No, attached persistent disks are always associated with the lifetime of the instance.
    • Yes, deselect the option Delete boot disk when instance is deleted when creating an instance
    • Yes, use the -keep-disks option with the gcloud compute instances delete command
  • For migrating data from a persistent disk to another region, reorder the following steps in which they should be performed:
  1. Attach disk

  2. Create disk

  3. Create snapshot

  4. Create instance

  5. Unmount file system(s)

    • (4, 1, 2, 3, 5)
    • (2, 3, 1, 4, 5)
    • (1, 3, 2, 4, 5)
    • (5, 3, 2, 4, 1)

非必要指令

  • 顯示活躍中帳戶
    gcloud auth list
  • 顯示project id
    gcloud config list project
Cloud Shell 及 Gcloud 簡介! 利用GCP Marketplace來提供服務

留言

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×