• Fsck'te bir dosya sistemi nasıl geri yüklenir? Linux'ta FS'yi kontrol etme ve silinen dosyaları kurtarma

    Çeşitli sorunlar veya beklenmedik bir bilgisayar kapanması nedeniyle dosya sistemi zarar görebilir. Normal bir kapatma sırasında, tüm dosya sistemleri salt okunur olarak bağlanır ve kaydedilmemiş tüm veriler diske yazılır.

    Ancak güç beklenmedik bir şekilde kapatılırsa bazı veriler kaybolur ve önemli veriler kaybolabilir, bu da cihazın zarar görmesine neden olabilir. dosya sistemi. Bu yazıda birçok popüler dosya sistemi için fsck dosya sisteminin nasıl kurtarılacağına bakacağız ve ayrıca ext4 kurtarmanın nasıl çalıştığından bahsedeceğiz.

    Bildiğiniz gibi dosya sistemi bilgisayarda saklanan tüm dosyalara ilişkin tüm bilgileri içerir. Bu, dosya verilerinin kendisi ve dosya sistemindeki dosyaların konumunu ve niteliklerini kontrol eden meta verilerdir. Daha önce de söylediğim gibi, veriler hemen yazılmıyor. Sabit disk ve bir süredir buradayız rasgele erişim belleği ve belirli koşullar nedeniyle beklenmeyen bir kapanma durumunda dosya sistemi zarar görebilir.

    Modern dosya sistemleri günlüklü ve günlüksüz olmak üzere iki türe ayrılır. Günlüklü dosya sistemleri gerçekleştirilmek üzere olan tüm eylemleri günlüğe kaydeder ve yürütüldükten sonra bu kayıtları siler. Bu, dosya sisteminin hasar görüp görmediğini çok hızlı bir şekilde anlamanızı sağlar. Ancak iyileşmeye pek faydası olmuyor. Bir Linux dosya sistemini kurtarmak için dosya sisteminin her bloğunu kontrol etmeniz ve bozuk sektörleri bulmanız gerekir.

    Fsck yardımcı programı bu amaçlar için kullanılır. Esasen, bu, yalnızca belirli bir dosya sistemiyle çalışmaya odaklanan diğer yardımcı programlar için bir kabuktur; örneğin, yağ için bir yardımcı program ve ext4 için tamamen farklı bir yardımcı program vardır.

    Çoğu sistemde, fsck kontrolü kök bölüm için otomatik olarak çalışır, ancak bu diğer bölümler için geçerli değildir ve kontrolü devre dışı bıraktıysanız da çalışmaz.

    fsck'in temelleri

    Bu yazımızda fsck ile manuel çalışmaya bakacağız. Kök bölümün hasar görmesi durumunda yardımcı programı çalıştırmak için bir LiveCD'ye ihtiyacınız olabilir. Değilse, sistem kurtarma moduna geçebilecek ve yardımcı programı buradan kullanabileceksiniz. Fsck'i önceden başlatılmış bir sistemde de çalıştırabilirsiniz. Yalnızca iş süper kullanıcı haklarını gerektirir, bu yüzden bunu sudo aracılığıyla yapın.

    Şimdi yardımcı programın kendisinin sözdizimine bakalım:

    $fsck [seçenekler] [dosya sistemi_seçenekleri][disk_bölümü]

    Temel seçenekler fsck kabuk yardımcı programının nasıl davranacağını belirtir. Disk bölümü, /dev dizinindeki bir bölüm aygıtı dosyasıdır; örneğin /dev/sda1 veya /dev/sda2. Dosya sistemi seçenekleri her bir tarama yardımcı programına özeldir.

    Şimdi en çok bakalım kullanışlı seçenekler fsck:

    • -ben- bunun için başka bir fsck örneği çalıştırmayın sabit disk mevcut olanın çalışması bitene kadar. SSD için parametre göz ardı edilir;
    • -T- taranması gereken dosya sistemi türlerini ayarlayın. Aygıtı belirtmenize gerek yoktur; yalnızca belirterek birkaç bölümü tek komutla kontrol edebilirsiniz. istenilen tip dosya sistemi. Bu, dosya sisteminin kendisi (örneğin ext4) veya opts=ro biçimindeki seçenekleri olabilir. Yardımcı program fstab'a monte edilmiş tüm dosya sistemlerini tarar. Ayrıca bir bölüm belirtirseniz, otomatik algılama olmadan, belirtilen türde bir kontrol ona uygulanacaktır;
    • -A- /etc/fstab'dan tüm dosya sistemlerini kontrol edin. Öncelik de dahil olmak üzere /etc/fstab dosyasında belirtilen dosya sistemi tarama parametrelerinin uygulandığı yer burasıdır. Öncelikle kök kontrol edilir. Genellikle sistem başlangıcında kullanılır;
    • -C- dosya sistemi kontrolünün ilerlemesini gösterin;
    • -M- dosya sisteminin takılı olup olmadığını kontrol etmeyin;
    • -N- hiçbir şey yapmayın, kontrolün başarıyla tamamlandığını gösterin;
    • -R- kök dosya sistemini kontrol etmeyin;
    • -T- yardımcı programla ilgili bilgileri gösterme;
    • -V- en ayrıntılı çıktı.

    Bunlar küresel fayda seçenekleriydi. Şimdi dosya sistemiyle çalışma seçeneklerine bakalım, bunlardan daha azı var, ancak daha ilginç olacaklar:

    • -A- Kontrol sırasında tespit edilen tüm hataları soru sormadan düzeltin. Bu seçenek eskidir ve önerilmez;
    • -N- yalnızca dosya sistemi kontrolü yapın, hiçbir şeyi düzeltmeyin;
    • -R- harici dosya sistemleri için varsayılan olarak kullanılan her hatayı düzeltmeden önce sorun;
    • -y- hata düzeltmeyle ilgili tüm soruları olumlu yanıtlıyor, bunun a'ya eşdeğer olduğunu söyleyebiliriz.
    • -C- her şeyi bul ve kara listeye al kırık bloklar sabit diskte. Yalnızca ext3 ve ext4 için kullanılabilir;
    • -F- günlüğe göre temiz olsa bile dosya sisteminin zorla kontrol edilmesi;
    • -B- ana blok hasar görmüşse süper blok adresini ayarlayın;
    • -P- -a seçeneğinin başka bir modern analogu, otomatik olarak kontrol eder ve düzeltir. Temel olarak bu amaçla üç seçenekten birini kullanabilirsiniz: p, a, y.

    Artık her şeyi çözdük ve artık dosya kurtarma işlemini gerçekleştirmeye hazırsınız Linux sistemleri. Hadi işimize bakalım.

    Fsck'te bir dosya sistemi nasıl geri yüklenir

    Diyelim ki zaten bir LiveCD sistemine veya kurtarma moduna önyükleme yaptınız. Kısacası ext4'ü veya diğer hasarlı FS'leri geri yüklemeye hazırız. Yardımcı program tüm dağıtımlarda varsayılan olarak zaten yüklüdür, dolayısıyla herhangi bir şey yüklemenize gerek yoktur.

    Dosya sistemi kurtarma

    Dosya sisteminiz /dev/sda1 adresine sahip bir bölümdeyse şunu çalıştırın:

    sudo fsck -y /dev/sda1

    Y seçeneğini belirtmenize gerek yoktur, ancak bunu yapmazsanız, yardımcı program sizi evet olarak yanıtlamanız gereken sorularla dolduracaktır.

    Hasarlı bir süper bloğun onarılması

    Genellikle bu ekip tüm hasarlarla bir patlamayla başa çıkar. Ancak ciddi bir şey yaptıysanız ve süper bloğa zarar verdiyseniz fsck yardımcı olmayabilir. Süper blok dosya sisteminin başlangıcıdır. O olmadan hiçbir şey işe yaramaz.

    Ancak verilerinize veda etmek için acele etmeyin; her şey yine de geri yüklenebilir. Bu komutu kullanarak yedek süper blokların nereye yazıldığına bakıyoruz:

    sudo mkfs -t ext4 -n /dev/sda1

    Bu komut aslında yeni bir dosya sistemi oluşturur. Ext4 yerine bölümün biçimlendirildiği dosya sistemini değiştirin; blok boyutu da aynı olmalıdır, aksi takdirde hiçbir şey çalışmaz. -n seçeneğiyle diskte hiçbir değişiklik yapılmaz, yalnızca süper bloklar dahil bilgiler görüntülenir.

    Şimdi altımız var yedek adresler süper bloklar ve bunların her birini kullanarak dosya sistemini kurtarmayı deneyebiliriz, örneğin:

    sudo fsck -b 98304 /dev/sda1

    Bunu yaptıktan sonra büyük olasılıkla dosya sisteminizi geri yükleyebileceksiniz. Ama birkaç örneğe daha bakalım.

    Temiz bir dosya sistemini kontrol etme

    Temiz olsa bile dosya sistemini kontrol edelim:

    sudo fsck -fy /dev/sda1

    Kötü sektörler

    Yoksa bulabiliriz kötü sektörler ve bunlara başka hiçbir şey yazmayın:

    sudo fsck -c /dev/sda1

    Dosya sistemi kurulumu

    Bölümde hangi dosya sisteminin taranması gerektiğini belirleyebilirsiniz, örneğin:

    sudo fsck -t ext4 /dev/sdb1

    Tüm dosya sistemlerini kontrol etme

    -A bayrağını kullanarak bilgisayara bağlı tüm dosya sistemlerini kontrol edebilirsiniz:

    Ancak böyle bir komut yalnızca kurtarma modunda çalışacaktır; kök bölüm ve diğer bölümler zaten monte edilmişse hata verecektir. Ancak R'yi ekleyerek kök bölümü kontrolden hariç tutabilirsiniz:

    sudo fsck -AR -y

    Veya tüm bağlı dosya sistemlerini hariç tutun:

    Ayrıca tüm dosya sistemlerini değil, yalnızca ext4'ü de kontrol edebilirsiniz, bunun için aşağıdaki seçenek kombinasyonunu kullanın:

    sudo fsck -A -t ext4 -y

    Veya /etc/fstab dosyasındaki bağlama seçeneklerine göre de filtreleyebilirsiniz; örneğin, salt okunur olarak bağlanan dosya sistemlerini kontrol edelim:

    sudo fsck -A -t tercihler=ro

    Takılı dosya sistemlerini kontrol etme

    Bunun imkânsız olduğunu daha önce söylemiştim. Ancak başka bir çıkış yolu yoksa, tavsiye edilmese de mümkündür. Bunu yapmak için öncelikle dosya sistemini salt okunur moda yeniden bağlamanız gerekir. Örneğin:

    sudo mount -o remount,ro /dev/sdb1

    Şimdi fsck dosya sistemini zorunlu modda kontrol edin:

    sudo fsck -fy /dev/sdb1

    Bilgileri görüntüle

    Herhangi bir şeyi düzeltmek istemiyorsanız, yalnızca bilgileri görüntülemek istiyorsanız -n seçeneğini kullanın.

    Bazen çeşitli nedenlerden dolayı (bir arıza, yanlış kapatma sonucu) dosya sistemlerinde hatalar birikir. Hataların kendisi "uyumsuz" veri yapılarıdır. Doğal olarak böyle bir durum ortaya çıkarsa, hasarlı olanı bir an önce düzene koymak gerekir. Yardımcı program bu görevle mükemmel bir şekilde başa çıkıyor. fsck. Gerçekten çok etkilidir ve sistem yöneticileri bunu öncelikle dosya sistemlerini geri yüklemek veya onarmak için kullanırlar.

    Fsck nasıl çalışır?

    Yarar fsck (F ile S sistem Tutarlılığı Che ck) başlangıçta arka arkaya tüm veri yapılarını, yani tüm dosya sistemini derinlemesine kontrol etti. Hataları bulmak için yöntemler kullandı buluşsal analiz Hata bulma sürecini hızlandırmak ve optimize etmek. Ancak bu durumda bile büyük dosya sistemlerinde bu işlem saatler sürebilir.

    Daha sonra, "dosya sisteminin temiz bir parçası" işaretine dayanan, dosya sisteminin durumunu değerlendirme şeması uygulandı. Bir arıza meydana gelirse ve dosya sistemi (FS) yanlış bir şekilde sökülürse, bu bit FS süper bloğunda ayarlandı. Varsayılan olarak, Linux sistemlerinde, sistem önyüklemesinin aşamalarından birinde, /etc/fstab, /etc/vfstab dosyalarının yanı sıra /etc/filesystems dosyasında kayıtlı dosya sistemleri kontrol edilir. Böylece yardımcı program, sistem önyüklemesi sırasında FS'nin "temiz bitini" analiz ederek bunun kontrol edilmeye değer olup olmadığına karar verir.

    Günlüklü dosya sistemleri şu anda yardımcı programın yalnızca gerçekten onarılması veya geri yüklenmesi gereken veri yapılarıyla çalışmasına izin veriyor. Gerekirse fsck, aynı FS günlükleri sayesinde FS'nin tamamını geri yükleyebilir.

    Linux'ta fsck kullanmanın bazı özellikleri

    Linux sistemleri için, sıklıkla (özellikle harici bir FS kullanıldığında), FS kontrolü, FS tamamen işlevsel olsa bile belirli sayıda kaldırma işleminden sonra gerçekleştirilecek şekilde düzenlenebilir. Bu özellikle aşağıdakiler için geçerlidir: masaüstü bilgisayarlar Her gün kapatılabilen/açılabilen, işlemlerinin ve uygulamalarının doğası gereği ve ayrıca bağlantı için bunlara ücretsiz erişim nedeniyle yeniden başlatılabilen harici cihazlar. Bu gibi durumlarda FS'nin kontrol edilmesinin (yararlı ve olumlu bir prosedür olmasına rağmen) çok sık ve dolayısıyla anlamsız olduğu ortaya çıkar.

    Varsayılan olarak Linux'ta FS, 20 sökme işleminden sonra kontrol edilir. FS kontrolünün gerekli olduğu sökme sayısını değiştirmek için şu komutu kullanmanız gerekir: tune2fs:

    $ sudo tune2fs -c 50 /dev/sda1 tune2fs 1.44.1 (24-Mart-2018) Maksimum bağlama sayısını 50'ye ayarlama

    fsck sözdizimi ve temel seçenekler

    Takım fsck aşağıdaki sözdizimi:

    Fsck [parametre] -- [FS parametreleri] [<файловая система> . . .]

    Ana parametreler:

    Seçenek Tanım
    -A Tüm FS'yi kontrol eder
    -İLE [ ] Yürütme durumunu gösterir. Burada fd, GUI aracılığıyla görüntülendiğinde bir dosya tanımlayıcıdır
    -ben Özel erişim için bir cihazı kilitler
    -M Takılı dosya sistemlerinin kontrol edilmesini yasaklar
    -N Gerçek bir test çalıştırmadan simüle edilmiş bir yürütme gösterir
    -P Kök dosya sistemiyle birlikte kontrol edin
    -R Kök dosya sistemini kontrol etmeyi atlar. Yalnızca -A seçeneğiyle birlikte kullanılabilir
    -R [ ] Taranan her cihazın istatistiklerini görüntüler
    -T Başlangıçta başlığı gösterme
    -T<тип> Kontrol edilecek FS'yi belirtir. Birkaç FS belirtebilir ve bunları virgülle ayırarak listeleyebilirsiniz.
    -V Gösterimler Detaylı Açıklama gerçekleştirilecek eylemler

    Fsck için temel seçeneklere ek olarak, gerçekleştirilen göreve ve/veya FS'ye bağlı olan belirli seçenekler de vardır. Komutu kullanarak bu konuyu ilgili sayfalarda daha ayrıntılı olarak okuyabilirsiniz. adam fsck. Yardımcı programın ana kılavuzunun içindekiler tablosu ("AYRICA BAKINIZ" altında), fstab(5), mkfs(8), fsck.ext2(8), fsck.ext3(8), vb. Bilgi Bu bağlantılar, man komutunun uygun parametrelerle çalıştırılmasıyla görüntülenebilir, örneğin man fsck.ext3.

    Aşağıdaki tablo ek (özel) seçeneklerin yanı sıra en sık kullanılan seçenekleri de listeleyerek, komutu maksimum esneklik ve verimlilikle kullanmanıza olanak tanır:

    Seçenek Tanım
    -A Kullanımdan kaldırılmış seçenek. Bulunan tüm hataların kullanıcı onayı olmadan düzeltilmesi gerektiğini belirtir.
    -R Ext dosya sistemleri için kullanılır. Fsck'e her hatayı düzeltmeden önce kullanıcıya sormasını söyler
    -N Hata düzeltmesi olmadan yalnızca dosya sistemi denetimi gerçekleştirir. Ayrıca FS hakkında bilgi edinmek için kullanılır
    -C Ext3/4 dosya sistemleri için kullanılır. Daha sonra üzerlerine yazı yazılmasını önlemek için tüm hasarlı blokları işaretler
    -F FS çalışıyor olsa bile FS'yi zorla kontrol eder
    -y Kullanıcıya gelen istekleri otomatik olarak onaylar
    -B Süper blok adresini ayarlar
    -P Algılanan hataları otomatik olarak düzeltin. Eski -a seçeneğinin yerine geçer

    fsck kullanımına örnekler

    En tipik durum için, örneğin /dev/sdb2 aygıtında FS'yi geri yüklemeniz (veya daha doğrusu "onarmanız") gereken durumlar için tipik olan şu komutu kullanmalısınız:

    $ sudo fsck -y /dev/sdb2

    Burada -y seçeneği gereklidir, çünkü o olmadan çok sık onay vermeniz gerekir. Aşağıdaki komut, çalışıyor olsa bile FS'nin zorunlu kontrolünü gerçekleştirmenize olanak tanır:

    $ sudo fsck -fy /dev/sdb2

    En kullanışlı olanlardan biri bozuk sektörleri işaretlemenizi sağlayan seçenektir ve bu seçenek en sık kullanılır. Tipik olarak, bu tür durumlar (hasarlı sektörlerle birlikte) anormal bir elektrik kesintisinin neden olduğu arızalardan sonra meydana gelir:

    $ sudo fsck -c /dev/sdb2

    Dosya sistemleriyle çalışma, bölümlerden çıkarıldığında yapılmalıdır. Bununla birlikte, takılı FS'yi hala kontrol etmeniz gereken bir durum ortaya çıkarsa, fsck komutunu uygun seçenekle kullanmadan önce, öncelikle istenen FS'yi salt okunur modda yeniden bağlamanız gerekir:

    $ sudo mount remount,ro /dev/sdb2 $ sudo fsck -fy /dev/sdb2

    Bir bölüm için hangi FS'nin kullanılacağını belirtmek için:

    $ sudo fsck -t ext4 -y /dev/sdb2

    Fsck, FS'yi düzeltemezse/tamir edemezse (ki bu çok nadir olur), bunun nedeni hasarlı bir FS süper bloğu olabilir. Ayrıca süper bloklar yedeklendiği için geri yüklenebilir. Ancak önce bu kopyaların hangi adreslerde yazıldığını bulmanız ve ardından süper bloğu bunlardan birinden geri yüklemeye çalışmanız gerekir. yedeklemeler:

    $ sudo fdisk -l $ sudo mkfs -t ext4 -n /dev/xvdb1 $ sudo fsck -b 163840 /dev/xvdb1

    Bu örnekte -l komutu, bir liste görüntülediğinden ilk önce hangi aygıtla çalışacağınızı bilmeniz gerektiğini göstermek için bahsedilmiştir (içinde bu sonuç atlandı) mevcut bölümler. mkfs komutu bir dosya sistemi oluşturmak için tasarlanmıştır, ancak -n seçeneğiyle süper blokların konumu da dahil olmak üzere dosya sistemi hakkında bilgi edinmek için kullanılabilir. mkfs için -t anahtarının, gerçek duruma karşılık gelen dosya sistemini belirttiğinden emin olmalısınız. bu durum ext4.

    Çözüm

    Bu yazıda yardımcı programın işleyişine ve kullanımına baktık fsck. Makaleden de görülebileceği gibi, yardımcı programı kullanarak fazla karmaşıklık sağlamaz. Ve Linux'taki dosya sistemlerini kontrol etme ve geri yükleme yetenekleri oldukça büyüktür, bu nedenle bu yardımcı program hakkında bilgi sistem yöneticisi sadece gerekli.

    Bir hata bulursanız lütfen metnin bir kısmını vurgulayın ve tıklayın. Ctrl+Enter.

    Ben de bu sorunla yüzleşmek zorunda kaldım. Kurulumu yapan arkadaşım ubuntu eski biri gibi ASUS dizüstü bilgisayar ve bazen beynini kullanmak istemeyen biri bana böyle bir sorunla geldi. Yeni Ubuntu 12.10 dizüstü bilgisayarına kurulu ve çoğu zaman sistem önyükleme yapmak istemiyor, onu siyah bir ekrana atıyor veya mor bir arka planda donuyor. Ama içinde Son zamanlarda Bu mesaj ortaya çıkmaya başladı, “İşletim sistemi önyüklenemedi. Şunun için seçin: ileri eylem istenilen anahtar..." Ve sonra tıklamanız gereken şeyin bir açıklaması var. Sistemin hangi tuşlara basmayı önerdiğini tam olarak hatırlamıyorum, ancak anlamı şu ki, hataları otomatik olarak düzeltmek için falan tuşa basın, manuel hata ayıklama için başka bir tuşa basın ve bu mesajı görmezden gelmek için üçüncü bir tuşa basmanız isteniyor. Otomatik hata düzeltme hiçbir şeye yol açmadı ve işletim sisteminin yüklenmesi hiçbir zaman mantıksal sonucuna ulaşmadı. Bu yüzden ünlü takımı denemeye karar verdim fsck.

    İlk önce ikisinden de önyükleme yapmanız gerekir önyüklenebilir flash sürücü Ubuntu (Lubuntu, Xubuntu, Kubuntu, vb.) ile veya Ubuntu diski Canlı CD. Şimdi dosya sistemini düzeltmek için hangi Ubuntu bölümünü taramamız gerektiğini bulmamız gerekiyor. Terminali (Ctrl-Alt-T) başlatın ve şu komutu yürütün:

    sudo fdisk-l

    Bu komut bize sisteme takılı tüm diskleri ve flash sürücüleri gösterecektir. Kendimden bir örnek vereceğim kişisel bilgisayar ve bir arkadaşınızın dizüstü bilgisayarıyla değil. İşte elde ettiklerim:

    ubuntu@ubuntu:~$ sudo fdisk -l

    Disk /dev/sda: 640,1 GB, 640135028736 bayt
    255 kafa, 63 sektör/yol, 77825 silindir, toplam 1250263728 sektör



    Disk tanımlayıcı: 0x0009d6f7


    /dev/sda1 * 2048 61442047 30720000 83 Linux
    /dev/sda2 61442048 73730031 6143992 82 Linux takası / Solaris
    /dev/sda3 73730048 1250263039 588266496 83 Linux

    Disk /dev/sdb: 500,1 GB, 500107862016 bayt
    255 kafa, 63 sektör/yol, 60801 silindir, toplam 976773168 sektör
    Birimler = 1 sektörleri * 512 = 512 bayt
    Sektör boyutu (mantıksal/fiziksel): 512 bayt / 512 bayt
    G/Ç boyutu (minimum/optimum): 512 bayt / 512 bayt
    Disk tanımlayıcı: 0xb9ff6f01

    Cihaz Önyükleme Başlangıç ​​Bitiş Blokları Kimlik Sistemi
    /dev/sdb1 * 16065 100197404 50090670 83 Linux
    /dev/sdb2 105322201 976771071 435724435+ 5 Genişletilmiş
    /dev/sdb3 100197405 105322139 2562367+ 82 Linux takası / Solaris
    /dev/sdb5 105322203 832110591 363394194+ 7 HPFS/NTFS/exFAT
    /dev/sdb6 832112640 860755218 14321289+ 83 Linux
    /dev/sdb7 860758016 862613503 927744 82 Linux takası / Solaris
    /dev/sdb8 862615552 976771071 57077760 83 Linux

    Bölüm tablosu girişleri disk sırasına göre değil

    Disk /dev/sdc: 8115 MB, 8115978240 bayt
    250 kafa, 62 sektör/yol, 1022 silindir, toplam 15851520 sektör
    Birimler = 1 sektörleri * 512 = 512 bayt
    Sektör boyutu (mantıksal/fiziksel): 512 bayt / 512 bayt
    G/Ç boyutu (minimum/optimum): 512 bayt / 512 bayt
    Disk tanımlayıcı: 0xc3072e18

    Cihaz Önyükleme Başlangıç ​​Bitiş Blokları Kimlik Sistemi
    /dev/sdc1 * 32 15847625 7923797 b W95 FAT32

    Komut çıktısından görebileceğiniz gibi sudo fdisk-l, bende 2 tane var sabit sürücüler(sda)640 GB ve (sdb)500 GB'nin yanı sıra, aslında önyükleme yaptığım bir flash sürücü (sdc)8GB. Ubuntu 12.04'lü temel sistemimin sda diskinde bulunduğunu ve işletim sisteminin bulunduğu bölümün sda1 olarak adlandırıldığını biliyorum.

    Artık taranması gereken bölümü bildiğimize göre onu kontrol etmeye başlayabiliriz. Terminalde:

    sudo fsck -y -f -c /dev/sda1

    Bir hata görürseniz büyük olasılıkla bu bölümün bağlantısını kesmeniz gerekir:

    sudo umount /dev/sda1

    Komut tuşları ve parametreler fsck:

    sen- tüm sorulara her zaman evet yanıtı verin (bir alternatif vardır: p tuşu - tam otomatik modda kontrolü başlatır);

    F- dosya sisteminin zorunlu kontrolü (dosya sistemi tamamen işlevsel olarak işaretlenmiş olsa bile)

    C- hatalı blokları arar ve ardından bunları uygun şekilde işaretler

    /dev/sda1- kontrol edilmesi gereken cihaz veya bölüm. Her ne kadar takım farklı bir görünüme sahip olsa da. Örneğin:

    sudo fsck -p /dev/sda1

    Bu durumda yalnızca -p anahtarı eklenmiştir. Sadece tüm fsck komut tuşlarını okudunuz ve tam olarak ihtiyacınız olan anahtarları eklediniz. Programın tüm yeteneklerini öğrenmek için Terminal'e girin:

    adam fsck

    Terminalin kontrol ettikten sonra ürettiği şey budur:

    ubuntu@ubuntu:~$ sudo fsck -y -f -c /dev/sda1
    util-linux 2.20.1'den fsck
    e2fsck 1.42.5 (29-Tem-2012)
    Bozuk blokların kontrol edilmesi (salt okunur test): %0,00 tamamlandı, 0:00 geçti. (0/0/0 hata yapıldı
    /dev/sda1: Bozuk blok inode'u güncelleniyor.
    Geçiş 1: Düğümleri, blokları ve boyutları kontrol etme
    Geçiş 2: Dizin yapısı kontrol ediliyor
    Geçiş 3: Dizin bağlantısı kontrol ediliyor
    Geçiş 4: Referans sayımlarını kontrol etme
    Geçiş 5: Grup özeti bilgileri kontrol ediliyor

    Linux görebileceğiniz en güvenilir işletim sistemlerinden biridir ancak bu, Linux çalıştıran donanımın o kadar güvenilir olduğu anlamına gelmez. Sabit diskler hatalarla çalışabilir ve bunun sonucunda dosya sistemlerinizde hatalar alırsınız. Ne kadar güvenilir olursa olsun işletim sistemi yanlışlıkla sildiyseniz gerekli dosyalar veya kataloglar. Ancak başınıza benzer bir şey gelirse umutsuzluğa kapılmayın. Linux, iyileşmenize yardımcı olacak ihtiyacınız olan her şeye sahiptir kayıp dosyalar disklerin ve dosya sistemlerinin silinmesi veya arızalanması sonucu. Hangi araçlardan bahsediyoruz? Her şeyden önce, yardımcı programlara bakacağız e2fsck, neşter Ve of. Bugünkü yazımızda böyle bir araç setini kullanarak FS hatalarını nasıl düzeltebileceğinizi ve silinen dosyaları nasıl kurtarabileceğinizi göreceğiz.

    E2fsck kullanarak FS ext2/ext3/ext4'ü kontrol etme

    Yarar e2fsckünlü UNIX yardımcı programının soyundan geliyor fsck, dosya sistemlerini kontrol etmek için tasarlanmıştır. Yardımla e2fsck dosya sistemlerinde hataları kontrol edebilir ve onarım çalışmaları gerçekleştirebilirsiniz ext2/ext3/ext4.

    En iyilerinden biri önemli noktalar e2fsck ile çalışmanın özelliği, yalnızca bağlı olmayan bir dosya sistemi üzerinde çalışmak için kullanılabilmesidir, aksi takdirde kendinize daha fazla baş ağrısı yaşatabilirsiniz; bu, onu bağlı bir dosya üzerinde çalışmak üzere başlatmaya çalıştığınızda yardımcı programın kendisi hakkında uyardığı şeydir. sistem. Kontrol edilen FS root değilse tüm kullanıcıları kapatabilir ve tek kullanıcı moduna geçebilirsiniz ( başlangıç ​​1), FS'nin bağlantısını kesin ve onunla çalışın.

    Ancak yazar yine de birini kullanmanızı ve ondan önyükleme yaptıktan sonra tüm işi gerçekleştirmenizi önerir. Bu yöntemi kullanarak, herhangi bir ek işlem yapmanıza gerek kalmadan, bağlantısı kesilmiş dosya dosyaları tamamen elinizin altında olacaktır.

    Herhangi bir nedenle ilk seçeneği tercih ederseniz, tek kullanıcı moduna geçtikten sonra:

    # başlangıç ​​1

    iş için gereken dosya sisteminin bağlantısını kesin:

    # umount /dev/sdb1

    ve başarıyla bağlantıyı kestikten sonra çalıştırın e2fsck:

    # e2fsck -y /dev/sdb1

    Seçenek "-y" yardımcı programı bilgilendirir e2fsck tüm sorularını peşinen kabul ettiğimizi ve her şeyi kendi başına yapması umuduyla kahve içmeye ayrıldığımızı. Dosya sisteminin boyutuna bağlı olarak doğrulama ve kurtarma biraz zaman alabilir. Kontrolü tamamladıktan sonra, FS'de sürücüdeki donanım sorunlarından kaynaklanabilecek yeni hataların oluşmadığından emin olmak için testi her zaman yeniden çalıştırabilirsiniz.

    Tüm kontroller ve onarım çalışmaları tamamlandıktan sonra doğrulanmış dosya sistemini bağlayabilir ve çoklu kullanıcı moduna geri dönebilirsiniz. Veya sistemi yeniden başlatabilirsiniz.

    Silinen dosyaları /proc ve lsof kullanarak kurtarma

    Şimdi iyileşme sürecine bakalım silinen dosyalar. Genel olarak, silinmiş bir dosyayı kurtarabilmenizin nedeni, "dosya"nın yalnızca dosyanın inode'una () bir referans olmasıdır. dosya numarası). tam olarak dosya numarası dosyanın fiziksel konumu hakkındaki bilgiler saklanır. Bir dosyayı sildiğinizde aslında yalnızca bağlantıyı siliyorsunuz. dosya numarası, tanımlayıcının kendisi bir süre daha var olacaktır: bu dosyayı daha önce açan süreç karşılık gelen tanımlayıcıyı yazmak için serbest bırakana kadar. Bu nedenle, silinen bir dosyanın içeriğini geri yüklemenin mümkün olduğu kısa da olsa bir süre vardır. Bu sürecin anahtarı, diğer şeylerin yanı sıra, sistemde çalışan tüm işlemler ve bunların açtıkları dosyalar hakkındaki bilgileri içeren dosya sistemidir. Sistemde çalışan her işlemin karşılık gelen bir PID dizini vardır. /proc. Silinen dosyayı hâlâ açık tutan işlemin PID'sini bildiğimizden, içeriğini her zaman onu açan işlemin /proc// dizininden geri yükleyebiliriz. Haydi devam edelim basit örnek Nasıl yapıldığını görelim.

    İlk önce bir dosya oluşturalım:

    $ echo "Çok önemli veri" > ~/dosyam.txt

    Artık elimizde bir dosya var dosyam.txt Ana dizinde bulunan önemli verilerle. Bunu kaldırmayı ve ardından aşağıdaki gibi geri yüklemeyi deneyelim. İlk önce dosyayı görüntülemek için komutla açacağız. az, bundan sonra çalışmasını duraklatacağız, böylece ihtiyacımız olan dosyayı açık bırakacağız. Yani adım adım.

    Dosyayı komutla açın az görüntülemek için

    $ less ~/dosyam.txt

    Dosya açıldığında ve içeriğini görebildiğinizde, Ctrl+z yürütmeyi duraklatmak için az.

    Dosyayı silin:

    $ rm ~/dosyam.txt

    Dosyanın artık mevcut olmadığından emin olun

    $ ls -l ~/dosyam.txt

    Daha önce tarafımızdan başlatılan çalışmadan bu yana az henüz tamamlanmadıysa, dosya bunun için açık kalır ve aslında silinmez. Onu geri yükleyelim.

    Öncelikle dosyayı açan işlemin PID'sini ve dosya tanımlayıcı numarasını bulmanız gerekir. Bu program kullanılarak yapılabilir of:

    $lsof | grep dosyam.txt daha az 2675 ashep 4r REG 8.1 37 294478 /home/ashep/dosyam.txt (silindi)

    İkinci çıkış alanında of PID - 2675 içerir ve dördüncü tanımlayıcı numarası 4'tür. Artık kurtarmaya başlayabilirsiniz:

    $ cp /proc/2675/fd/4 ~/recovered.txt

    İçeriğin ihtiyacımız olan dosyada olup olmadığını kontrol edin:

    $ cat ~/recovered.txt Çok önemli veri

    Gördüğünüz gibi her şey yolunda gitti ve silinen dosyayı kurtarabildik.

    Silinen dosyaları Scalpel kullanarak kurtarma

    Dosyayı açan işlem sona erdiğinde, inode serbest kaldığı ve disk bloklarındaki veriler ile dosya sistemi arasındaki tüm iletişim kaybolduğu için dosyayı kurtarmak daha zor hale gelir. Verilerin fiziksel olarak diskin üzerine yazılmadığı sürece, yardımcı programı kullanarak verileri geri yüklemek mümkündür. neşter. Bu araç, disk bloğunun içeriğini blok blok geçer ve içeriğini analiz ederek oradaki dosyaların varlığına dair işaretler bulmaya çalışır. Arama için neşter belirli dosya türlerinde bulunan bayt dizilerinden desenler kullanır. Örneğin, PNG dosyaları başlıktaki bayt dizisini içerir \x50\x4e\x47.

    neşterçoğu modern dağıtımın depolarında bulacaksınız. Yardımcı programı yükledikten sonra yapmanız gereken ilk şey, programın çalışırken hangi dosyaları arayacağına karar vermektir. Arama modeli tanımları dosyadadır /etc/scalpel/scalpel.conf. Varsayılan olarak, dosyanın içeriği tamamen yorumlanmıştır ve çalışmaya başlamadan önce gerekli şablonların açıklamalarını kaldırmanız ve/veya kendinizinkini eklemeniz gerekir. Şablon açıklama formatı oldukça basittir:

    Uzantı büyük/küçük harfe duyarlı boyut başlığı

    • eklenti dosya uzantısını tanımlar neşter Restorasyonla eklenecek;
    • harfe duyarlı yardımcı programa arama düzenindeki karakterlerin büyük/küçük harf durumunun önemli olup olmadığını söyler;
    • kullanım boyutu belirlenir en büyük boy kurtarılabilir dosyalar;
    • V başlık ve isteğe bağlı alt bilgi sırasıyla dosya başlığının ve alt kısmının dizileri açıklanmaktadır.

    Örneğin, JPG dosyaları için bir şablon tanımı şu şekilde görünebilir:

    Jpg y 200000000 \xff\xd8\xff\xe0\x00\x10 \xff\xd9

    Gerekli değişiklikleri yaptıktan sonra yapılandırma dosyası Bulunan dosyaları kaydetmek için neşterleyin ve boş (gerekli!) bir dizin hazırlayın, arama ve kurtarma işlemini başlatabilirsiniz:

    # neşter -o ~/kurtarılan /dev/sdb1

    seçeneğin kullanıldığı yer "-Ö" Bulunan dosyaların kaydedileceği dizinin yolu belirlenir. Yardımcı program süreci, cihazın tamamını taradığından genellikle çok uzun sürer; bu nedenle biraz zaman ayırın ve dışarıda bir yürüyüşe çıkın. Temiz hava Henüz kimseyi rahatsız etmedim ;)

    Sonrasında neşterÇalışmasını tamamladıktan sonra ihtiyacınız olan dosyaları içerip içermediğini görmek için çıktı dizininin içeriğini inceleyin.

    Çözüm

    Çok az insan kendisini önemli verilerin yanlışlıkla silindiği veya zarar gördüğü bir durumda bulmak ister. Ve buna rağmen Linux kaybolan verileri kurtarmak için araçlar sunar; bu süreçten pek keyif alınmaz. Bu nedenle, verileriniz ve onlarla nasıl çalıştığınız konusunda her zaman son derece dikkatli olun. Ve elbette, zamanında tedaviyi de unutmayın - binden fazla sinir hücresini kesin ölümden kurtaran eski ve kanıtlanmış bir yöntem.

    Fsck programı, dosya sistemlerini kontrol etmek ve varsa dosya sistemi hatalarını düzeltmek için kullanılır. Bir dosya sistemini denetlemenin temel gereksinimi, dosya sisteminin bağlantısının kesilmiş olmasıdır. F yüzyılını zaten monte edilmiş bir dosya sisteminde çalıştırmak onun yok olmasına yol açabilir - o zaman fsck bile yardımcı olmaz. Fsck programı, Linux çekirdeği tarafından desteklenen dosya sistemlerini kontrol etmek için kullanılabilir.
    Program çağrı formatı aşağıdaki gibidir:
    sudo fsck [seçenekler] [dosya sistemi]

    Dosya sistemi gibi parametreler atlanabilir. Bir dosya sistemi belirtmezseniz program /etc/fstab dosyasında listelenen tüm dosya sistemlerini kontrol etmeye başlayacaktır. Bu durum son derece istenmeyen bir durumdur çünkü bu dosya sistemleri monte edilebilir ve muhtemelen dosya sisteminin bozulmasına neden olabilir.

    Dosya sistemi kontrol sırası aşağıdaki gibi olmalıdır:
    1. Dosya sisteminin bağlantısını kesin.
    2. Kontrol etmek için f sck komutunu çalıştırın.

    Örneğin, /dev/hda5 bölümünün dosya sistemini kontrol etmek için önce bağlantısını kesin ve ardından f sck'i çalıştırın:
    sudo -i
    # umount /dev/hda5
    # fsck /dev/hda5

    Ancak bazen, örneğin kök dosya sistemini kontrol etmemiz gerektiğinde, dosya sisteminin bağlantısını kesemeyiz. Bu durumda aşağıdakileri yapmanız gerekir:
    1. Tek kullanıcı modunda yeniden başlatın.
    2. Kök dosya sistemini salt okunur modda yeniden bağlayın.
    3. Dosya sistemini kontrol edin.

    Tek kullanıcı modunda yeniden başlatmak için sistemi yeniden başlatın (yeniden başlat komutu) ve önyükleme sırasında tek parametreyi çekirdeğe iletin.
    Tek kullanıcı modunda, beklediğiniz gibi yalnızca bir kullanıcı çalışabilir - root.
    Tüm hizmetler kapalı olduğundan hiçbir şey dosya sisteminin kontrol edilmesini engellememelidir. Dosya sistemini yeniden bağlamak için şu komutu girin:
    # mount -o remount th -t ext3 /
    Mount komutunun -o seçeneği, çeşitli seçenekleri belirtmenize olanak tanır. Bu durumda remount ve go seçeneklerini belirtiyoruz, yani salt okunur modda yeniden bağlanın. -t parametresi dosya sistemi türünü (ext3) belirtir ve son parametre kök dosya sistemidir (/).