Menambahkan persistent disk ke VM

Buat dan pasang disk non-boot ke virtual machine (VM) Anda menggunakan petunjuk di halaman ini.

Sebelum memulai

Untuk menggunakan perintah antarmuka command line (CLI) gdcloud, pastikan Anda telah mendownload, menginstal, dan mengonfigurasi CLI gdcloud. Semua perintah untuk Distributed Cloud menggunakan CLI gdcloud atau kubectl, dan memerlukan lingkungan sistem operasi (OS).

Mendapatkan jalur file kubeconfig

Untuk menjalankan perintah terhadap server Management API, pastikan Anda memiliki resource berikut:

  1. Login dan buat file kubeconfig untuk server Management API jika Anda belum memilikinya.

  2. Gunakan jalur ke file kubeconfig server Management API untuk menggantikan MANAGEMENT_API_SERVER dalam petunjuk ini.

Meminta izin dan akses

Untuk melakukan tugas yang tercantum di halaman ini, Anda harus memiliki peran Project VirtualMachine Admin. Ikuti langkah-langkah untuk memverifikasi bahwa Anda memiliki peran Project VirtualMachine Admin (project-vm-admin) di namespace project tempat VM berada.

Untuk operasi VM menggunakan konsol GDC atau gdcloud CLI, minta Admin IAM Project Anda untuk memberi Anda peran Project VirtualMachine Admin dan peran Project Viewer (project-viewer).

Memasang disk ke VM

Buat dan pasang disk non-boot ke VM Anda. Setiap disk tambahan dapat menentukan image kustom atau disk kosong. Anda dapat menambahkan beberapa disk sekaligus ke VM.

Konsol

  1. Di menu navigasi, klik Virtual Machines > Instances.

  2. Dalam daftar VM, klik nama VM untuk melihat detailnya.

  3. Klik Add new disk.

  4. Pada dialog konfirmasi, klik Stop untuk menghentikan VM.

  5. Tunggu beberapa menit hingga VM berhenti.

  6. Klik Muat ulang.

  7. Saat VM dalam status dihentikan, klik Tambahkan disk baru lagi.

  8. Dalam dialog Tambahkan disk, pilih disk baru atau disk yang ada.

    • Untuk menyediakan disk baru, klik tab New disk.

      1. Di kolom Disk name, masukkan nama disk baru yang unik untuk project.
      2. Di kolom Size, masukkan ukuran disk antara 10 dan 65536 GiB. Misalnya, 10 GiB.
      3. Di bagian Deletion rule, klik Keep disk atau Delete disk.
    • Untuk memilih disk yang ada, klik tab Existing disk.

      1. Dalam daftar Disk, pilih disk.
      2. Di bagian Aturan penghapusan, klik Pertahankan disk atau Hapus disk.
  9. Klik Simpan. Disk akan muncul di daftar disk untuk VM.

  10. Mulai ulang VM.

API

  1. Buat VirtualMachineDisk:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -n PROJECT -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: NON_BOOT_BLANK_DISK
    spec:
      size: NON_BOOT_BLANK_DISK_SIZE
    EOF
    
  2. Hentikan VM.

  3. Tambahkan VirtualMachineDisk ke VirtualMachine spec.disks yang ada:

    kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog -n PROJECT VM_NAME
    

    Edit yang berikut di editor teks Anda:

    ...
    disks:
    - virtualMachineDiskRef:
        name: VM_BOOT_DISK_NAME
        boot: true
    - virtualMachineDiskRef:
        name: NON_BOOT_BLANK_DISK
        autoDelete: false
    ...
    

    Ganti variabel menggunakan definisi berikut.

    VariabelDefinisi
    MANAGEMENT_API_SERVER File kubeconfig server Management API.
    PROJECT Project Google Distributed Cloud dengan air gap (GDC) tempat VM akan dibuat.
    VM_NAMENama VM baru.
    VM_BOOT_DISK_NAMENama boot disk VM baru.
    NON_BOOT_BLANK_DISKNama disk tambahan Anda.
    NON_BOOT_BLANK_DISK_SIZEUkuran disk tambahan Anda, seperti 20G.
  4. Mulai VM.

