Hangi linux dosya sistemi SSD ile en iyi şekilde çalışır


119

Wiki'den:

Hayati TRIM işlevi, 2.6.33 çekirdeği ile başlayan Linux 2010 tarafından desteklenmektedir (2010 başlarında mevcuttur). Ancak, çeşitli dosya sistemleri arasındaki destek hala tutarsızdır veya yoktur. Kurulum yazılımı tarafından uygun bölüm hizalaması da yapılmaz.

Peki, hangi dosya sistemi SSD için en iyi şekilde çalışır ve kurulum sırasında TRIM + bölüm hizalamasını destekler ve Ubuntu'da mevcuttur?

Yanıtlar:


89

Dosya sistemi EXT4 + TRIM:

  • TRIM özellikli EXT4, yazma-yazma işlemlerini sınırladıkları için, SSD sürücüye gereksiz yazma döngülerini azaltarak performansı artırır.
  • Ubuntu ve diğer bazı Linux lezzetleri, kutudaki TRIM ile EXT 4'ü destekler.

SWAP Bölümü:

  • Yazma döngüsünü azaltmak için, SSD'de bir SWAP alanınız olmadığından emin olun.
  • Mekanik bir sürücünüz varsa, mekanik sürücüde bir SWAP alanı oluşturmalı ve SSD'de bulundurmaktan kaçınmalısınız.

Bölüm Hizalaması:

  • Bölüm, temiz bir 1 MB sınırında başlamalıdır, böylece Dosya Sisteminin blok boyutu SSD'nin blok boyutuyla aynı hizadadır.

Öyleyse, EXT4 + TRIM'i mekanik bir sabit sürücüdeki SWAP ile veya SSD'de SWAP olmadan kullanın.

Yukarıdakiler Kaynak'a atıfta bulunarak uygulanabilir: SSD Performansı Nasıl En Üst Düzeye Çıkarılır .


GPT kullanarak modern bir yöntemdir gdisk& grub 2.0.x(Birisi bir cevap aşağıda söz sanırım) ve MBR eski kullanarak eski yöntemdir grub 0.9.7ve fdisk.. burada daha bulabilirsiniz: wiki.archlinux.org/index.php/Solid_State_Drives
aliasgar

7
Ayrıca nodiratimene zaman belirleyeceğinizi belirtmeniz de gerekmez noatime. Anlaştık ki, diğer inekler için havalı ve ileri görünüyor, ancak noatimeinode'lardaki zayiatı devre dışı bırakıyor ve dizinler de inode olduğu için "ellerini yıka ve başparmaklarını da yıka" demek gibi . :)
Redsandro

Tecrübem dışında hiçbir zamanlayıcının ("noop") son başvuru tarihinden daha hızlı çalışmadığını söyleyebilirim.
drumfire

5
Hayır, " Linux takas bölümleri varsayılan olarak, temel blok cihazı TRIM'i desteklediğinde, bunları kapatma veya bir defalık veya sürekli TRIM işlemleri arasında seçim yapma imkanıyla TRIM işlemlerini gerçekleştiriyor." bu yüzden, her sayfa değişiminin gerçekleştiği çok fazla zaman
harcayan

2
@aliasgar F2FS ext4'e karşı iyi bir seçim mi?
SebMa

67

Kısa cevap

  • Seç ext4 , ve ya birlikte monte discardseçeneğiyle TRIM destek veya FITRIM kullanmak (aşağıya bakınız). Ayrıca noatime"SSD aşınmasından" korkuyorsanız seçeneği kullanın .

  • İşlemler arasında adalet sağlayan ve otomatik SSD desteğine sahip olduğu için çoklu uygulama sunucularında varsayılan G / Ç zamanlayıcınızı (CFQ) değiştirmeyin . Ancak, yük altında daha iyi yanıt almak için masaüstünde Son Tarihi kullanın .

  • Uygun veri uyumunu kolayca garantilemek için, her bölümün başlangıç ​​sektörü 2048 katından fazla olmalıdır (= 1 MiB). fdisk -cu /dev/sdXOnları oluşturmak için kullanabilirsiniz . Son dağıtımlarda, sizin için otomatik olarak bu ilgilenir.

  • SSD'de takas kullanmadan önce iki kez düşünün. HDD’nin takasına kıyasla muhtemelen çok daha hızlı olacaktır, ancak diski daha hızlı takacaktır (bu uygun olmayabilir, aşağıya bakınız).

