Saya memiliki mesin Debian di LAN saya yang berfungsi sebagai server cadangan untuk yang lain. Ini memiliki empat HDD digabungkan menjadi perangkat lunak RAID 5 md perangkat, pada LVM itu, dan pada btrfs itu. Cadangan dibuat menggunakan rsync, dan untuk sistem file besar butuh waktu lebih dari satu jam. Untuk waktu yang lama saya berpikir akan ada sedikit yang bisa saya lakukan tentang ini.
Namun baru-baru ini, saya perhatikan bahwa aktivitas HDD sangat berbeda di kedua ujung transfer. Sementara pihak pengirim, menjalankan Gentoo dan kebanyakan menggunakan ext4, hampir tidak memiliki IO disk sama sekali, sisi penerima selalu sibuk. Karena sebagian besar data tidak akan berubah di antara transfer, saya percaya bahwa membaca metadata harus menjadi bagian terbesar dari data. Tetapi saya akan sangat terkejut jika membaca inode dalam btrf jauh lebih berhasil daripada melakukan hal yang sama di ext4.
iotop
disk yang dikonfirmasikan membaca sekitar 1-4 MB / s di sisi penerima, sedangkan sisi pengirim hanya sesekali 0,5 MB / s meledak.
Pertanyaan saya adalah, adakah yang bisa menjelaskan apa yang terjadi di sini? Lebih disukai dengan beberapa indikasi bagaimana mengatasi masalah jika memungkinkan.
Mungkin ada beberapa flag tuning btrf yang bisa saya gunakan, atau yang serupa. Saya membutuhkan FS dengan kemampuan snapshot di server cadangan, dan upaya saya untuk menggunakan FreeBSD dan ZFS dengan cepat mengarah pada FS yang tidak konsisten, jadi saya melihat sedikit alternatif untuk btrf saat ini. Karenanya jawaban yang memberi tahu saya untuk menggunakan ext4 atau zfs mungkin menerima upvotes tetapi tidak ada tanda centang.
Opsi Rsync digunakan, seperti yang diminta oleh cjm :
--rsync-path='rsync --fake-super'
--archive # -rlptgoD
--hard-links # detect and preserve these
--acls
--xattrs
--sparse
--noatime # based on patch from samba #7249c1
--delete
--delete-delay
--fuzzy
--human-readable # size suffixes, base 1000
--stats
Serta banyak -f
aturan untuk menghilangkan beberapa file.
Opsi pemasangan btrfs dilaporkan oleh mount
as
rw,nosuid,noexec,noatime,nospace_cache
Secara khusus, ini termasuk noatime
flag, jadi tidak boleh ada tulisan yang terlibat kecuali sebenarnya ada perbedaan dalam beberapa file. Saya menambahkan informasi ini sebagai jawaban atas jawaban oleh Kyle Jones .
dtrace
atausystemtap
untuk mencari tahu di mana waktu yang dihabiskan.Jawaban:
Satu jawaban yang mungkin adalah bahwa sistem file jarak jauh dipasang secara default dengan opsi "atime". Waktu akses menulis untuk semua yang diakses rsync jarak jauh dikombinasikan dengan penalti tulis yang Anda derita dengan RAID 5 (komputasi paritas berarti membaca semua disk RAID sebelum Anda menulis ke salah satu dari mereka) dapat menjelaskan perbesaran I / O pada sisi jarak jauh.
Jika saya benar, Anda dapat mempercepat dengan memasang sistem file jarak jauh dengan opsi "noatime".
sumber
rw,nosuid,noexec,noatime,nospace_cache
.Saya menduga opsi --fake-super. Itu memberitahu rsync untuk menyimpan semua informasi metadata dalam atribut yang diperluas pada setiap file. Saya menduga mengakses atribut-atribut itu lambat. Coba uji coba dengan rsync ke root tanpa --fake-super. Anda tidak dapat menggunakan kembali cadangan yang sama karena atributnya tidak cocok.
sumber
--xattrs
/-X
Sangat lambat sebelum komitmen upstream (masih belum dalam rilis) yang dimasukkan ke rsync 3.1.2-2 Debian:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=799143#20
https://bugzilla.samba.org/show_bug.cgi?id=5324
sumber