Sistem File Linux Tercepat pada Disk Shingled


13

Ada minat yang cukup besar pada drive sirap. Ini menempatkan trek data yang begitu berdekatan sehingga Anda tidak dapat menulis ke satu trek tanpa merusak trek berikutnya. Ini dapat meningkatkan kapasitas sekitar 20% atau lebih, tetapi menghasilkan masalah penulisan amplifikasi. Ada pekerjaan yang sedang berlangsung pada filesystem yang dioptimalkan untuk drive Shingled, misalnya lihat: https://lwn.net/Articles/591782/

Beberapa disk shingled seperti arsip Seagate 8TB memiliki area cache untuk penulisan acak, memungkinkan kinerja yang layak pada sistem file generik. Disk ini bahkan bisa sangat cepat pada beberapa beban kerja umum, hingga sekitar 200MB / detik menulis. Namun, diharapkan bahwa jika cache tulis acak meluap, kinerjanya mungkin menurun. Agaknya, beberapa sistem file lebih baik dalam menghindari penulisan acak pada umumnya, atau pola penulisan acak cenderung meluap cache tulis yang ditemukan pada drive tersebut.

Apakah sistem file utama dalam kernel linux lebih baik dalam menghindari hukuman kinerja disk shingled daripada ext4?


Ada 2 jenis disk shingled di pasaran saat ini. Mereka yang membutuhkan OS yang didukung seperti disk HGST 10TB vs yang tidak membutuhkan dukungan OS tertentu seperti Arsip 8TB Seagate. Apa yang Anda maksud?
RJ-

Mengingat saya membatasi FS untuk yang mainstream, itu mungkin harus menjadi gaya Seagate?
gmatht

SMR seperti yang diterapkan pada drive saat ini tidak menghasilkan "tulis masalah amplifikasi seperti SSD". Mereka hanya beroperasi di sangat beberapa cara samar-samar seperti SSD.
qasdfdsaq

@ qasdfdsaq yang saya maksud "seperti dengan SSD".
gmatht

Jawaban:


4

Sistem file terstruktur Copy-on-Write dan Log yang intuitif dapat memberikan kinerja yang lebih baik pada disk shingled dengan mengurangi pengurangan penulisan acak. Benchmark agak mendukung ini, namun, perbedaan dalam kinerja ini tidak spesifik untuk disk shingled. Mereka juga terjadi pada disk yang tidak dihancurkan yang digunakan sebagai kontrol. Dengan demikian, beralih ke disk shingled mungkin tidak memiliki banyak relevansi dengan pilihan sistem file Anda.

Filesystem nilfs2 memberikan kinerja yang cukup baik pada disk SMR. Namun, ini karena saya mengalokasikan seluruh partisi 8TB, dan benchmark hanya menulis ~ 0.5TB sehingga pembersih nilf tidak perlu berjalan. Ketika saya membatasi partisi hingga 200GB, tolok ukur nilfs bahkan tidak berhasil diselesaikan. Nilfs2 mungkin merupakan pilihan yang baik untuk kinerja jika Anda benar-benar menggunakan disk "arsip" sebagai disk arsip di mana Anda menyimpan semua data dan snapshot yang dituliskan ke disk selamanya, karena kemudian nilfs cleaner tidak harus dijalankan.


Saya mengerti bahwa ST8000AS0002-1NA17Zdrive seagate 8TB yang saya gunakan untuk pengujian memiliki area cache ~ 20GB . Saya membuat mengubah pengaturan server file filebench default sehingga tolok ukur yang ditetapkan akan ~ 125GB, lebih besar dari area cache yang tidak dihancurkan:

set $meanfilesize=1310720
set $nfiles=100000
run 36000

Sekarang untuk data aktual. Jumlah ops mengukur kinerja fileserver "keseluruhan" sedangkan ms / op mengukur latensi dari append acak, dan dapat digunakan sebagai panduan kasar untuk kinerja penulisan acak.

