Linux VM'ye disk ekleme

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri

Bu makalede, bakım veya yeniden boyutlandırma nedeniyle VM'niz yeniden sağlanmış olsa bile verilerinizi koruyabilmeniz için VM'nize kalıcı disk ekleme işlemi gösterilmektedir.

VM'ye yeni disk ekleme

VM'nize yeni, boş bir veri diski eklemek istiyorsanız parametresiyle --newaz vm disk attach komutunu kullanın. VM'niz bir Kullanılabilirlik Alanındaysa, disk vm ile aynı bölgede otomatik olarak oluşturulur. Daha fazla bilgi için bkz. Kullanılabilirlik Alanları genel bakış. Aşağıdaki örnek, boyutu 50 Gb olan myDataDisk adlı bir disk oluşturur:

az vm disk attach \
   -g myResourceGroup \
   --vm-name myVM \
   --name myDataDisk \
   --new \
   --size-gb 50

Daha düşük gecikme süresi

Belirli bölgelerde disk ekleme gecikme süresi azaldığından %15'e varan bir iyileştirme görürsünüz. VM'ler arasında planlanmış/planlanmamış yük devretmeleriniz varsa, iş yükünüzü ölçeklendiriyorsanız veya Azure Kubernetes Service gibi yüksek ölçekli durum bilgisi olan bir iş yükü çalıştırıyorsanız bu yararlı olur. Ancak, bu geliştirme açık disk ekleme komutuyla sınırlıdır. az vm disk attach gibi az vm updateörtük olarak ekleme gerçekleştirebilecek bir komut çağırırsanız performans iyileştirmesini görmezsiniz. Bu geliştirmeyi görmek için açık ekleme komutunu çağırmak dışında herhangi bir işlem yapmanız gerekmez.

Daha düşük gecikme süresi şu anda aşağıdakiler dışında tüm genel bölgelerde kullanılabilir:

  • Orta Kanada
  • Central US
  • Doğu ABD
  • Doğu ABD 2
  • Orta Güney ABD
  • Batı ABD 2
  • Kuzey Almanya
  • Jio Hindistan Batı
  • Kuzey Avrupa
  • West Europe

Var olan bir diski ekleme

Var olan bir diski eklemek için disk kimliğini bulun ve kimliği az vm disk attach komutuna geçirin. Aşağıdaki örnek, myResourceGroup'tamyDataDisk adlı bir diski sorgular ve ardından myVM adlı VM'ye ekler:

diskId=$(az disk show -g myResourceGroup -n myDataDisk --query 'id' -o tsv)

az vm disk attach -g myResourceGroup --vm-name myVM --name $diskId

Diski biçimlendirme ve bağlama

Linux VM'nizin kullanabilmesi için yeni diskinizi bölümlere ayırmak, biçimlendirmek ve bağlamak için SSH'yi VM'nize ekleyin. Daha fazla bilgi için bkz. Azure’da Linux ile SSH kullanma. Aşağıdaki örnek, azureuser kullanıcı adıyla genel IP adresi 10.123.123.25 olan bir VM'ye bağlanır:

ssh azureuser@10.123.123.25

Diski bulma

VM'nize bağlandıktan sonra diski bulun. Bu örnekte, diskleri listelemek için kullanıyoruz lsblk .

lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"

Çıktı aşağıdaki örneğe benzer:

sda     0:0:0:0      30G
├─sda1             29.9G /
├─sda14               4M
└─sda15             106M /boot/efi
sdb     1:0:1:0      14G
└─sdb1               14G /mnt
sdc     3:0:0:0      50G

sdc 50G olduğundan istediğimiz disk buradadır. Birden çok disk eklerseniz ve hangi diskin yalnızca boyuta bağlı olduğundan emin değilseniz portaldaki VM sayfasına gidebilir, Diskler'i seçebilir ve Veri diskleri'nin altındaki diskin LUN numarasını denetleyebilirsiniz. Portaldaki LUN numarasını çıkışın HTCL kısmının son numarası olan LUN ile karşılaştırın. Bir diğer seçenek de dizinin içeriğini listelemektir /dev/disk/azure/scsi1 :

ls -l /dev/disk/azure/scsi1

Çıktı aşağıdaki örneğe benzer olmalıdır:

lrwxrwxrwx 1 root root 12 Mar 28 19:41 lun0 -> ../../../sdc

Diski biçimlendirme

