Linux sanal makinesinde sanal sabit diskleri genişletme

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

Bu makale, Linux sanal makinesi (VM) için genişleyen işletim sistemi (işletim sistemi) disklerini ve veri disklerini kapsar. Daha fazla depolama alanı sağlamak için veri diskleri ekleyebilir ve var olan bir veri disklerini de genişletebilirsiniz. İşletim sistemi için varsayılan sanal sabit disk boyutu, Azure'daki bir Linux VM'de genellikle 30 GB'tır. Bu makale, işletim sistemi disklerini veya veri disklerini genişletmeyi kapsar.

İşletim sistemi diskinin kapasitesi en fazla 4.095 GiB'dir. Ancak, birçok işletim sistemi varsayılan olarak ana önyükleme kaydı (MBR) ile bölümlenir. MBR, kullanılabilir boyutu 2 TiB ile sınırlar. 2 TiB'den fazlasına ihtiyacınız varsa, veri depolama için veri diskleri eklemeyi göz önünde bulundurun. İşletim sistemi diskinde veri depolamanız ve fazladan alan gerektirmeniz gerekiyorsa, bunu GUID Bölümleme Tablosuna (GPT) dönüştürün.

Uyarı

Dosya sisteminizin iyi durumda olduğundan ve disk bölümleme tablo türünüzün (GPT veya MBR) yeni boyutu destekleyebildiğinden emin olun. Disk genişletme işlemleri gerçekleştirmeden önce verilerinizi yedekleyin. Daha fazla bilgi için Azure Backup hızlı başlangıcı bölümüne bakın.

İşletim sistemi içindeki bir Azure veri diski nesnesini tanımlama

VM'de birkaç veri diski bulunan bir veri diskini genişlettiğiniz zaman, Azure mantıksal birim numaralarını (LUN) Linux cihazlarıyla ilişkilendirmek zor olabilir. İşletim sistemi diskinin genişletilmesi gerekiyorsa, Azure portalında işletim sistemi diski olarak açıkça etiketlenir.

komutuyla disk kullanımı, bağlama noktası ve cihaz arasındaki ilişkiyi df belirleyerek başlayın.

df -Th
Filesystem                Type      Size  Used Avail Use% Mounted on
/dev/sda1                 xfs        97G  1.8G   95G   2% /
<truncated>
/dev/sdd1                 ext4       32G   30G  727M  98% /opt/db/data
/dev/sde1                 ext4       32G   49M   30G   1% /opt/db/log

Burada, örneğin dosya sisteminin neredeyse dolu olduğunu ve /opt/db/data dosya sisteminin /dev/sdd1 bölümünde bulunduğunu görebilirsiniz. df çıktısı, diskin cihaz yolu veya fstab'da (tercih edilen) UUID kullanılarak bağlanıp bağlanmadığını, cihaz yolunu göstererek ortaya koyar. Dosya sistemi biçimini gösteren Tür sütununa dikkat edin. Biçim daha sonra önemlidir.

Şimdi /dev/sdd ile ilişkili olan LUN'u bulmak için /dev/disk/azure/scsi1 içeriğini inceleyin. Aşağıdaki ls komutunun çıktısı, Azure portalına baktığınızda Linux işletim sistemi içinde /dev/sdd olarak bilinen cihazın LUN1 konumunda bulunduğunu gösterir.

sudo ls -alF /dev/disk/azure/scsi1/
total 0
drwxr-xr-x. 2 root root 140 Sep  9 21:54 ./
drwxr-xr-x. 4 root root  80 Sep  9 21:48 ../
lrwxrwxrwx. 1 root root  12 Sep  9 21:48 lun0 -> ../../../sdc
lrwxrwxrwx. 1 root root  12 Sep  9 21:48 lun1 -> ../../../sdd
lrwxrwxrwx. 1 root root  13 Sep  9 21:48 lun1-part1 -> ../../../sdd1
lrwxrwxrwx. 1 root root  12 Sep  9 21:54 lun2 -> ../../../sde
lrwxrwxrwx. 1 root root  13 Sep  9 21:54 lun2-part1 -> ../../../sde1