$ grep rand *0.out | sed s/.0.out:/\ / |sed 's/ - /-/g' |  column -t
SMR8TB.nilfs   appendfilerand1   292176ops 8ops/s   0.1mb/s   1575.7ms/op    95884us/op-cpu [0ms - 7169ms]
SMR.btrfs      appendfilerand1  214418ops  6ops/s   0.0mb/s  1780.7ms/op  47361us/op-cpu  [0ms-20242ms]
SMR.ext4       appendfilerand1  172668ops  5ops/s   0.0mb/s  1328.6ms/op  25836us/op-cpu  [0ms-31373ms]
SMR.xfs        appendfilerand1  149254ops  4ops/s   0.0mb/s  669.9ms/op   19367us/op-cpu  [0ms-19994ms]
Toshiba.btrfs  appendfilerand1  634755ops  18ops/s  0.1mb/s  652.5ms/op   62758us/op-cpu  [0ms-5219ms]
Toshiba.ext4   appendfilerand1  466044ops  13ops/s  0.1mb/s  270.6ms/op   23689us/op-cpu  [0ms-4239ms]
Toshiba.xfs    appendfilerand1  368670ops  10ops/s  0.1mb/s  195.6ms/op   19084us/op-cpu  [0ms-2994ms]

Karena Seagate adalah 5980RPM, orang mungkin secara naif mengharapkan Toshiba 20% lebih cepat. Tolok ukur ini menunjukkannya kira-kira 3 kali (200%) lebih cepat, sehingga tolok ukur ini menghantam hukuman kinerja sirap. Kami melihat Shingled (SMR) disk masih tidak cocok dengan kinerja ext4 dengan pada disk (PMR) unshingled. Performa terbaik adalah dengan nilfs2 dengan partisi 8TB (sehingga pembersih tidak perlu dijalankan), tetapi bahkan kemudian secara signifikan lebih lambat daripada Toshiba dengan ext4.

Untuk membuat tolok ukur di atas lebih jelas, mungkin dapat membantu untuk menormalkannya relatif terhadap kinerja ext4 pada setiap disk:

                ops     randappend
SMR.btrfs:      1.24    0.74
SMR.ext4:       1       1
SMR.xfs:        0.86    1.98
Toshiba.btrfs:  1.36    0.41
Toshiba.ext4:   1       1
Toshiba.xfs:    0.79    1.38

Kita melihat bahwa pada disk SMR btrf memiliki sebagian besar keuntungan pada ops keseluruhan yang dimilikinya pada ext4, tetapi penalti pada penambahan acak tidak sedramatis rasio. Ini mungkin menyebabkan seseorang pindah ke btrfs pada disk SMR. Di sisi lain, jika Anda perlu menambahkan acak latensi rendah, patokan ini menyarankan Anda menginginkan xfs, terutama pada SMR. Kami melihat bahwa walaupun SMR / PMR dapat memengaruhi pilihan sistem file Anda, mengingat beban kerja yang Anda optimalkan tampaknya lebih penting.

Saya juga menjalankan patokan berbasis loteng. Durasi menjalankan loteng (pada partisi disk penuh 8TB SMR) adalah:

ext4:  1 days 1 hours 19 minutes 54.69 seconds
btrfs: 1 days 40 minutes 8.93 seconds
nilfs: 22 hours 12 minutes 26.89 seconds

Dalam setiap kasus repositori loteng memiliki statistik berikut:

                       Original size      Compressed size    Deduplicated size
This archive:                1.00 TB            639.69 GB            515.84 GB
All archives:              901.92 GB            639.69 GB            515.84 GB

Menambahkan salinan kedua dari disk 1 TB yang sama ke loteng membutuhkan waktu 4,5 jam untuk masing-masing dari ketiga sistem file ini. Tumpukan mentah dari tolok ukur dan smartctlinformasi ada di: http://pastebin.com/tYK2Uj76 https://github.com/gmatht/joshell/tree/master/benchmarks/SMR


Apakah Anda yakin perbedaan ini khusus untuk SMR vs PMR?
RJ-

Tidak juga. Saya akan menambahkan lebih banyak tolok ukur ketika saya melakukannya untuk menjawab pertanyaan seperti itu, tetapi seseorang dengan pengalaman lebih banyak benchmark mungkin bisa melakukan pekerjaan yang lebih baik daripada saya. Semoga ini cukup untuk memberikan gambaran kasar apakah mungkin ada baiknya mempertimbangkan beralih dari ext4 pada disk SMR.
gmatht

