Aracılığıyla paylaş


Dosya sistemi hataları nedeniyle Linux sanal makinesi önyükleme sorunlarını giderme

Şunlar için geçerlidir: ✔️ Linux VM'leri

Bu makalede, dosya sistemi hatalarından kaynaklanan Linux sanal makine (VM) önyükleme sorunlarını gidermeye yönelik yönergeler sağlanır.

Belirtiler

Secure Shell Protokolü(SSH) kullanarak bir Azure Linux sanal makinesine (VM) bağlanamazsınız veya Azure portalındaki VM Aracısı durumu Hazır değildir. Azure portalında Önyükleme tanılamasını çalıştırdığınızda veya Seri Konsol'a bağlandığınızda, aşağıdaki örneklere benzer günlük girdileri görürsünüz:

Not

  • Tüm örnekler mevcut olmayacaktır.
  • Bağlama hatası her zaman vm'nin acil durum moduna girmesine neden olmaz. Sorun belirli kritik dosya sistemlerindeyse VM acil durum modunu kullanmayabilir.

Örnek 1: ext4 dosya sistemi bağlanamıyor

EXT4-fs (sda1): INFO: recovery required on readonly filesystem
EXT4-fs (sda1): write access will be enabled during recovery
EXT4-fs warning (device sda1): ext4_clear_journal_err:4531: Filesystem error recorded from previous mount: IO failure
EXT4-fs warning (device sda1): ext4_clear_journal_err:4532: Marking fs in need of filesystem check.

Örnek 2: ext Logical Volume Manager (LVM) cihazı bağlanamadı

[   14.382472] EXT4-fs error (device dm-0): ext4_iget:4398: inode #8: comm mount: bad extra_isize 4060 (inode size 256)
[   14.389648] EXT4-fs (dm-0): no journal found
<snipped>
[FAILED] Failed to mount /opt/data.

Örnek 3: xfs dosya sistemi bağlanamıyor

