Bir Ext4 disk denetimi neden NTFS'den daha hızlı?


12

Bugün bilgisayarımı yeniden başlattığım bir durum vardı ve diskte tutarlılık olup olmadığını kontrol etmem gerektiğini söyledi. Yaklaşık 10 dakika sonra ("% 1" tamamlandığında) vazgeçtim ve eve gittiğimde çalışmasına izin vermeye karar verdim.

Karşılaştırma için, ev bilgisayarım tüm bölümler için Ext4 kullanıyor ve disk kontrolleri (haftada bir kez çalışıyor) sadece birkaç saniye sürüyor. Hızlı disk kontrollerine sahip olmanın bir öncelik olduğunu okuduğumu hatırlıyorum, ancak bunu nasıl yapabildiklerini bilmiyorum.

Peki, Ext4 disk kontrollerini nasıl bu kadar hızlı yapar? NTFS çıktıktan sonra (~ 10 yıl önce) bunu yapmak için büyük bir atılım var mı?

Not: NTFS diski ~ 300 GB ve Ext4 diski ~ 500 GB'dir. Her ikisi de yaklaşık yarısı dolu.


2008 R2 piyasaya sürüldüğünden beri Windows chkdsk'ı önyüklemede NTFS birimim yok. Aynı NTFS birimine on binlerce Lucene dizin dosyasına erişen birden fazla düğümü olan bir CSV kümesinde bile. Oldukça etkileyici.
Brain2000

Başlangıçta çalışan Chkdsk, işletim sisteminin dosya sistemi meta veri tutarsızlığıyla ciddi bir sorunla karşılaştığı anlamına gelir. Chkdsk, büyük olasılıkla "her disk sektörüne kötülük olup olmadığını kontrol edin ve mümkünse onarım" bayrağı ile çağrıldı, bu çok zaman alan bir işlemdi. Rutin fsck kontrolleri kesinlikle bunu yapmaz.
kreemoweet

Yanıtlar:


11

Performans farkının iki ana nedeni ve iki olası nedeni vardır. İlk olarak, ana nedenler:


Ext4 ve NTFS karşılaştırması

Çeşitli ölçütler , gerçek ext4 dosya sisteminin bir NTFS bölümünden daha hızlı çeşitli okuma-yazma işlemleri gerçekleştirebileceği sonucuna varmıştır . Bu testler gerçek dünya performansının göstergesi olmasa da, bu sonuçları tahmin edebilir ve bunu bir sebep olarak kullanabiliriz.

Ext4'ün neden daha iyi performans gösterdiğine gelince, NTFS çok çeşitli nedenlerle ilişkilendirilebilir. Örneğin, ext4 gecikmeli tahsisi doğrudan destekler. Yine de, performans kazançları kesinlikle kullandığınız donanıma bağlıdır (ve bazı durumlarda tamamen reddedilebilir).

Azaltılmış Dosya Sistemi Kontrol Gereksinimleri

Ext4 dosya sistemi, diğer eşdeğer günlük kaydı dosya sistemlerinden (örn. NTFS) daha hızlı dosya sistemi kontrolleri gerçekleştirebilir . Wikipedia sayfasına göre:

Ext4'te, ayrılmamış blok grupları ve inode tablosunun bölümleri bu şekilde işaretlenir. Bu, e2fsck'in onları tamamen bir çekte atlamasını sağlar ve ext4'ü desteklemek için oluşturulmuş bir dosya sistemini kontrol etmek için gereken süreyi büyük ölçüde azaltır. Bu özellik Linux çekirdeğinin 2.6.24 sürümünde uygulanmaktadır.


Ve şimdi, iki olası neden:


Dosya Sistemi Yardımcı Programları Kendileri Denetleme

Bazı uygulamalar, sağlık "denetimini" gerçekleştirmek için dosya sistemlerinde farklı rutinler çalıştırabilir. Linux'taki fsck yardımcı programını Windows'taki chkdsk yardımcı programına karşı kullanırsanız bu kolayca görülebilir . Bu uygulamalar, farklı dosya sistemleri için farklı işletim sistemlerine yazılmıştır. Bunu olası bir neden olarak ortaya koymamın nedeni, her işletim sistemindeki düşük düzeyli sistem çağrılarının farklı olmasıdır ve bu nedenle iki farklı işletim sistemi kullanarak yardımcı programları doğrudan karşılaştıramayabilirsiniz.