Uzun cevap

  • Dosya sistemleri:

Ext4 en yaygın Linux dosya sistemidir (bakımlı). SSD ile iyi performans sağlar ve zaman içinde iyi SSD performansını korumak için TRIM (ve FITRIM) özelliğini destekler (bu, daha sonra hızlı yazma erişimi için kullanılmayan bellek bloklarını siler). NILFS özellikle flash bellek sürücüleri için tasarlanmıştır ancak yok değil gerçekten daha iyi performans ext4 karşılaştırmalarına. Btrfs hala deneysel olarak (ve gerçekten daha iyi yapmaz ya ).

  • SSD performansı ve TRIM:

TRIM özelliği dosya sistemi tarafından artık kullanılmamaktadır SSD blokları temizler. Bu, uzun vadeli yazma performansını optimize eder ve tasarımları nedeniyle SSD'de önerilir. Bu, dosya sisteminin sürücüye bu bloklar hakkında bilgi vermesi gerektiği anlamına gelir. discardDağı seçeneği ext4 böyle yayınlayacak TRIM dosya sistemi blokları serbest zaman komutları. Bu çevrimiçi atma .

Ancak, bu davranış genel gider üzerinde küçük bir performans anlamına gelir. Linux 2.6.37’den bu yana FITRIM ile discardara sıra parti atma işlemi kullanmaktan kaçınmayı tercih edebilirsiniz (örneğin crontab'dan). Yardımcı fstrimprogram bunu (çevrimiçi) ve -E discardseçenek olarak yapar fsck.ext4. Ancak, bu araçların "son" sürümüne ihtiyacınız olacak.

  • SSD aşınması:

SSD bu konuda sınırlı bir ömre sahip olduğundan sürücünüzdeki yazıları sınırlamak isteyebilirsiniz. Ancak çok fazla endişelenmeyin , bugünün en kötü 128 GB SSD'si 5 yıldan fazla bir süre boyunca günde en az 20 GB yazılı veriyi destekleyebilir (hücre başına 1000 yazma döngüsü). Daha iyi olanlar (ve aynı zamanda daha büyük olanlar) daha uzun sürebilir: muhtemelen o zamana kadar yerini almış olacaksınız.

Eğer SSD'de bir takas kullanmak istiyorsanız , çekirdek dönmeyen bir disk görecek ve takas kullanımını rasgele bir şekilde belirleyecektir (çekirdek seviyesi aşınma seviyelendirmesi): SStakas etkin olduğunda çekirdek mesajında bir (Katı Hal) göreceksiniz :

2097148k takas ekleyerek / dev / sda1 üzerine. Öncelik: -1 kapsamı: 1 boyunca: 2097148k SS

  • G / Ç Zamanlayıcıları:

Ayrıca, takma adın cevabının çoğuyla aynı fikirdeyim (çoğu bu web sitesinden kopyaladı mı? - bu web sitesinden kopyalandı ), ancak programlayıcı kısmına kısmen katılmıyorum . Varsayılan olarak, son tarih zamanlayıcısı , asansör algoritmasını uyguladığı için döner diskler için optimize edilmiştir . Öyleyse bu kısmı açıklığa kavuşturalım.

Zamanlayıcılara uzun cevap

2.6.29 çekirdeğinden başlayarak, SSD diskleri otomatik olarak algılanır ve bunu aşağıdakilerle doğrulayabilirsiniz:

cat /sys/block/sda/queue/rotational

1Sabit diskler ve 0bir SSD için almalısınız .

Şimdi, CFQ zamanlayıcısı bu bilgilere dayanarak davranışını uyarlayabilir. Linux 3.1'den beri, çekirdek dokümantasyon cfq-iosched.txtdosyası şunları söylüyor :

CFQ, SSD'ler için bazı optimizasyonlara sahiptir ve daha yüksek kuyruk derinliğini destekleyebilecek dönmeyen bir ortam algılarsa (bir seferde uçuş sırasında birden fazla istek), [...].

Ayrıca, Son Tarih Çizelgesi zamanlayıcı, sektör sayısına göre rotasyonel disklerdeki sırasız kafa hareketlerini sınırlamaya çalışır. Çekirdek belgeden alıntı deadline-iosched.txt, fifo_batch seçenek açıklaması :

Talepler, artan sektör sırasına göre hizmet verilen belirli bir veri yönünün (okuma veya yazma) '' toplu '' olarak gruplanır.

Ancak, bir SSD kullanırken bu parametrenin 1 olarak ayarlanması ilginç olabilir:

Bu parametre, istek başına gecikme süresi ve toplam çıktı arasındaki dengeyi ayarlar. Düşük gecikme birincil endişe olduğunda, daha küçük daha iyidir (1 değeri ilk gelene ilk davranışı verir). Fifo_batch değerinin arttırılması genellikle gecikme değişiminin maliyetine bağlı olarak verimi arttırır.

Bazı ölçütler , farklı zamanlayıcılar arasında performansta çok az fark olduğunu göstermektedir . Öyleyse neden adaleti önermiyoruz ? CFQ tezgahta nadiren kötü olduğunda . Bununla birlikte, masaüstü kurulumlarında, tasarım nedeniyle Deadline'ı kullanırken genellikle daha iyi yanıt verirsiniz (muhtemelen daha düşük üretim maliyetiyle).

Bununla birlikte, daha iyi bir kriter Deadline ile kullanmayı denerdi fifo_batch=1.

Varsayılan olarak SSD'lerde Son Tarihi kullanmak için, /etc/udev.d/99-ssd.rulesaşağıdakileri söyleyerek bir dosya oluşturabilirsiniz :

# all non-rotational block devices use 'deadline' scheduler
# mostly useful for SSDs on desktops systems
SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="deadline"

Son dağıtımlarda otomatik olarak bölümleme uyumunun sağlanmasından kastınız ne? Örneğin, ubuntu kurulumu sırasında manuel bölümleme kullandığınızda veya gparted tarafından bölümlendirme yaparken de geçerli midir?
jarno

2
En son yapılan dağıtımlarda @jarno (birkaç yıldır), fdisk'ten grafiksel öğelere kadar olan bölümleme araçları, aygıt başlangıcından itibaren 1Mb katlarında bölüm hizalamaları oluşturmada otomatik varsayılan olma eğilimindedir. Bu, öncelikli olarak, doğada 2 ^ n olan 512 bayt, 4k, 8k ve yarım bazilyon diğer blok / küme boyutlarıyla hizalanır. Bunu yapmak için önemli bir çaba göstermediğiniz sürece bir bölümü yanlış hizalamak neredeyse imkansız hale gelir.
katil

13

Archlinux Solid State Drives makalesinde , Dosya Sistemi Seçimi bölümünde :

Ext2 / 3/4, Btrfs, vb. Dahil olmak üzere dosya sistemleri için birçok seçenek vardır.

Btrfs
Btrfs desteği, Linux çekirdeğinin 2.6.29 ana sürümüne dahil edilmiştir. Bazıları üretim kullanımı için yeterince olgun olmadığına inanırken, bu potansiyel halefi için ext4'ün ilk uygulayıcıları da vardır. Kullanıcıların daha fazla bilgi için Btrfs makalesini okumaları önerilir .

Ext4
Ext4, SSD desteği olan başka bir dosya sistemidir. 2.6.28'den beri stabil olarak kabul edilir ve günlük kullanım için yeterince olgundur. Btrfs'in aksine ext4 disk yapısını otomatik olarak algılamaz; kullanıcılar fstab'deki discard mount seçeneğini kullanarak TRIM komut desteğini açıkça etkinleştirmelidir (veya tune2fs -o discard / dev / sdaX ile).

Hem Btrfs hem de Ext4, SSD'nin verimli kullanımı için iki ana gereksinimi yerine getirir:

  • Dosya sistemi ATA_TRIM komutlarını altta yatan SSD'ye verebilmelidir
  • Dosya sistemi diske gereksiz yazma yapılmamalıdır

Performans için, başka iki gereksinim vardır:

  • Bölümlerin SSD’nin blok boyutuyla aynı hizada olması gerekir
  • TRIM, her bir Ext4 formatlı bölüm için açıkça etkinleştirilmelidir.

Birincisi bugünlerde çoğu Linux kurulumunda otomatiktir. fdisk, "-cu" bayraklarıyla başlarsa, 1024KB sınırında da bölümler oluşturacaktır.

İkincisi Btrfs için otomatiktir, ancak Ext4 için bu, "/ etc / fstab" dosyasındaki her bir Ext4 bölümü için takma seçenekleri listesine "atma" eklenerek elle yapılır. Daha fazla ayrıntı için bu bkz howto .

Kanımca, Ext4 için fstab ile küçük bir ihtiyaç duymak, bu olgun ve mükemmel dosya sistemini kullanmamak için bir neden değil.


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.