Praktik terbaik: Menggunakan nama perangkat tetap di VM Linux


Dokumen ini menjelaskan cara menggunakan penamaan perangkat tetap di VM Linux Anda.

Untuk VM yang menggunakan sistem operasi Linux, nama perangkat, misalnya /dev/sda, dapat berubah setelah Anda melakukan prosedur berikut:

  • Memulai dan menghentikan VM
  • Melepaskan dan memasang kembali disk
  • Mengubah jenis mesin

Perubahan nama perangkat ini terjadi karena nama perangkat ditetapkan dari rentang yang tersedia setelah VM dimulai atau perangkat dipasang. Melepaskan perangkat atau menghentikan VM akan membebaskan nama perangkat. Saat perangkat dipasang ulang atau VM dimulai ulang, nama perangkat baru akan ditetapkan dari rentang yang tersedia. Kernel Linux tidak menjamin pengurutan perangkat di seluruh mulai ulang.

Perubahan nama perangkat dapat menyebabkan aplikasi atau skrip yang bergantung pada nama perangkat asli tidak berfungsi dengan baik atau dapat menyebabkan VM tidak di-booting setelah dimulai ulang.

Sebaiknya gunakan penamaan perangkat persisten saat merujuk pada disk dan partisi pada VM Linux Anda untuk menghindari masalah ini. Anda juga dapat menggunakan symlink.

Sebelum memulai

  • Tinjau pengelolaan perangkat untuk sistem operasi Linux Anda:
  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses verifikasi identitas Anda untuk mengakses layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    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. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.

Penamaan perangkat di VM Linux

Nama perangkat Linux untuk disk yang terpasang ke VM Anda bergantung pada antarmuka yang Anda pilih saat membuat disk. Saat Anda menggunakan perintah sistem operasi lsblk untuk melihat perangkat disk Anda, perintah itu akan menampilkan awalan nvme untuk disk yang terpasang dengan antarmuka NVMe, dan awalan sd untuk disk yang terpasang dengan antarmuka SCSI.

Urutan nomor disk atau pengontrol NVMe tidak dapat diprediksi atau konsisten saat VM dimulai ulang. Pada booting pertama, persistent disk mungkin berupa nvme0n1 (atau sda untuk SCSI). Pada boot kedua, nama perangkat untuk persistent disk yang sama mungkin adalah nvme2n1 atau nvme0n3 (atau sdc untuk SCSI).

Saat mengakses disk yang terpasang, Anda harus menggunakan link simbolis yang dibuat di /dev/disk/by-id/. Nama-nama ini akan tetap ada setelah mulai ulang. Untuk informasi selengkapnya tentang symlink, lihat Link simbolis untuk disk yang dilampirkan ke VM.

Nama perangkat SCSI

Format perangkat disk yang terpasang SCSI adalah sda untuk disk pertama yang terpasang. Partisi disk muncul sebagai sda1. Setiap disk tambahan menggunakan huruf berurutan, seperti sdb dan sdc. Saat sdz tercapai, disk berikutnya yang ditambahkan akan memiliki nama seperti sdaa, sdab, dan sdac, hingga sddx.

Nama perangkat NVMe

Format perangkat disk yang terpasang NVMe di sistem operasi Linux adalah nvmenumbernnamespace. number mewakili nomor pengontrol disk NVMe dan namespace adalah ID namespace NVMe yang ditetapkan oleh pengontrol disk NVMe. Untuk partisi, pn ditambahkan ke nama perangkat, dengan n adalah angka, dimulai dengan 1, yang menunjukkan nth partisi.

Nomor pengontrol dimulai pada 0. Satu disk NVMe yang terpasang ke instance compute Anda memiliki nama perangkat nvme0n1. Sebagian besar jenis mesin menggunakan satu pengontrol disk NVMe. Nama perangkat NVMe kemudian adalah nvme0n1, nvme0n2, nvme0n3, dan seterusnya.

Disk SSD lokal yang terpasang ke seri mesin generasi ketiga atau instance yang lebih baru memiliki pengontrol NVMe terpisah untuk setiap disk. Pada VM ini, nama perangkat yang terpasang pada SSD Lokal NVMe akan terlihat seperti nvme0n1, nvme1n1, dan nvme2n1. Jumlah disk SSD Lokal yang terpasang bergantung pada jenis mesin VM Anda.

Instance Compute berdasarkan seri mesin generasi ketiga atau yang lebih baru menggunakan NVMe untuk Persistent Disk dan Hyperdisk Google Cloud, serta disk SSD Lokal. Setiap VM memiliki 1 pengontrol NVMe untuk Persistent Disk dan Hyperdisk serta 1 pengontrol NVMe untuk setiap disk SSD Lokal. Pengontrol NVMe Hyperdisk dan Persistent Disk memiliki namespace NVMe tunggal untuk semua disk yang terpasang. Jadi, instance seri mesin generasi ketiga dengan satu Persistent Disk dan satu Hyperdisk (masing-masing dengan 2 partisi), dan 2 disk SSD Lokal yang tidak diformat menggunakan nama perangkat berikut:

  • nvme0n1 - Persistent Disk
  • nvme0n1p1
  • nvme0n1p2
  • nvme0n2 - Hyperdisk
  • nvme0n2p1
  • nvme0n2p2
  • nvme1n1 - SSD Lokal pertama
  • nvme2n1 - SSD Lokal kedua

Menggunakan penamaan perangkat tetap

