在 Linux VM 上格式化及掛接非開機磁碟


如果您將新的空白磁碟連接至 VM,必須先格式化並掛接磁碟,才能使用。如果附加的磁碟已包含資料,您必須先掛接磁碟才能使用。

事前準備

  • 如果尚未設定驗證,請先完成設定。 「驗證」是指驗證身分的程序,確認您有權存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.
      3. REST

        如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。

連線至 VM

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體頁面

  2. 按一下具有新連接磁碟的執行個體旁邊的「SSH」SSH按鈕。瀏覽器會開啟對於 VM 的終端機連線。

在 Linux VM 上格式化非開機磁碟

  1. 在終端機中,使用為附加磁碟建立的 符號連結,判斷要格式化的裝置。

     ls -l /dev/disk/by-id/google-*
    

    未格式化的磁碟名稱中不會有額外的符號連結,且名稱中不會有 -partN

     google-extra-scsi-disk -> ../../sdb
     google-instance-2 -> ../../sda
     google-instance-2-part1 -> ../../sda1
     google-instance-2-part14 -> ../../sda14
     google-instance-2-part15 -> ../../sda15
     google-local-nvme-ssd-0 -> ../../nvme0n1
     google-local-nvme-ssd-1 -> ../../nvme0n2
    

    在本範例中,新永久磁碟的名稱為 extra-scsi-disk。新磁碟的裝置名稱為 sdb

  2. 使用 mkfs 工具格式化磁碟裝置。 此指令會刪除指定磁碟上的所有資料,因此請確認您已正確指定磁碟裝置。

    您可以使用需要的任何檔案格式,但我們建議使用沒有磁區分割表的單一 ext4 檔案系統。您可以稍後再增加磁碟大小,不需要修改磁碟分區。

    如要獲得最高的磁碟效能,請在 -E 旗標中使用建議的格式化選項。不需要為這個次要磁碟上的根磁碟區保留空間,因此請指定 -m 0 以使用全部的可用磁碟空間。下列指令會格式化整個磁碟,且不含分區表。

     $ sudo mkfs.FILE_SYSTEM_TYPE -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/DEVICE_NAME
     

    更改下列內容:

    • FILE_SYSTEM_TYPE:檔案系統類型。例如 ext2ext3ext4xfs
    • DEVICE_NAME:要格式化的磁碟裝置名稱。舉例來說,如果使用第一個步驟中的範例輸出內容,您會將 sdb 做為裝置名稱。

掛接磁碟

  1. 在 VM 上建立做為新磁碟掛接點的目錄。 您可以使用任何目錄。以下範例會在 /mnt/disks/ 下建立目錄。

    $ sudo mkdir -p /mnt/disks/MOUNT_DIR
    

    MOUNT_DIR 替換為要掛接磁碟的目錄。

  2. 使用掛接工具將磁碟掛接至執行個體,並啟用 discard 選項:

    $ sudo mount -o discard,defaults /dev/DEVICE_NAME /mnt/disks/MOUNT_DIR
    

    更改下列內容:

    • DEVICE_NAME:要掛接的磁碟裝置名稱。
    • MOUNT_DIR:要掛接磁碟的目錄。
  3. 設定磁碟的讀取與寫入權限。在本範例中,授予所有使用者對磁碟的寫入存取權。

    $ sudo chmod a+w /mnt/disks/MOUNT_DIR
    

    MOUNT_DIR 替換為您掛接磁碟的目錄。

設定在 VM 重新啟動時自動掛接

將磁碟新增至 /etc/fstab 檔案,這樣 VM 重新啟動時,磁碟就會自動再次掛接。在 Linux 作業系統中,裝置名稱可能會在每次重新啟動時變更,但裝置 UUID 一律會指向相同磁碟區,即使您在系統之間移動磁碟也是如此。因此,我們建議使用裝置 UUID,而非裝置名稱,在 VM 重新啟動時設定自動掛接。

  1. 建立您目前 /etc/fstab 檔案的備份。

    $ sudo cp /etc/fstab /etc/fstab.backup
    
  2. 使用 blkid 指令列出磁碟的 UUID。

    $ sudo blkid /dev/DEVICE_NAME
    
    /dev/DEVICE_NAME: UUID="a9e1c14b-f06a-47eb-adb7-622226fee060" BLOCK_SIZE="4096"
    TYPE="ext4" PARTUUID="593b3b75-108f-bd41-823d-b7e87d2a04d1"
    

    更改下列內容:

    • DEVICE_NAME:要自動掛接的磁碟裝置名稱。如果您在磁碟上建立了磁區分割表,請指定要掛接的分區,方法是在裝置名稱後方加上後置字元。舉例來說,如果磁碟的裝置名稱是 sdb,則分割區的名稱可能是 sdb1
  3. 以文字編輯器開啟 /etc/fstab 檔案,並建立包含 UUID 的項目。例如:

    UUID=UUID_VALUE /mnt/disks/MOUNT_DIR FILE_SYSTEM_TYPE discard,defaults,MOUNT_OPTION 0 2
    

    更改下列內容:

    • UUID_VALUE:磁碟的 UUID,列於上一步的輸出內容中
    • MOUNT_DIR:您掛接磁碟的目錄
    • FILE_SYSTEM_TYPE:檔案系統類型。 例如 ext2ext3ext4xfs
    • MOUNT_OPTION:指定作業系統在開機時若無法掛接區域永久磁碟,所應執行的動作。如需有效值,請參閱 Linux fstab 說明文件中的第四個欄位。 如要允許系統啟動,即使磁碟無法使用也允許,請使用 nofail 掛接選項。
  4. 使用 cat 指令驗證 /etc/fstab 項目是否正確:

    $ cat /etc/fstab
    
    UUID=6B33-A686 /boot/efi vfat defaults 0 0
    UUID=UUID_VALUE /mnt/disks/MOUNT_DIR FILE_SYSTEM_TYPE discard,defaults,MOUNT_OPTION 0 2
    
    

請務必讓 /etc/fstab 檔案與附加至 VM 的裝置保持同步。如要卸離磁碟,或從 VM 的開機磁碟建立快照,請編輯 /etc/fstab 檔案,並移除磁碟的項目。即使您將 MOUNT_OPTION 設為 nofailnobootwait,也請在建立開機磁碟快照或卸離磁碟前移除項目。

後續步驟