Bir süper bloktaki dosya sisteminin “sihirli” numarası nedir?


9

Temelde Linux üzerinde çalışan orta ölçekli bir NAS sistemi üzerinde çalışıyorum ve bugün harika testler yapmam gerekiyor. Adım adım beni bir dosya sistemindeki sihirli numarayı bozmak / düzeltmek için komut dosyasını test etmek için fsdb kullanarak götürdü.

Biraz dolaştım ve sağlam bir açıklama bulamadım. Orta düzeyde bir ışık tutabilir mi?

Yanıtlar:


15

Bir sihirli sayı genellikle (genellikle başlangıçta) belirli bir pozisyonda, belli bir biçimde tüm dosyaları kullanılan bayt dizisidir. Belirli bir biçimdeki tüm dosyalar, belirli bir konumda belirli bir bayt dizisine sahip olduğundan ve diğer biçimlerdeki çoğu dosyada bulunmadığından, sihirli sayı, bir dosyanın hangi biçimde olduğunu tanımlamanın bir yoludur.

Burada, bu kavram bir dosya sistemi formatına uygulanır. Örneğin, bir ext2 / ext3 / ext4 dosya sistemi her zaman 0x53 0xEF1080-1081 konumlarındaki baytlara sahiptir. Bir reiserfs dosya sistemi her zaman ReIsErFs65588 konumunda (veya ReIsEr2Fsdaha yeni sürümlerde vb.) Başlar . Diğer dosya sistemleri de benzer sihirli sayılara sahiptir. Dosya sistemi araçları, onları ele alamayacakları ve zarar verebilecekleri biçimde düzenlenmiş verilerde yanlışlıkla başlatmamanızı sağlamak için sihirli numaranın (ve muhtemelen diğer ipuçlarının) varlığını kontrol eder. Bir dosya sistemindeki sihirli numarayı değiştirirseniz, sıradan araçların ona dokunmayı reddetmesi muhtemeldir; onarım araçları daha akıllı olabilir ve kötü bir sihirli sayıya kırılabilecek şeylerden sadece biri olarak davranabilir.

fileKomut onların sihirli numaraları dayalı dosyalarını tanır. file -s /dev/sda1Bölümde ne düşündüğünü görmek için koşabilirsiniz /dev/sda1. Kararları genellikle /etc/magicveya içinde bulunan bir veritabanına dayanır /usr/share/misc/magic. Belirli komutlar, başa çıkabilecekleri dosya biçimlerini tanımak için farklı sihirli sayılar kullanabilir.


Ubuntu üzerinde, tam olarak sorunun (ve ben) aradığı bilgileri içeren apt-get install source fileçekecektir file-x.yy/magic/Magdir/filesystems.
Nick Garvey

Olmamalı mı file /dev/sda1?
Bobby

@Bobby No, file /dev/sda1yalnızca bunun bir cihaz düğümü olduğunu söyleyecektir, içerik hakkında hiçbir şey söylemez. Ya file </dev/sda1da ihtiyacınız var file -s /dev/sda1.
Gilles 'SO- kötü olmayı bırak'

Oh tamam, benim için file < /dev/sda1dosyadan yardım metni ile başarısız (parametre eksik?), Ama -sharika çalışıyor. Teşekkürler.
Bobby

1
@Bobby Ah, anlıyorum, bir karakteri unuttum. Bu var file - </dev/sda1sen anlatmak zorunda çünkü, filestdin'den okumak için açıkça. Teşekkürler, düzeltirim.
Gilles 'SO- kötü olmayı bırak'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.