3
Disk shingled tidak menggunakan copy on write. Mereka menggunakan baca-modifikasi-tulis seperti menulis parsial ke array RAID-5. Tulisan acak tidak memperlambat disk SMR, bahkan mempercepatnya. 6000RPM drive SMR 10x lebih cepat secara acak daripada 15000 RPM drive non-SMR asalkan sesuai dengan cache, yang sebenarnya 30GB.
qasdfdsaq

@ qasdfdsaq Terima kasih, saya menghapus referensi untuk Kontrak Karya. Saya mengerti bahwa pada tingkat drive piring shingled jauh lebih lambat untuk menulis acak daripada PMR, tetapi bahwa SMR dapat meniru lebih cepat menulis karena cache; drive + cache PMR mungkin akan lebih cepat lagi. Apakah Anda memiliki referensi untuk angka 30GB? Tampaknya tidak ada nomor resmi, misalnya pada spesifikasi teknis Seagate. Juga, mengoptimalkan drive yang mengalami shingled mungkin merupakan masalah yang sama dengan mengoptimalkan array RAID 5?
gmatht

1
Saya sedang melakukan pencarian acak pada topik dan menemukan sebuah posting blog di f2fs: blog.schmorp.de/2015-10-08-smr-archive-drives-fast-now.html
Lester Cheung

1

Jika Anda rsync dari drive SMR, pastikan filesystem sudah terpasang read-onlyatau dengan noatimeopsi.

Jika tidak, drive SMR perlu menulis stempel waktu untuk setiap file yang dibaca rsync, yang mengakibatkan penurunan kinerja yang signifikan (dari sekitar 80 mb / dtk menjadi 3-5 mb / dtk di sini) dan head head / noise klik.

Jika Anda sudah memiliki pekerjaan rsync yang berjalan dengan kinerja yang buruk, tidak perlu menghentikannya, Anda dapat melakukan remount sistem file sumber dengan melakukan

sudo mount -o remount,ro  /path/to/source/fs

Efeknya tidak akan segera terlihat, bersabar dan tunggu 10 hingga 20 menit, sampai drive selesai menulis semua data yang masih ada di buffer-nya. Saran ini dicoba dan diuji ok.


Hal ini mungkin juga berlaku ketika rsyncing ke drive SMR, yaitu jika filesystem mencoba untuk memperbarui timestamp setelah file telah sepenuhnya ditulis ke disk. Beban kerja berurutan kegugupan ini dan kumpulan data yang besar terus-menerus ditulis ulang, berkontribusi terhadap keausan drive. Berikut ini dapat membantu:

sudo mount -t fs_type -o rw,noatime device /path/to/dest/fs

Ini harus dilakukan, sebelum rsync dijalankan; faktor-faktor lain dapat membuat opsi ini tidak signifikan, yaitu pembaruan FAT / MFT yang tidak terbaca, penulisan yang diparalelkan jika sistem file dioptimalkan terutama untuk SSD, dll.


Cobalah untuk menggunakan dd bs=32Mdan kemudian mengubah ukuran sistem file pada target SMR, jika Anda ingin membuat cadangan sistem file penuh (tidak perlu menginstalnya dan menjalankan rsync untuk mengangkut masing-masing dan setiap file dalam kasus ini).


Perangkat keras yang sebenarnya digunakan adalah drive Seagate yang dikelola drive konsumen SMR 8tb. Jarak tempuh Anda mungkin berbeda dengan perangkat keras lainnya.


2
Ini adalah jawaban yang baik, tetapi tidak untuk pertanyaan ini karena sama sekali tidak ada hubungannya dengan apa yang telah diposting poster asli. Saya mendorong Anda untuk membuat pertanyaan yang dijawab sendiri untuk jawaban ini. Seperti “Saya mencoba Rsync dari drive yang di-shingled dan kinerjanya buruk. Apa yang bisa saya lakukan untuk memperbaikinya? ”
JakeGould
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.