Azure yönetilen diskini genişletme

Kesinti yaşamadan genişleme

VM'nizi başka bir yere aktarmadan yönetilen disklerinizi genişletebilirsiniz. Diskinizin ana bilgisayar önbelleği ayarı, VM'nizi serbest bırakmadan bir veri diskini genişletip genişletemeyeceğinizi etkilemez.

Bu özellik aşağıdaki sınırlamalara sahiptir.

Önemli

Bu sınırlama Premium SSD v2 veya Ultra Diskler için geçerli değildir.

Standart HDD, Standart SSD veya Premium SSD 4 TiB veya daha azsa, VM'nizi serbest bırakabilirsiniz ve diski 4 TiB'nin ötesine genişletmeden önce ayırabilirsiniz. Bu disk türlerinden biri zaten 4 TiB'den büyükse, VM'yi serbest bırakmadan ve diski ayırmadan genişletebilirsiniz.

  • Yalnızca veri diskleri için desteklenir.
  • Paylaşılan diskler için desteklenmez.
  • Yüklenmesi ve aşağıdaki seçeneklerden birini kullanması gerekir:
  • Bazı klasik VM'lerde kullanılamaz. Kapalı kalma süresi olmadan genişletmeyi destekleyen klasik VM ürünlerinin listesini almak için bu betiği kullanın.

Ultra Diskler ve Premium SSD v2 ile genişletme

Kapalı kalma süresi olmadan Ultra Diskler ve Premium SSD v2 disklerinin genişletilmesi aşağıdaki ek sınırlamalara sahiptir:

Değişikliği yapmak için Azure Portal, Azure CLI veya Azure PowerShell modülünü kullanarak bu disk türlerinden birini destekleyen tüm bölgelerde kapalı kalma süresi olmadan NVMe denetleyicilerini kullanarak VM'lere bağlı Ultra Diskleri ve Premium SSD v2 disklerini genişletebilirsiniz.

Doğru boyutun Windows VM'lerine ve Linux VM'lerine yansıtılması için 10 dakikaya kadar izin verin. Linux VM'leri için bir Linux yeniden tarama işlevi gerçekleştirmeniz gerekir. İş yükü olmayan bir Windows VM için bir Windows yeniden tarama işlevi gerçekleştirmeniz gerekir. Hemen yeniden tarayabilirsiniz, ancak süre 10 dakika içindeyse, doğru boyutu görüntülemek için yeniden tarama yapmanız gerekebilir. Yeniden tarama düzgün çalışmazsa, yeniden taramayı yineleyebilir veya vm'yi yeniden başlatarak doğru boyutu görüntüleyebilirsiniz.

Azure yönetilen diski genişletme

En son Azure CLI'yi yüklediğinizden ve az login kullanarak bir Azure hesabında oturum açtığınızdan emin olun.

Bu makale, Azure'da en az bir veri diski takılı ve hazırlanmış bir VM gerektirir. Kullanabileceğiniz bir VM'niz yoksa bkz . Veri diskleriyle VM oluşturma ve hazırlama.

Aşağıdaki örneklerde myResourceGroup ve myVM gibi yer tutucu parametre adlarını kendi değerlerinizle değiştirin.

Önemli

Diskiniz Kapalı kalma süresi olmadan genişletme'deki gereksinimleri karşılıyorsa 1. ve 3. adımları atlayabilirsiniz.

Mevcut diski küçültme desteklenmez ve veri kaybına neden olabilir.