Disk Parçalanması

Bunu anlamak kolaydır ve ayrıca dosya sistemleri arasındaki farkları anlamamıza yardımcı olur. Bir dosyada tutulan tüm dijital veriler aynı olsa da, sabit diskte nasıl depolandığı dosya sisteminden dosya sistemine oldukça farklıdır. Dosya parçalanması, erişim hızlarını artırabilir ve daha fazla hız farkına bağlanabilir.


1
Beni şaşırtan şey, ikinci noktanızın başlangıçta en büyük etkiye sahip olacağı gibi görünüyor, ancak Ext4 bölümümün NTFS bölümümün toplamı kadar kullanılan alanı var - çok daha hızlı olmak yerine, aynı hızda olmalılar. Bunun Ext4 performans iyileştirmeleri daha hızlı hem de kontrol yapmak olasıdır sanırım, ama Ext4 değil o çok daha hızlı NTFS dışında (kesinlikle ben dosya sistemi kontrolleri gördüğünüz büyüklük farkı birkaç siparişler).
Brendan Long

Ne demek istediğinden emin değilim ... Genel olarak, dosya içeriği çoğu modern dosya sistemindeki dizinlerden çok daha fazla yer kaplar (ext4 ve NTFS dahil). Dosya sistemleri içeriği sadece farklı şekilde saklar, bu da (belirttiğim gibi, bazı durumlarda) daha yüksek performans sağlar.
Etkileme

Beni şaşırtan şey, aslında kontrol edilen parçanın her ikisinde de aynı boyutta olması gerektiğidir (Ext4 bölümümün NTFS bölümünün toplamı kadar kullanılan alan olduğundan), ancak Ext4 bölümünün denetimini saniyeler içinde yapar, NTFS bir saat sürer.
Brendan Long

1
@Brendan Cevabımdaki ilk bağlantıya bakarsanız, bazı insanlar dosya okumalarının NT4'e karşı ext4 kullanan bir sürücü ile daha hızlı olduğunu keşfettiler. İçinde tutulan sayısal veriler olsa da dosyanın aynıdır , bu edilmektedir aynı şekilde saklanmayan diskte. Ancak, NTFS'nin saatlerce sürdüğünü söylüyorsanız, muhtemelen sürücüdeki her sektörü doğrulamış olursunuz, bu nedenle ext4 dosya sistemi kontrolünde (büyük hız farkını açıklayan) bazı alternatif kontrolleri atlıyor olabilirsiniz. Disk yüzeyinin tamamını değil, her dosyayı doğrulamak çok daha hızlıdır.
Atılım

1
Bu cevap sadece ext4 ve NTFS konuşma noktalarının bir listesidir. Günlüklü dosya sistemlerinin normal çalışma sırasında kontrol edilmesi gerekmez. Otomatik kontrol, bir şeyin ciddi şekilde yanlış olduğu anlamına gelir. Neyin yanlış olduğunu bilmeden, kontrolün neden bu kadar yavaş olduğunu bilmek imkansız. Ext4'ün haftalık kontrollerine kıyasla elma ve portakal karşılaştırılıyor.
benrg

3

Anladığım kadarıyla ext4, şu anda hiçbir verinin bulunmadığı en büyük açık açık düğüm boşluğuna veri yazmaya çalışıyor. Bu, çoğu zaman tek bir dosyanın tüm içeriği için olduğu gibi okunması gerektiğinde gecikmeyi önemli ölçüde azaltır, böylece sürücüler kafasının verileri içeren her bloğu bulurken daha az arama yapması gerekir bu bir dosyayı oluşturur.

(Ext4) hala parçalanmış olabilir ancak NTFS'de olduğu gibi okuma / yazma performansını ciddi şekilde etkileyecek şekilde çok daha az olabilir. NTFS'de veriler, baş yolundaki ilk açık bloklara yazılır.