Memformat dan memasang non-boot disk

Setelah memasang disk ke VM, lakukan langkah-langkah yang diperlukan berikut agar disk dapat diakses dalam VM.

Terhubung ke VM

SSH ke VM.

Memformat disk

  1. Cantumkan disk yang terpasang ke instance Anda berdasarkan nomor seri dan temukan disk yang ingin Anda format dan pasang.

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

    Contoh output ini menampilkan nama disk sebagai nomor seri:

       total 0
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 ata-QEMU_HARDDISK_agentSADisk -> ../../sdc
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-0ATA_QEMU_HARDDISK_agentSADisk -> ../../sdc
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot -> ../../sda
       lrwxrwxrwx 1 root root 10 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part1 -> ../../sda1
       lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part14 -> ../../sda14
       lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part15 -> ../../sda15
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-1ATA_QEMU_HARDDISK_agentSADisk -> ../../sdc
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-SATA_QEMU_HARDDISK_agentSADisk -> ../../sdc
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot -> ../../sda
       lrwxrwxrwx 1 root root 10 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part1 -> ../../sda1
       lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part14 -> ../../sda14
       lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part15 -> ../../sda15
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb
    

    Informasi yang mengikuti panah, ->, di setiap baris menunjukkan nama perangkat disk. Misalnya, di scsi-SQEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb, nomor serinya adalah scsi-SQEMU_QEMU_HARDDISK_vm-disk-data dan nama perangkat adalah sdb.

  2. Identifikasi nomor seri disk Anda dari daftar ini.

    Perilaku fitur situasional penting yang dapat memengaruhi daftar nomor seri:

    • Jika nilai virtualMachineDiskRef.name lebih panjang dari 20 karakter, hanya 20 karakter pertama yang digunakan sebagai nomor seri.
    • Jika ada dua disk dengan 20 karakter pertama yang sama, hanya disk pertama yang memiliki nomor seri.
  3. Format disk:

   sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/disk/by-id/DISK_ID
  • Ganti DISK_ID dengan nomor seri disk yang sedang Anda format.
  • Untuk contoh ini, tetapkan scsi-SQEMU_QEMU_HARDDISK_vm-disk-data untuk memformat seluruh disk tanpa tabel partisi.

Untuk memaksimalkan performa disk, gunakan opsi pemformatan yang direkomendasikan di flag -E. Karena Anda tidak perlu mencadangkan ruang untuk volume root di disk sekunder, tetapkan -m 0 untuk menggunakan semua kapasitas disk yang tersedia.

Memasang disk

  1. Buat direktori yang berfungsi sebagai direktori pemasangan disk baru. Anda dapat menggunakan direktori apa pun. Contoh berikut membuat direktori di /mnt/disks/:

    sudo mkdir -p /mnt/disks/MOUNT_DIR
    

    Ganti MOUNT_DIR dengan direktori tempat Anda ingin memasang disk.

  2. Pasang disk ke instance, dan aktifkan opsi hapus:

    sudo mount -o discard,defaults /dev/disk/by-id/DISK_ID /mnt/disks/MOUNT_DIR
    

    Ganti kode berikut:

    • DISK_ID dengan nomor seri disk yang akan di-mount.
    • MOUNT_DIR dengan direktori tempat Anda ingin memasang disk.
  3. Opsional: Konfigurasikan izin baca dan tulis pada disk. Perintah berikut memberikan akses tulis, a+w, ke disk untuk semua pengguna.

    sudo chmod a+w /mnt/disks/MOUNT_DIR
    
  4. Opsional: Mengonfigurasi pemasangan otomatis saat VM dimulai ulang - Menggunakan ID unik universal (UUID) atau skrip startup.

