Sistem file linux mana yang paling berhasil dengan SSD

119

Dari wiki:

Fungsi TRIM yang vital didukung oleh OS Linux yang dimulai dengan kernel 2.6.33 (tersedia awal 2010). Namun, dukungan di antara berbagai sistem file masih tidak konsisten atau tidak ada. Penyelarasan partisi yang tepat juga tidak dilakukan oleh perangkat lunak instalasi.

Jadi, sistem file mana yang paling cocok untuk SSD dan mendukung perataan partisi TRIM + selama pemasangan dan tersedia di Ubuntu?

hbt
sumber

Jawaban:

89

Filesystem EXT4 + TRIM:

  • EXT4 dengan TRIM meningkatkan kinerja dengan mengurangi siklus penulisan yang tidak perlu ke drive SSD karena mereka membatasi siklus penulisan-ulang.
  • Ubuntu dan beberapa rasa Linux lainnya mendukung EXT 4 dengan TRIM di luar kotak.

Partisi SWAP:

  • Pastikan Anda tidak memiliki ruang SWAP di SSD, lagi untuk mengurangi siklus tulis.
  • Jika Anda memiliki drive mekanis, maka Anda harus membuat ruang SWAP pada drive mekanik, dan hindari memilikinya di SSD.

Penyelarasan Partisi:

  • Partisi harus dimulai pada batas 1MB yang bersih sehingga ukuran blok dari Filesystem sejajar dengan ukuran blok SSD.

Jadi gunakan EXT4 + TRIM dengan SWAP pada hard drive mekanis atau tanpa SWAP pada SSD.

Di atas dapat diimplementasikan dengan merujuk pada Sumber: Cara Memaksimalkan Kinerja SSD .

aliasgar
sumber
GPT adalah metode modern menggunakan gdisk& grub 2.0.x, (saya kira seseorang menyebutkannya di bawah dalam jawaban) dan MBR adalah metode lama menggunakan yang lama grub 0.9.7dan fdisk.. Anda dapat menemukan lebih banyak di sini: wiki.archlinux.org/index.php/Solid_State_Drives
aliasgar
7
Tidak perlu menentukan nodiratimekapan Anda juga menentukan noatime. Setuju, itu terlihat keren dan canggih untuk sesama kutu buku, tetapi karena noatimemenonaktifkan atime pada inode, dan direktori juga inode, itu seperti mengatakan "cuci tangan Anda, dan cuci juga ibu jari Anda". :)
Redsandro
Dari pengalaman saya dapat mengatakan bahwa tidak ada scheduler ("noop") bekerja lebih cepat dari batas waktu.
drumfire
5
Tidak, " partisi swap Linux secara default melakukan operasi TRIM ketika perangkat blok yang mendasarinya mendukung TRIM, dengan kemungkinan untuk mematikannya, atau untuk memilih antara operasi TRIM satu kali atau kontinu." jadi partisi swap harus ditempatkan pada SSD untuk memanfaatkan waktu akses cepat, yang akan menimbulkan banyak waktu setiap halaman swap terjadi
phuclv
2
@aliasgar Apakah F2FS pilihan yang baik vs ext4?
SebMa
67

Jawaban singkat

  • Pilih ext4 , dan pasang dengan discardopsi untuk dukungan TRIM , atau gunakan FITRIM (lihat di bawah). Juga gunakan noatimeopsi jika Anda takut "SSD wear".

  • Jangan mengubah penjadwal I / O (CFQ) default Anda di server multi-aplikasi , karena memberikan keadilan antar proses dan memiliki dukungan SSD otomatis. Namun, gunakan Tenggat waktu di desktop untuk mendapatkan respons yang lebih baik di bawah pemuatan.

  • Untuk dengan mudah menjamin penyelarasan data yang tepat, sektor awal setiap partisi harus merupakan kelipatan 2048 (= 1 MiB). Anda dapat menggunakannya fdisk -cu /dev/sdXuntuk membuatnya. Pada distribusi terbaru, ini akan secara otomatis menangani ini untuk Anda.

  • Berpikir dua kali sebelum menggunakan swap pada SSD. Mungkin akan jauh lebih cepat dibandingkan dengan menukar pada HDD, tetapi juga akan memakai disk lebih cepat (yang mungkin tidak relevan, lihat di bawah).