[    8.543984] XFS (sdc1): Metadata CRC error detected at xfs_agi_read_verify+0xd0/0xf0 [xfs], xfs_agi block 0x10
[    8.553867] XFS (sdc1): Unmount and run xfs_repair
[    8.558993] XFS (sdc1): First 128 bytes of corrupted metadata buffer:
[    8.564893] 00000000: 58 41 47 49 00 00 00 01 00 00 00 00 00 1f ff c0  XAGI............
[    8.572847] 00000010: 00 00 00 40 00 00 00 06 00 00 00 01 00 00 00 3d  ...@...........=
[    8.580476] 00000020: 00 00 00 60 ff ff ff ff ff ff ff ff ff ff ff ff  ...`............
[    8.588219] 00000030: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  ................
[    8.596280] 00000040: ff 07 f8 ff ff ff ff ff ff ff ff ff ff ff ff ff  ................
[    8.603575] 00000050: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  ................
[    8.610849] 00000060: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  ................
[    8.619261] 00000070: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  ................
[    8.629731] XFS (sdc1): metadata I/O error in "xfs_trans_read_buf_map" at daddr 0x10 len 8 error 74
[    8.637799] XFS (sdc1): xfs_imap_lookup: xfs_ialloc_read_agi() returned error -117, agno 0
[FAILED] Failed to mount /data.
See 'systemctl status data.mount' for details.
[DEPEND] Dependency failed for Local filesystems.

Örnek 4: Acil durum moduna önyükleme

You are in emergency mode. After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default" or "exit"
to boot into default mode.
Give root password for maintenance
(or press Control-D to continue):

Neden

Yukarıdaki günlük girdileri disk bozulmasını gösterir. Bazı durumlarda, disk bozulması VM'nin tamamen önyüklenmesini engeller. Linux çekirdek sorunları, sürücü hataları, temel alınan fiziksel veya sanal donanımdaki hatalar gibi çeşitli sorunlar disk bozulmasına neden olabilir.

Çözüm

Dosya sistemi hatalarının neden olduğu Linux VM önyükleme sorunlarını çözmek için, disk bozulmasını onararak VM'yi kurtarın. Disk bozulmasını onarmak için şu adımları izleyin:

  1. Hangi diskin bozuk olduğunu belirleyin.

  2. Dosya sistemi türünü tanımlayın.

  3. Kurtarma modunu (çevrimiçi veya çevrimdışı) seçin.

  4. Kurtarma ortamını seçtiğiniz kurtarma moduna göre hazırlayın:

  5. Disk üzerindeki sorunlu dosya sistemini onarmak için komut satırı araçlarını kullanın.

    Not

    • Kurtarılan diskte veri kaybı olabileceğinden kritik verileri yedeklemek önemlidir.
    • Diskte değişiklik yapmadan önce, diskin geçerli durumunu (hata durumunda olsa bile) korumak için bir anlık görüntü alın. Disk bozulmasını düzeltmek disk üzerindeki verileri değiştirir ve bu da risk taşır.

Hangi diskin bozuk olduğunu belirleme

Hangi diskin bozuk olduğunu belirlemek için Seri Konsol veya Önyükleme tanılamasını kullanarak VM'nizin seri günlüğünü indirin, önyükleme sırasında günlük girdilerini inceleyin ve hangi diskin veya bağlamanın başarısız olduğunu çağıran belirli bir hatayı arayın.

Burada üç günlük girişi örneği verilmiştir. Bu örneklerde bozuk cihazı bildiren parantez içindeki metni not edin.

Aşağıdaki örnekte, bozuk cihaz şöyledir sdc1:

[   14.285807] XFS (sdc1): Mounting V5 Filesystem
[   14.426283] XFS (sdc1): Metadata CRC error detected at xfs_agi_read_verify+0xde/0x100 [xfs], xfs_agi block 0x10
[   14.426284] XFS (sdc1): Unmount and run xfs_repair
<snipped>
[FAILED] Failed to mount /opt/parent.

Aşağıdaki örnekte, bir dosya sistemi hatasının oluştuğu bölüm şöyledir sda1:

EXT4-fs (sda1): INFO: recovery required on readonly filesystem
EXT4-fs (sda1): write access will be enabled during recovery
EXT4-fs warning (device sda1): ext4_clear_journal_err:4531: Filesystem error recorded from previous mount: IO failure
EXT4-fs warning (device sda1): ext4_clear_journal_err:4532: Marking fs in need of filesystem check.
<snipped>
[FAILED] Failed to mount /boot.

Aşağıdaki örnekte, bozuk cihaz şeklindedir dm-2. LvM birimini gösteren bir Linux Cihaz Eşleyici cihazıdır.

[   18.014318] EXT4-fs (dm-2): VFS: Can't find ext4 filesystem
[FAILED] Failed to mount /home.
See 'systemctl status home.mount' for details.
[DEPEND] Dependency failed for Local File Systems.
[DEPEND] Dependency failed for Mark the need to relabel after reboot.

Çağrılan disk cihazı "sdXN" biçiminin adını kullanıyorsa; burada X a-z harfi, N ise isteğe bağlı bir bölüm numarasıdır, diskin ham olduğu ve /dev/sdXN yolu kullanılarak çalıştırılabilir olduğu anlamına gelir.

Bağlanan disk cihazı /dev/mapper/vgname/lvname, /dev/vgname/lvname veya dm-N gibi bir ad kullanıyorsa, lvM cihazının kullanıldığı anlamına gelir. Kullanımda olabilecek tüm disk fiziksel birimlerini (PV) tanımaya dikkat edin.

LVM birim grubunun (VG) işletim sistemi diskini ve herhangi bir sayıda veri diskini içermesi desteklenmez. Böyle bir senaryoda veri kaybı riski yüksek olur. Bununla birlikte, LVM VG'de birden çok veri disklerine izin verilebilir.

İşletim sistemi disk başvurularının Azure disk nesnelerine eşlenmesi belirlenirken:

  • Market görüntüleri için kök dosya sistemi (/), /boot ve /boot/efi işletim sistemi diskinde bulunur.
  • LVM tabanlı görüntüler için, /home, /tmp, /usr, /var, /var/log ve /opt gibi diğer birçok sistem bağlaması olabilir.
  • Uygulamalar için oluşturulan ek dosya sistemleri, /data, /datadisk veya /sap gibi veri disklerinde bulunur. Hata olsa bile sistemin önyüklemesi için bunları düzgün yapılandırın. Veri diski acil durum modunda önyükleyen bir cihazsa bkz . Önyükleme hatasını önleme.

Dosya sistemi türünü tanımlama

İlk tanımlama yapılırken, disk türünü belirlemenin tek yöntemi, hangi diskin bozuk olduğunu belirleme bölümünde daha önce incelendiği gibi seri günlüğü kullanmaktır. Disk cihazı seri günlükte bildirildiğinde, dosya sistemi için Linux çekirdek modülünden hatalar görüntülenir. veya EXT4-fs belirtildiği her satırı XFS not edin. Diğer tüm dosya sistemi türleri için günlük aynı alandadır. Günlük girdilerinde belirtilen dosya sistemi /etc/fstab dosyası tarafından belirlenir. Onarım gerçekleştirirken belirtilen biçimin doğru olduğunu doğrulamaya dikkat edin.

Etkileşimli bir kabuğa erişiminiz olduğunda, cihazları, yolları (dosya sistemi bağlıysa) ve diskin kendisinden okunan dosya sistemi türünü göstermek için komutunu aşağıdaki bayrakla lsblk çalıştırın-f.

[root@localhost ~]# lsblk -f
NAME              FSTYPE      LABEL UUID                                   MOUNTPOINT
sda
|-sda1            vfat              93DA-8C20                              /boot/efi
|-sda2            xfs               d5da486e-fdfe-4ad8-bc01-aa72b91fd47d   /boot
|-sda3
`-sda4            LVM2_member       pdSI2Q-ZEzV-oT6P-R2JG-ZW3h-cmnf-iRN6pU
  |-rootvg-tmplv  xfs               9098eb05-0176-4997-8132-9152a7bef207   /tmp
  |-rootvg-usrlv  xfs               2f9ff36c-742d-4914-b463-d4152801b95d   /usr
  |-rootvg-optlv  xfs               aeacea8e-3663-4569-af25-c52357f8a0a3   /opt
  |-rootvg-homelv xfs               a79e43dc-7adc-41b4-b6e1-4e6b033b15c0
  |-rootvg-varlv  xfs               c7cb68e9-7865-4187-b3bd-e9a869779d86   /var
  `-rootvg-rootlv xfs               d8dc4d62-ada5-4952-a0d9-1bce6cb6f809   /
sdb
`-sdb1            ext4              1dac7c4c-bf8e-4964-8a59-7359eef53d0a   /mnt
sdc               LVM2_member       CRWEZQ-iLhH-ev0b-BAaA-dfLD-nbPT-GgtG0r
`-vgapp-lvapp     xfs               733e25ee-565f-4bfa-a2a1-2451efd25cd1
sdd
`-sdd1            ext4              704d9fb1-2207-4bb9-998c-029f776dc6d2   /opt/data