Diskleri genişletdikten sonra, daha büyük disklerden yararlanmak için işletim sistemindeki birimi genişletin.

  1. Sanal sabit disklerdeki işlemler VM çalışırken gerçekleştirilemez. az vm deallocate komutunu kullanarak sanal makinenizi serbest bırakın. Aşağıdaki örnekte myResourceGroup adlı kaynak grubunda myVM adlı VM serbest bırakılır:

    az vm deallocate --resource-group myResourceGroup --name myVM
    

    Sanal sabit diski genişletmek için VM'nin serbest bırakılması gerekir. VM'nin durdurulması az vm stop işlem kaynaklarını serbest bırakmaz. İşlem kaynaklarını serbest bırakmak için kullanın az vm deallocate.

  2. Bir kaynak grubundaki yönetilen disklerin listesini az disk list ile görüntüleyin. Aşağıdaki örnekte , myResourceGroup adlı kaynak grubundaki yönetilen disklerin listesi gösterilmektedir:

    az disk list \
        --resource-group myResourceGroup  \
        --query '[*].{Name:name,size:diskSizeGB,Tier:sku.tier}' \
        --output table
    

    Gerekli diski az disk update ile genişletin. Aşağıdaki örnek, myDataDisk adlı yönetilen diski 200 GB'a genişletir:

    az disk update \
        --resource-group myResourceGroup \
        --name myDataDisk \
        --size-gb 200
    

    Yönetilen diski genişlettiğiniz zaman, güncelleştirilmiş boyut en yakın yönetilen disk boyutuna yuvarlanmış olur.

  3. az vm start ile VM'nizi başlatın. Aşağıdaki örnek myResourceGroup adlı kaynak grubunda myVM adlı VM'yi başlatır:

    az vm start --resource-group myResourceGroup --name myVM
    

Disk bölümünü ve dosya sistemini genişletme

Bölüm yeniden boyutlandırma gerçekleştirmek için birçok araç kullanabilirsiniz. Bu makalenin geri kalanında ayrıntılı olarak sunulan araçlar, cloud-init gibi belirli otomatik işlemlerin kullandığı araçlarla aynıdır. Burada açıklandığı gibi, growpart aracı gdisk paketiyle GPT diskleriyle evrensel uyumluluk sağlar çünkü fdisk gibi bazı araçların eski sürümleri GPT'yi desteklemezdi.

Değiştirilen disk boyutunu algılama

Veri diskini kapalı kalma süresi olmadan genişletmek için daha önce bahsedilen yordamı kullandıysanız, bildirilen disk boyutu cihaz yeniden taranana kadar değişmez. Yeniden tarama normalde yalnızca önyükleme işlemi sırasında gerçekleşir. Bu yeniden taramayı isteğe bağlı olarak çağırmak için aşağıdaki yordamı kullanın. Bu makaledeki yöntemleri kullandığınızda, bu örnekte veri diskinin şu anda /dev/sda olduğuna ve 256 GiB'den 512 GiB'ye yeniden boyutlandırıldığına dikkat edin.

  1. fdisk -l /dev/sda çıktısının ilk satırında şu anda tanınan boyutu belirleyin.

    sudo fdisk -l /dev/sda
    
    Disk /dev/sda: 256 GiB, 274877906944 bytes, 536870912 sectors
    Disk model: Virtual Disk
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: dos
    Disk identifier: 0x43d10aad
    
    Device     Boot Start       End   Sectors  Size Id Type
    /dev/sda1        2048 536870878 536868831  256G 83 Linux
    
  2. Bu cihaz için yeniden tarama dosyasına bir 1 karakter ekleyin. Örnekteki sda referansını not edin. Farklı bir disk cihazı yeniden boyutlandırılırsa disk tanımlayıcısı değişir.

    echo 1 | sudo tee /sys/class/block/sda/device/rescan
    
  3. Yeni disk boyutunun artık tanındığını doğrulayın.

    sudo fdisk -l /dev/sda
    
    Disk /dev/sda: 512 GiB, 549755813888 bytes, 1073741824 sectors
    Disk model: Virtual Disk
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: dos
    Disk identifier: 0x43d10aad
    
    Device     Boot Start       End   Sectors  Size Id Type
    /dev/sda1        2048 536870878 536868831  256G 83 Linux
    