Jawaban panjang

  • Sistem File:

Ext4 adalah sistem file Linux yang paling umum (terpelihara dengan baik). Ini memberikan kinerja yang baik dengan SSD dan mendukung fitur TRIM (dan FITRIM) untuk menjaga kinerja SSD yang baik dari waktu ke waktu (ini membersihkan blok memori yang tidak digunakan untuk akses menulis yang lebih cepat di kemudian hari). NILFS dirancang khusus untuk drive memori flash, tetapi tidak benar - benar berkinerja lebih baik daripada ext4 pada benchmark. Btrfs masih dianggap eksperimental (dan juga tidak benar-benar berkinerja lebih baik ).

  • Kinerja SSD & TRIM:

Fitur TRIM membersihkan blok SSD yang tidak digunakan lagi oleh sistem file. Ini akan mengoptimalkan kinerja penulisan jangka panjang dan direkomendasikan pada SSD karena desainnya. Ini berarti bahwa sistem file harus dapat memberi tahu drive tentang blok-blok itu. The discardgunung pilihan ext4 akan mengeluarkan seperti TRIM perintah ketika blok filesystem dibebaskan. Ini adalah pembuangan online .

Namun, perilaku ini menyiratkan sedikit overhead kinerja. Sejak Linux 2.6.37, Anda dapat menghindari menggunakan discarddan memilih untuk melakukan batch batch sesekali dengan FITRIM sebagai gantinya (misalnya dari crontab). The fstrimutilitas melakukan hal ini (online), serta -E discardpilihan fsck.ext4. Anda akan membutuhkan versi "terbaru" dari alat-alat ini.

  • Memakai SSD:

Anda mungkin ingin membatasi penulisan pada drive Anda karena SSD memiliki masa pakai yang terbatas dalam hal ini. Namun jangan terlalu khawatir , SSD 128 GB terburuk saat ini dapat mendukung setidaknya 20 GB data tertulis per hari selama lebih dari 5 tahun (1000 siklus tulis per sel). Yang lebih baik (dan juga yang lebih besar) dapat bertahan lebih lama: Anda kemungkinan besar telah menggantinya saat itu.

Jika Anda ingin menggunakan swap pada SSD, kernel akan melihat disk non-rotasi dan akan mengacak penggunaan swap (levelling wear leveling kernel): Anda kemudian akan melihat SS(Solid State) dalam pesan kernel ketika swap diaktifkan:

Menambahkan 2097148k swap pada / dev / sda1. Prioritas: -1 luasan: 1 melintasi: 2097148k SS

  • Penjadwal I / O:

Juga, saya setuju dengan sebagian besar jawaban aliasgar (bahkan jika sebagian besar dari itu adalah - secara umum? - disalin dari situs web ini ), tetapi sebagian saya harus tidak setuju pada bagian penjadwal . Secara default, batas waktu scheduler yang dioptimalkan untuk disk rotasi karena mengimplementasikan algoritma lift . Jadi, mari kita perjelas bagian ini.

Jawaban panjang tentang penjadwal

Mulai dari kernel 2.6.29, disk SSD terdeteksi secara otomatis, dan Anda dapat memverifikasi ini dengan:

cat /sys/block/sda/queue/rotational

Anda harus mendapatkan 1hard disk dan 0SSD.

Sekarang, penjadwal CFQ dapat menyesuaikan perilakunya berdasarkan informasi ini. Sejak linux 3.1, cfq-iosched.txtfile dokumentasi kernel mengatakan :

CFQ memiliki beberapa optimisasi untuk SSD dan jika mendeteksi media non-rotasi yang dapat mendukung kedalaman antrian yang lebih tinggi (beberapa permintaan saat terbang pada satu waktu), [...].

Juga, Penjadwal Tenggat Waktu mencoba membatasi gerakan kepala yang tidak berurutan pada cakram rotasi, berdasarkan pada nomor sektor. Mengutip dokumen kernel deadline-iosched.txt, fifo_batch deskripsi opsi :