Disk boyutu iki tebibayt (TiB) veya daha büyükse, ile diski partedbiçimlendirin, 2TiB'nin altındaysa GPT bölümleme kullanmanız gerekir, o zaman MBR veya GPT bölümleme kullanabilirsiniz.

Not

Dağıtımınız için kullanılabilen en son sürümü parted kullanmanız önerilir. Disk boyutu 2 tebibayt (TiB) veya daha büyükse GPT bölümleme kullanmanız gerekir. Disk boyutu 2 TiB'nin altındaysa, MBR veya GPT bölümlediğini kullanabilirsiniz.

Aşağıdaki örnekte, ilk veri diskinin genellikle çoğu VM'de yer aldığı üzerinde kullanılır parted/dev/sdc. değerini diskiniz için doğru seçenekle değiştirin sdc . Ayrıca XFS dosya sistemini kullanarak da biçimlendiriyoruz.

sudo parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
sudo partprobe /dev/sdc
sudo mkfs.xfs /dev/sdc1

Çekirdeğin partprobe yeni bölüm ve dosya sistemiyle ilgili bilgi olduğundan emin olmak için yardımcı programını kullanın. Kullanılamaması partprobe blkid veya lsblk komutlarının yeni dosya sistemi için UUID'yi hemen döndürmemesine neden olabilir.

Diski bağlama

Şimdi kullanarak mkdirdosya sistemini bağlamak için bir dizin oluşturun. Aşağıdaki örnek konumunda /datadrivebir dizin oluşturur:

sudo mkdir /datadrive

Daha sonra dosya sistemini bağlamak için kullanın mount . Aşağıdaki örnek, bölümü /datadrive bağlama noktasına bağlar/dev/sdc1:

sudo mount /dev/sdc1 /datadrive

Bağlamayı kalıcı hale

Yeniden başlatma sonrasında sürücünün otomatik olarak yeniden bağlandığından emin olmak için dosyaya /etc/fstab eklenmesi gerekir. UUID'nin (Evrensel Benzersiz Tanımlayıcı) yalnızca cihaz adı (/dev/sdc1 gibi) yerine sürücüye başvurmak için kullanılması /etc/fstab da kesinlikle önerilir. Önyükleme sırasında işletim sistemi bir disk hatası algılarsa, UUID'nin kullanılması belirlenen konuma yanlış diskin bağlanmasını önler. Bundan sonra kalan veri diskleri aynı cihaz kimliklerine atanabilir. Yeni sürücünün UUID'sini bulmak için blkid yardımcı programını kullanın:

sudo blkid

Çıktı aşağıdaki örneğe benzer:

/dev/sda1: LABEL="cloudimg-rootfs" UUID="11111111-1b1b-1c1c-1d1d-1e1e1e1e1e1e" TYPE="ext4" PARTUUID="1a1b1c1d-11aa-1234-1a1a1a1a1a1a"
/dev/sda15: LABEL="UEFI" UUID="BCD7-96A6" TYPE="vfat" PARTUUID="1e1g1cg1h-11aa-1234-1u1u1a1a1u1u"
/dev/sdb1: UUID="22222222-2b2b-2c2c-2d2d-2e2e2e2e2e2e" TYPE="ext4" TYPE="ext4" PARTUUID="1a2b3c4d-01"
/dev/sda14: PARTUUID="2e2g2cg2h-11aa-1234-1u1u1a1a1u1u"
/dev/sdc1: UUID="33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e" TYPE="xfs" PARTLABEL="xfspart" PARTUUID="c1c2c3c4-1234-cdef-asdf3456ghjk"

Not

/etc/fstab dosyasının hatalı düzenlenmesi sonucunda önyüklemesi yapılamayan bir sistem ortaya çıkar. Emin değilseniz, bu dosyayı doğru düzenleme hakkındaki bilgiler için dağıtımın belgelerine bakın. Ayrıca, düzenlemeden önce dosyanın bir yedeğinin /etc/fstab oluşturulması önerilir.

Ardından, dosyayı bir metin düzenleyicisinde açın /etc/fstab . Önceki adımlarda oluşturulan cihazın UUID değerini /dev/sdc1 ve bağlama noktasını /datadrivekullanarak dosyanın sonuna bir satır ekleyin. Bu makaledeki örnek kullanıldığında, yeni satır aşağıdaki gibi görünür:

UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   xfs   defaults,nofail   1   2

Dosyayı düzenlemeyi bitirdiğinizde düzenleyiciyi kaydedin ve kapatın.