Bu makalenin geri kalanında, işletim sistemi düzeyinde bir birimin boyutunu artırmak için yordam örnekleri için işletim sistemi diski kullanılır. Genişletilmiş disk bir veri diskiyse, veri diski cihazını tanımlamak için önceki kılavuzu kullanın. Kılavuz olarak bu yönergeleri izleyin. Veri diski cihazını (örneğin, /dev/sda), bölüm numaralarını, birim adlarını, bağlama noktalarını ve dosya sistemi biçimlerini gerektiği gibi değiştirin.

Tüm Linux işletim sistemi kılavuzlarını genel olarak herhangi bir dağıtımda geçerli olabilecek şekilde düşünün; ancak genellikle adlandırılmış pazar yeri yayıncısının kurallarıyla uyum sağlar. Red Hat'i temel alan veya Red Hat uyumluluğu talep eden herhangi bir dağıtıma ilişkin paket gereksinimleri için Red Hat belgelerine bakın.

İşletim sistemi diskinin boyutunu artırma

Aşağıdaki yönergeler desteklenen Linux dağıtımları için geçerlidir.

Devam etmeden önce VM'nizin tam yedek kopyasını oluşturun veya en azından işletim sistemi diskinizin anlık görüntüsünü alın.

Ubuntu 16.x ve daha yeni sürümlerde işletim sistemi diskinin ve dosya sistemlerinin kök bölümü, cloud-init tarafından kök diskteki tüm boş bitişik alanı kullanacak şekilde otomatik olarak genişletilir. Yeniden boyutlandırma işlemi için az miktarda boş alan bulunmalıdır. Bu durumda, sıra şu şekildedir:

  1. daha önce açıklandığı gibi işletim sistemi diskinin boyutunu artırın.
  2. VM'yi yeniden başlatın ve root kullanıcı hesabını kullanarak VM'ye erişin.
  3. İşletim sistemi diskinin artık daha yüksek bir dosya sistemi boyutu görüntülediğini doğrulayın.

Aşağıdaki örnekte gösterildiği gibi, işletim sistemi diski portaldan 100 GB'a yeniden boyutlandırıldı. /dev/sda1 üzerine bağlı / dosya sistemi artık 97 GB gösteriyor.

df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  314M     0  314M   0% /dev
tmpfs          tmpfs      65M  2.3M   63M   4% /run
/dev/sda1      ext4       97G  1.8G   95G   2% /
tmpfs          tmpfs     324M     0  324M   0% /dev/shm
tmpfs          tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs          tmpfs     324M     0  324M   0% /sys/fs/cgroup
/dev/sda15     vfat      105M  3.6M  101M   4% /boot/efi
/dev/sdb1      ext4       20G   44M   19G   1% /mnt
tmpfs          tmpfs      65M     0   65M   0% /run/user/1000
user@ubuntu:~#

Kapalı kalma süresi olmadan Klasik VM SKU'sunu genişletin

Klasik VM SKU'su kullanıyorsanız, disklerin kesinti olmadan genişletilmesi desteklenmeyebilir.

Hangi VM SKU'larıyla kullanılabilir olduğunu belirlemek için aşağıdaki PowerShell betiğini kullanın:

Connect-AzAccount
$subscriptionId="yourSubID"
$location="desiredRegion"
Set-AzContext -Subscription $subscriptionId
$vmSizes=Get-AzComputeResourceSku -Location $location | where{$_.ResourceType -eq 'virtualMachines'}

foreach($vmSize in $vmSizes){
    foreach($capability in $vmSize.Capabilities)
    {
       if(($capability.Name -eq "EphemeralOSDiskSupported" -and $capability.Value -eq "True") -or ($capability.Name -eq "PremiumIO" -and $capability.Value -eq "True") -or ($capability.Name -eq "HyperVGenerations" -and $capability.Value -match "V2"))
        {
            $vmSize.Name
       }
   }
}