Permintaan dikelompokkan menjadi `kumpulan 'dari arah data tertentu (baca atau tulis) yang dilayani dalam urutan sektor yang meningkat.

Namun, menyetel parameter ini ke 1 saat menggunakan SSD mungkin menarik:

Parameter ini menyetel keseimbangan antara latensi per permintaan dan throughput agregat. Ketika latensi rendah menjadi perhatian utama, lebih kecil lebih baik (di mana nilai 1 hasil perilaku first-come first-served). Meningkatkan fifo_batch umumnya meningkatkan throughput, dengan biaya variasi latensi.

Beberapa tolok ukur menunjukkan bahwa ada sedikit perbedaan kinerja antara penjadwal yang berbeda. Lalu, mengapa tidak merekomendasikan keadilan ? ketika CFQ jarang buruk di bangku cadangan . Namun, pada pengaturan desktop, Anda biasanya akan mengalami respons yang lebih baik menggunakan Tenggat di bawah beban, karena desainnya (mungkin dengan biaya throughput yang lebih rendah).

Yang mengatakan, benchmark yang lebih baik akan mencoba menggunakan Tenggat dengan fifo_batch=1.

Untuk menggunakan Batas Waktu pada SSD secara default, Anda dapat membuat file, katakan /etc/udev.d/99-ssd.rulessebagai berikut:

# 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"
Totor
sumber
Apa yang Anda maksudkan dengan perataan partisi yang secara otomatis ditangani pada distribusi terbaru? Apakah ini berlaku juga ketika Anda menggunakan partisi secara manual selama mis. Instalasi ubuntu atau ketika melakukan partisi dengan gparted?
jarno
2
@jarno dalam distribusi paling baru (untuk beberapa tahun sekarang), alat pemartisi, dari fdisk hingga hal-hal grafis, cenderung otomatis-default untuk membuat penyelarasan partisi pada kelipatan 1 MB dari mulai perangkat. Ini terlebih dahulu sejajar dengan 512byte, 4k, 8k, dan setengah bazillion ukuran blok / kluster lainnya yang 2 ^ n di alam. Itu membuat hampir tidak mungkin untuk menyelaraskan partisi kecuali Anda melakukan upaya signifikan untuk melakukannya.
killermist
13

Artikel archlinux Solid State Drive mengatakan di bagian Pilihan Sistem File :

Ada banyak opsi untuk sistem file termasuk Ext2 / 3/4, Btrfs, dll.

Btrfs
Dukungan Btrfs telah disertakan dengan rilis utama Linux kernel 2.6.29. Beberapa merasa bahwa itu tidak cukup matang untuk penggunaan produksi sementara ada juga pengadopsi awal dari calon penerus ini untuk ext4. Pengguna didorong untuk membaca artikel Btrfs untuk info lebih lanjut.

Ext4
Ext4 adalah sistem file lain yang memiliki dukungan untuk SSD. Itu dianggap stabil sejak 2.6.28 dan cukup matang untuk penggunaan sehari-hari. Berlawanan dengan Btrfs, ext4 tidak secara otomatis mendeteksi sifat disk; pengguna harus secara eksplisit mengaktifkan dukungan perintah TRIM menggunakan opsi mount discard di fstab (atau dengan tune2fs -o discard / dev / sdaX).

Baik Btrfs dan Ext4 memenuhi dua persyaratan utama untuk penggunaan SSD yang efisien:

  • Sistem file harus dapat mengeluarkan perintah ATA_TRIM ke SSD yang mendasarinya
  • Sistem file tidak boleh melakukan penulisan yang tidak dibutuhkan ke disk

Untuk kinerja, ada dua persyaratan lain:

  • Partisi harus disejajarkan dengan ukuran blok SSD
  • TRIM harus diaktifkan secara eksplisit untuk setiap partisi yang diformat Ext4

Yang pertama sekarang otomatis dengan sebagian besar penginstal Linux. fdisk juga akan membuat partisi di perbatasan 1024KB jika dimulai dengan flag "-cu".

Yang kedua adalah otomatis untuk Btrfs, tetapi untuk Ext4 ini dilakukan secara manual dengan menambahkan "buang" ke daftar opsi mount untuk setiap partisi Ext4 di file "/ etc / fstab". Untuk lebih jelasnya lihat ini howto .

Menurut pendapat saya, ini diperlukan sedikit mengutak-atik fstab untuk Ext4 bukan alasan untuk tidak menggunakan sistem file yang matang dan sangat baik ini.

harrymc
sumber