Çıktıdaki bazı önemli noktalar şunlardır:

  • ASCII resim görüntüsünü kullanarak, ve rootvg-rootlvgibi rootvg-homelv adlara sahip nesneler içeren sda4 için bir LVM2_MEMBER FSTYPE olduğundan LVM birimlerinin mevcut olduğunu görebilirsiniz.
  • rootvg-homelv bağlı değildir; bu, boş MOUNTPOINT alanı tarafından gösterilir.
  • rootvg-homelv XFS dosya sistemi türüne sahiptir. Önyükleme sırasında EXT4 bağlama hatasıyla karşıttır. Dosya sistemi türü tutarsızsa, fstab içeriği yerine çıkışa güvenin lsblk .

Kurtarma modunu seçme

Kurtarma VM'lerini kullanarak bir VM'i acil durum modu veya tek kullanıcı modu aracılığıyla çevrimiçi olarak veya çevrimdışı olarak kurtarabilirsiniz.

Çevrimiçi kurtarma gereksinimleri

  • VM'ye Seri Konsol erişimi.

  • Acil durum modu kullanılıyorsa, Seri Konsol'un acil durum modu istemi görüntülemesi, kök hesabın kilidinin açılması ve parolanın bilinmesi gerekir.

  • Tek kullanıcı modu kullanılıyorsa, kök parola gerekli değildir. Tek kullanıcı modu, kök (/) /usr veya bozuk gibi gerekli sistem bölümleri dışında bir dosya sistemi kullanıldığında kullanılabilir.

Çevrimdışı kurtarma gereksinimleri