Untuk mengonfigurasi nama perangkat persisten, tetapkan nama direktori pemasangan untuk perangkat disk dalam file fstab. Ada tiga cara untuk mengonfigurasi nama perangkat persisten.

  • Dengan menggunakan label. Opsi ini mengharuskan sistem file mendukung label dan Anda menambahkan label ke partisi disk.
  • Dengan menggunakan partisi atau UUID disk. UUID dihasilkan jika disk dibuat dengan tabel partisi, dan UUID bersifat unik untuk setiap partisi.
  • Dengan menggunakan ID persistent disk (/dev/disk/by-id) untuk Persistent Disk atau Hyperdisk Google Cloud, atau symlink, yang didasarkan pada nama resource disk.

Sebaiknya gunakan UUID partisi atau symlink untuk VM Linux.

UUID partisi

Untuk menemukan UUID disk, lakukan langkah-langkah berikut:

  1. Hubungkan ke VM Anda.
  2. Jika tidak mengetahui nama perangkat untuk disk, Anda dapat menemukan nama perangkat disk menggunakan symlink.

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

    Outputnya mirip dengan hal berikut ini:

      lrwxrwxrwx 1 root root  9 Oct 23 15:58 /dev/disk/by-id/google-my-vm -> ../../sda
      lrwxrwxrwx 1 root root 10 Oct 23 15:58 /dev/disk/by-id/google-my-vm-part1 -> ../../sda1
      lrwxrwxrwx 1 root root 11 Oct 23 15:58 /dev/disk/by-id/google-my-vm-part15 -> ../../sda15
      lrwxrwxrwx 1 root root  9 Oct 23 15:58 /dev/disk/by-id/google-my-vm-app-data -> ../../nvme0n1
      

  3. Ambil UUID partisi untuk disk dengan menjalankan salah satu perintah berikut:

    • blkid

      sudo  blkid -s UUID
      

      Outputnya mirip dengan berikut ini:

      /dev/sda1: UUID="4f570f2d-fffe-4c7d-8d8f-af347af7612a"
      /dev/sda15: UUID="E0B2-DFAF"
      /dev/nvme0n1: UUID="9e617251-6a92-45ff-ba40-700a9bdeb03e"
      
    • ls -l

      sudo ls -l /dev/disk/by-uuid/
      

      Outputnya mirip dengan hal berikut ini:

      lrwxrwxrwx 1 root root 10 Sep 22 18:12 4f570f2d-fffe-4c7d-8d8f-af347af7612a -> ../../sda1
      lrwxrwxrwx 1 root root 13 Sep 22 18:15 9e617251-6a92-45ff-ba40-700a9bdeb03e -> ../../nvme0n1
      lrwxrwxrwx 1 root root 11 Sep 22 18:12 E0B2-DFAF -> ../../sda15
      
  4. Tambahkan entri untuk UUID perangkat Anda di file /etc/fstab.

    UUID=9e617251-6a92-45ff-ba40-700a9bdeb03e /data ext4 defaults 0 0
    

    Dalam contoh ini, /data adalah titik pemasangan dan ext4 adalah jenis sistem file.

  5. Pastikan perangkat telah terpasang dengan benar dengan menjalankan mount -av.

    sudo mount -av

    Jika perangkat berhasil dipasang, outputnya akan mirip dengan berikut:

    /                           : ignored
    /boot/efi                : already mounted
    mount: /data does not contain SELinux labels.
    You just mounted an file system that supports labels which does not
    contain labels, onto an SELinux box. It is likely that confine
    applications will generate AVC messages and not be allowed access to
    this filesystem.  For more details see restorecon(8) and mount(8).
    /data                    : successfully mounted
    

ID persistent disk

Untuk menemukan nama perangkat disk menggunakan ID disk persisten, atau symlink, selesaikan langkah-langkah berikut:

  1. Hubungkan ke VM Anda.
  2. Ambil ID pada disk dengan menjalankan perintah berikut:

    sudo  ls -lh /dev/disk/by-id/google-*

    Outputnya mirip dengan hal berikut ini:

    lrwxrwxrwx. 1 root root  9 May 16 17:34 google-disk-2 -> ../../sdb
    lrwxrwxrwx. 1 root root  9 May 16 09:09 google-persistent-disk-0 -> ../../sda
    lrwxrwxrwx. 1 root root 10 May 16 09:09 google-persistent-disk-0-part1 -> ../../sda1
    lrwxrwxrwx. 1 root root 10 May 16 09:09 google-persistent-disk-0-part2 -> ../../sda2
    

    Untuk disk NVME, output-nya mirip dengan berikut ini:

    lrwxrwxrwx 1 root root 13 Jun  1 10:27 google-disk-3 -> ../../nvme0n2
    lrwxrwxrwx 1 root root 13 Jun  1 10:25 google-t2a -> ../../nvme0n1
    lrwxrwxrwx 1 root root 15 Jun  1 10:25 google-t2a-part1 -> ../../nvme0n1p1
    lrwxrwxrwx 1 root root 16 Jun  1 10:25 google-t2a-part15 -> ../../nvme0n1p15
    
  3. Tambahkan symlink ke file /etc/fstab.

    /dev/disk/by-id/google-disk-2 /data ext4 defaults 0 0
    
  4. Pastikan perangkat telah terpasang dengan benar dengan menjalankan mount -av.

    sudo mount -av

    Jika perangkat berhasil dipasang, outputnya akan mirip dengan berikut:

    /                           : ignored
    /boot/efi                : already mounted
    mount: /data does not contain SELinux labels.
    You just mounted an file system that supports labels which does
    not contain labels, onto an SELinux box. It is likely that confine
    applications will generate AVC messages and not be allowed access to this
    file system.  For more details see restorecon(8) and mount(8).
    /data                    : successfully mounted