Böylece, kafanın nerede ya da nerede olduğu açık bloklar varsa, bu verilerin sığabileceği kadar çok yazar ve sonra kafa hareket etmek zorunda kaldığında, örneğin diskin başka bir yerine taşınmak zorunda kaldığında, diskin başka bir yerine geldiği yere yazar. diğer dosya hala yazılırken yeni yüklediğiniz bir programda açılmalıdır.
Bu, dosya büyükse, ayrı parçalarda birbirinden ayrılmış bloklar halinde yayılması muhtemel olduğu ve NTFS için birleştirme işlemine neden ihtiyaç duyulduğu anlamına gelir.

Ayrıca, sunucular sürekli olarak verinin 7/24 diskten sürekli olarak yazıldığı ve okunduğu bir sunucuda daha ağır I / O olduğu için kullanmıyor.

Ayrıca emin değilim ama chkdsk(ki hem inanıyorum hem de fsckyapmak) her dosyanın bütünlüğünü kontrol ederse o zaman da sadece NTFS üzerinde parçalanma hakkında açıkladığım nedeniyle karşılaştırıldığında daha yavaş olurdu.


Ne NTFS chkdsk ne de ext4 fsck okuma dosyası verileri. Anlamsız olurdu, çünkü bütünlüğünü doğrulamak için bir sağlama toplamı veya başka bir yol yoktur.
benrg

1

Windows'un hiçbir zaman başlangıçta NTFS birimini denetlemesi gerekmez. Eğer öyleyse, bir şey ciddi bir şekilde yanlış gitti - sadece BSOD veya elektrik kesintisinden çok daha kötü bir şey. Verilerinizin bir kısmının dosya sistemi meta verilerini bozan şeylerden de bozulma olasılığı yüksektir. Disk kontrolü bunu algılayamaz; tek amacı daha fazla yolsuzluktan kaçınmaktır.

KB2854570 bunun olabileceği bazı nedenleri listeler. Biri, bir birimi takılı bir birimi ile hazırda bekletme modunu hazırlar, birimin içeriğini değiştirir, sonra ekli birim (yeniden) ile hazırda bekletme modundan devam eder. Bunu yaparsanız, sessiz veri bozulması olasılığı yüksektir.

Ext4 dosya sisteminizin neden haftada bir kez kendini kontrol ettiğini bilmiyorum, ancak muhtemelen (umarız) haftalık olarak tekrarlayan karşılaştırılabilir bir kriz nedeniyle değil. Muhtemelen tam bir tutarlılık kontrolü değil, sadece rutin bir sağlık kontrolü yapıyordu.


1
Uzun bir süre boyunca, otomatik fsck her Nth dosya sistemi montajının çoğu Linux dağıtımında standart olduğunu kontrol eder. Günümüzde, bu seçenek genellikle varsayılan olarak kapalıdır.
kreemoweet

0

Çünkü UNIX / Linux Ext2 / Ext3 / Ext4 teknolojileri çok daha sıkı bir manyetik veri şeridi bırakır, ancak NTFS bir sprey kutusundan farklı olarak manyetik veri bitlerini bırakır. NTFS, Ext2 / 3/4 nadiren birleştirme gerektirdiği için düzenli "Defrag" gerektirir. Bu kadar basit. UNIX / Linux sürücünüzden bir şeye ihtiyacınız varsa, işletim sistemi, sıkıca mıknatıslanmış veri bitlerinin kesin olarak nereden alınacağını bilirken, NTFS'nin bunları almak için tüm diskleri karıştırması gerekir. NTFS günlük sistemi çok iyi çalışıyor - ancak, kafalar yerleştirilen manyetik bitleri almak için pong çalıyor. Çift FAT dosya sistemi iyi çalışır - ancak, tek parça bitlerinden oluşan çalılarınızı toplamak için tüm cehennem dönümlerini çalıştırmanız gerektiğinde - tüm bit dizelerini almak zorunda kalmazsanız ve toplayabilirseniz çok daha hızlıdır.

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.