Çevrimiçi kurtarma için Seri Konsol gereksinimleri karşılanamıyorsa kurtarma VM'sini kullanarak çevrimdışı kurtarma gerçekleştirin. Çevrimdışı kurtarma gerçekleştirmek için Azure'da vm oluşturma ve diskleri yönetme özelliği gereklidir. Alternatif olarak, bozuk disklere Azure düzeyinde erişime sahip, çalışır durumda bir Linux VM kullanabilirsiniz.

Ortamı çevrimiçi kurtarma için hazırlama

Oturum açma isteminde acil durum modu aşağıdaki gibi görüntülendiğinde kök parolayı girin:

Welcome to emergency mode! After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default" or ^D to
try again to Give root password for maintenance
(or press Control-D to continue):

Aşağıdaki çıkışta olduğu gibi kök parola bilinmiyorsa veya kök hesap kilitliyse tek kullanıcı modunu kullanın:

Welcome to emergency mode! After logging in, typ
Cannot open access to console, the root account is locked.
See sulogin(8) man page for more details.

Press Enter to continue.

Çevrimiçi kurtarma ortamı kullanılamıyorsa çevrimdışı kurtarma işlemine geçin.

Ortamı çevrimdışı kurtarma için hazırlama

Tek diskli VM'lerde veya başarısız olan bağlama kök dosya sistemi (/) veya /usrgibi bir sistem bölümü olduğunda diski onarmak için en güvenilir yöntem, diske erişim elde etmek için kurtarma VM'sini kullanmaktır. Kurtarma VM'lerini otomatik olarak veya el ile oluşturabilirsiniz.

Kurtarma VM'sinin otomatik olarak oluşturulması için bkz . Azure Sanal Makine Onarımı. Kurtarma VM'sinin el ile oluşturulması için bkz . Kurtarma VM'sini oluşturma. Her iki durumda da, onarım yardımcı programlarının çalışması için bir dosya sisteminin bağlanmaması gerektiğinden, sorun diskinden birimleri bağlamayın.

Dosya sistemi onarımı gerçekleştirme

Dosya sistemini onarmadan önce aşağıdaki adımların tamamlandığından emin olun:

  • Sorunlu disk ve bölüm veya LVM birim yapısı belirlendi.
  • Dosya sistemi türü belirlendi.
  • (İsteğe bağlı) Sorunlu diskin veya dağıtılmış LVM birim grubundaki disklerin bir kopyası kurtarma VM'sine eklenmiş.
  • Etkileşimli bir kabuğa erişim, diske erişim kullanılarak güvenli hale getirilmiştir.

Dosya sistemi onarımını gerçekleştirmek için ext4 dosya sistemini onar veya Dosya sistemi türüne göre XFS dosya sistemini onar'a gidin.

Hangi kurtarma modu kullanılırsa kullansın, dosya sistemi onarımını gerçekleştirme komutları aynıdır. Acil durum kabuğunun sınırlamaları olabilir. Komutlar acil durum modu ortamında kullanılamıyorsa veya bilinmeyen dosya sistemi türleriyle ilgili hatalar varsa, ortamı çevrimdışı kurtarma için hazırlayın.

Dosya sistemini onarma komutları tüm hataları düzeltmeyebilir. Bunlar disk bozulmalarına geçici bir çözüm olarak çalışır, ancak yine de veri kaybı oluşabilir. Komut çıktısı dosya sisteminin temiz olduğunu belirttiğinde, onarılan diskle özgün VM'yi yeniden birleştirin ve verileri doğrulamak için VM'yi önyükleyin.

Aşağıdaki bölümlerde ham /dev/sdc1 modda bozuk dosya sistemi, VG'deki homelv LV rootvg ise LVM birimidir. Tüm örneklerde bozuk gerçek dosya sistemi için bu değerleri kullanın.

ext4 dosya sistemini onarma

fsck [-y] FILESYSTEM ext4 dosya sistemini onarmak için komutunu kullanın. Dosya sistemini bir ham dosya sistemi için disk bölümü olarak belirtin, örneğin /dev/sdc1, veya LVM mantıksal birim yolu /dev/rootvg/homelv.

Aşağıda bir komut çıktı örneği verilmişti:

[root@vm1dev ~]# fsck /dev/sdc1
fsck from util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
ext2fs_check_desc: Corrupt group descriptor: bad block for block bitmap
fsck.ext4: Group descriptors look bad... trying backup blocks...
/dev/sdc1 was not cleanly unmounted, check forced.
Resize inode not valid.  Recreate<y>? yes
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong for group #0 (23508, counted=23509).
Fix<y>? yes
Free blocks count wrong (8211645, counted=8211646).
Fix<y>? yes

/dev/sdc1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdc1: 11/2097152 files (0.0% non-contiguous), 176706/8388352 blocks
[root@vm1dev ~]#

Çıktı, dosya sistemini değiştirme onayının üç kez istendiğini gösterir. Çok fazla istek varsa, CTRL+C tuşlarına basın ve tüm sorulara "evet" varsaymak için bayrağıyla fsck yeniden başlatın-y. herhangi bir dosya içine lost+foundyerleştirildiği bildirilirse, bunları el ile tanımlayın ve uygun konumlara yerleştirin.

Bazı hatalar oluşursa ve daha sonra düzeltilirse komutunu yeniden çalıştırın fsck . Komut durumla birlikte çıkana fsck kadar bu işlemi clean yineleyin. Örnek olarak aşağıdaki çıktıya bakın:

[root@vm1dev ~]# fsck /dev/sdc1
fsck from util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
/dev/sdc1: clean, 11/2097152 files, 176706/8388352 blocks
[root@vm1dev ~]#

xfs dosya sistemini onarma

XFS dosya sistemini onarmaya yönelik komutlar şunlardır:

  • xfs_repair [-n] FILESYSTEM
  • xfs_repair [-L] FILESYSTEM
  • mount FILESYSTEM MOUNTPOINT

XFS dosya sistemini onarmak için şu adımları izleyin:

  1. komutunu kullanarak xfs_repair -n dosya sistemi hatalarını aşağıdaki gibi denetleyin:

    xfs_repair -n /dev/rootvg/homelv
    
  2. Denetim başarılı olursa, aşağıdaki gibi karşılaşılan hataları düzeltmeye çalışacak bayrağını kaldırarak -n onarım moduna geçin:

    xfs_repair /dev/rootvg/homelv
    

XFS dosya sistemleri için, günlüğe kaydedilen ancak kaydedilmemiş değişiklikler dosya sistemi bağlanarak ele alınır. Sorun giderme sırasında aşağıdaki hatayla karşılaşırsanız bağlamayı deneyin ve sonuçları görüntüleyin.

HATA: Dosya sistemi, yeniden oynatılması gereken bir günlükte değerli meta veri değişikliklerine sahip

Kurtarma VM'si kullanılıyorsa, gibi /recoverygeçici bir bağlama noktası için bir dizin oluşturun ve dosya sistemini bağlayın. Kurtarma ortamı acil durumdaysa veya tek kullanıcılı moddaysa, dosya sistemini hedeflenen konumuna bağlayın. Örnek olarak aşağıdaki komutlara bakın:

mount /dev/rootvg/homelv /recovery

veya

mount /home

Dosya sistemlerini bağladığınızda günlüğe kaydedilen değişiklikler yazmıyorsa, günlüğü atmak ve tüm değişiklikler başarıyla tamamlanmış gibi dosya sistemini bağlamak için bayrağını kullanın -L .

xfs_repair -L /dev/rootvg/homelv /recovery

Dikkat

"-L bayrağı, xfs_repair işlem günlüğü defterindeki girişleri temizlemeye zorlar ve bu da genellikle veri kaybına neden olur."

Önyükleme hatasını önleme

nofail Dosya sistemleri bağlanırken seçeneği belirtilirse, kritik olmayan bir dosya sisteminin bozulması Linux'un tam olarak önyüklenmesini engellemeyebilir. hakkında nofaildaha fazla bilgi için bkz . Diski bağlama. Çoğu kök (/ ) /usrdışında bağlar ve /var ile nofailyapılabilir.

Yardım için bize ulaşın

Sorularınız veya yardıma ihtiyacınız varsa bir destek isteği oluşturun veya Azure topluluk desteği isteyin. Ürün geri bildirimini Azure geri bildirim topluluğuna da gönderebilirsiniz.