Mengonfigurasi pemasangan otomatis saat VM dimulai ulang - UUID disk

Tambahkan disk ke file /etc/fstab Anda agar disk otomatis dipasang lagi saat VM dimulai ulang. Di sistem operasi (OS), nama perangkat berubah setiap kali perangkat dimulai ulang, tetapi UUID perangkat selalu mengarah ke volume yang sama, bahkan saat Anda memindahkan disk antar sistem. Oleh karena itu, selalu gunakan UUID perangkat untuk mengonfigurasi pemasangan otomatis saat VM dimulai ulang.

  1. Buat cadangan file /etc/fstab saat ini:

      sudo cp /etc/fstab /etc/fstab.backup
    
  2. Mencantumkan UUID untuk disk:

      sudo blkid /dev/DEVICE_NAME
    

    Contoh output menunjukkan UUID accc19c5-d0d6-4157-9672-37d4e1d48eb5 untuk disk

      /dev/sdb: UUID="accc19c5-d0d6-4157-9672-37d4e1d48eb5" TYPE="ext4"
    

    DEVICE_NAME adalah nama perangkat disk yang ingin Anda pasang secara otomatis. Jika Anda membuat tabel partisi di disk, tentukan partisi yang ingin dipasang sebagai akhiran ke nama perangkat. Misalnya, jika sdb adalah nama perangkat disk, dan Anda ingin memasang partisi 1, DEVICE_NAME akan menjadi sdb1.

  3. Buka file /etc/fstab di editor teks, lalu buat entri yang menyertakan UUID:

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

    Ganti kode berikut:

    • UUID_VALUE dengan UUID disk, yang tercantum sebagai output dari perintah List the UUID.
    • MOUNT_DIR dengan direktori tempat Anda memasang disk.
    • MOUNT_OPTION dengan nilai MOUNT_OPTION untuk OS Anda, yang menentukan tindakan yang dilakukan OS jika tidak dapat memasang disk saat booting.
  4. Pastikan entri /etc/fstab Anda sudah benar:

      cat /etc/fstab
    

    Berikut adalah contoh output:

      LABEL=cloudimg-rootfs /    ext4   defaults    0 1
      LABEL=UEFI    /boot/efi   vfat    umask=0077  0 1
      UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
    

Jika Anda melepaskan disk ini atau membuat snapshot dari boot disk untuk VM ini, edit file /etc/fstab dan hapus entri untuk disk ini. Meskipun Anda telah menetapkan MOUNT_OPTION ke nofail atau nobootwait, pastikan file /etc/fstab tetap sinkron dengan perangkat yang terpasang ke VM Anda. Hapus entri ini sebelum Anda membuat snapshot boot disk atau melepaskan disk.

Mengonfigurasi pemasangan otomatis saat VM dimulai ulang - Skrip startup VM

Anda juga dapat menggunakan skrip startup untuk memasang disk pada setiap reboot dengan menambahkan perintah dari Pasang Disk ke skrip startup. Sebelum menambahkan skrip untuk memasang disk, format disk menggunakan perintah dari Memformat disk.

  1. Buat rahasia skrip startup.

    cat <<EOF >>mount-disk-script
    #!/bin/bash
    mkdir -p /mnt/disks/MOUNT_DIR
    mount -o discard,defaults /dev/disk/by-id/DISK_ID /mnt/disks/MOUNT_DIR
    EOF
    
    kubectl create secret -n PROJECT generic VM_NAME-mount-script --from-file=script=mount-disk-script
    
    rm mount-disk-script
    
  2. Tambahkan skrip startup ke VM.

    kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog -n PROJECT VM_NAME
    

    Edit spec.startupScripts untuk menyertakan nama rahasia.

    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachine
    metadata:
    name: VM_NAME
    namespace: PROJECT
    spec:
    …
    startupScripts:
    - name: mount-script
      scriptSecretRef:
        name: VM_NAME-mount-script
    

Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi skrip startup, lihat.