Alternatif olarak, aşağıdaki komutu çalıştırarak diski dosyaya /etc/fstab ekleyebilirsiniz:

echo "UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   xfs   defaults,nofail   1   2" >> /etc/fstab

Not

Daha sonra fstab'yi düzenlemeden bir veri diskinin kaldırılması VM'nin önyüklemesinin başarısız olmasına neden olabilir. Çoğu dağıtım, nofail ve/veya nobootwait fstab seçeneklerini sağlar. Bu seçenekler, disk önyükleme zamanında bağlanamadığında bile sistemin önyüklemesini sağlar. Bu parametreler hakkında daha fazla bilgi için dağıtımınızın belgelerine bakın.

Nofail seçeneği, dosya sistemi bozuk olsa veya disk önyükleme zamanında mevcut olmasa bile VM'nin başlatılmasını sağlar. Bu seçenek olmadan, FSTAB hataları nedeniyle Linux VM'ye SSH yapılamıyor başlığında açıklandığı gibi davranışla karşılaşabilirsiniz

Azure VM Seri Konsolu, fstab'yi değiştirmek bir önyükleme hatasına neden olursa VM'nize konsol erişimi için kullanılabilir. Seri Konsol belgelerinde daha fazla ayrıntı bulabilirsiniz.

Azure'da Linux için TRIM/UNMAP desteği

Bazı Linux çekirdekleri disk üzerindeki kullanılmayan blokları atmak için TRIM/UNMAP işlemlerini destekler. Bu özellik, azure'a silinen sayfaların artık geçerli olmadığını ve atılabildiğini bildirmek için öncelikli olarak yararlıdır. Bu özellik, yönetilmeyen standart diskler ve disk anlık görüntüleri gibi tüketilen depolama miktarına bağlı olarak faturalandırılan disklerde tasarruf edebilir.

Linux VM'nizde TRIM desteğini etkinleştirmenin iki yolu vardır. Her zamanki gibi önerilen yaklaşım için dağıtımınıza başvurun:

  • discard içinde /etc/fstabbağlama seçeneğini kullanın, örneğin:

    UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   xfs   defaults,discard   1   2
    
  • Bazı durumlarda bu seçeneğin discard performans üzerindeki etkileri olabilir. Alternatif olarak, komutu komut satırından fstrim el ile çalıştırabilir veya düzenli olarak çalıştırmak için crontab'ınıza ekleyebilirsiniz:

sudo apt install util-linux
sudo fstrim /datadrive

Sorun giderme

Linux VM'sine veri diskleri eklerken LUN 0'da bir disk yoksa hatalarla karşılaşabilirsiniz. Komutunu kullanarak el ile disk ekliyorsanız ve Azure platformunun az vm disk attach -new uygun LUN'yi belirlemesine izin vermek yerine bir LUN (--lun) belirtirseniz, LUN 0'da bir diskin zaten var olduğuna / var olduğuna dikkat edin.

çıkışının bir parçacığını lsscsigösteren aşağıdaki örneği göz önünde bulundurun:

[5:0:0:0]    disk    Msft     Virtual Disk     1.0   /dev/sdc 
[5:0:0:1]    disk    Msft     Virtual Disk     1.0   /dev/sdd 

İki veri diski LUN 0 ve LUN 1'de bulunur (çıkış ayrıntılarındaki lsscsi[host:channel:target:lun]ilk sütun). Her iki diske de VM'nin içinden erişilebilir olmalıdır. LUN 1'e eklenecek ilk diski ve LUN 2'deki ikinci diski el ile belirttiyseniz, diskleri VM'nizin içinden doğru şekilde göremeyebilirsiniz.

Not

Bu örneklerde Azure host değeri 5'tir, ancak bu değer seçtiğiniz depolama türüne bağlı olarak değişebilir.

Bu disk davranışı bir Azure sorunu değildir, ancak Linux çekirdeğinin SCSI belirtimlerini takip etme şeklidir. Linux çekirdeği ekli cihazlar için SCSI veri yolunu taradığında, sistemin ek cihazları taramaya devam edebilmesi için lun 0'da bir cihaz bulunmalıdır. Bu nedenle:

  • LUN 0'da bir diske sahip olduğunuzu doğrulamak için veri diski ekledikten sonra çıkışını lsscsi gözden geçirin.
  • Diskiniz VM'nizde doğru görünmüyorsa LUN 0'da bir disk olduğunu doğrulayın.

Sonraki adımlar