Tôi đã có một máy Debian trên mạng LAN của mình dùng làm máy chủ dự phòng cho các máy khác. Nó có bốn ổ cứng kết hợp thành một thiết bị RAID 5 md phần mềm, trên đó là LVM và trên btrfs đó. Sao lưu được thực hiện bằng rsync và đối với một hệ thống tệp lớn mất hơn một giờ. Trong một thời gian dài tôi đã nghĩ rằng sẽ có rất ít tôi có thể làm về việc này.
Tuy nhiên, gần đây, tôi nhận thấy rằng hoạt động của ổ cứng rất khác nhau ở cả hai đầu của quá trình chuyển. Trong khi phía gửi, chạy Gentoo và chủ yếu sử dụng ext4, hầu như không có bất kỳ IO đĩa nào, thì bên nhận liên tục bận rộn. Vì hầu hết dữ liệu sẽ không thay đổi giữa các lần chuyển, tôi tin rằng việc đọc siêu dữ liệu sẽ chiếm phần lớn dữ liệu. Nhưng tôi thực sự ngạc nhiên nếu đọc inodes trong btrfs là công việc nhiều hơn so với làm tương tự trong ext4.
iotop
đĩa được xác nhận đọc khoảng 1-4 MB / s ở phía bên nhận, trong khi phía gửi chỉ có cụm 0,5 MB / s thỉnh thoảng.
Câu hỏi của tôi là, bất cứ ai có thể giải thích những gì đang xảy ra ở đây? Tốt nhất là với một số chỉ dẫn làm thế nào để giải quyết vấn đề nếu có thể.
Có lẽ có một số cờ điều chỉnh btrfs tôi có thể sử dụng, hoặc một cái gì đó tương tự. Tôi cần một FS có khả năng chụp nhanh trên máy chủ dự phòng và việc tôi cố gắng sử dụng FreeBSD và ZFS nhanh chóng dẫn đến một FS không nhất quán, vì vậy tôi thấy ít thay thế cho btrfs vào lúc này. Do đó, câu trả lời cho tôi biết sử dụng ext4 hoặc zfs có thể nhận được upvote nhưng không có dấu kiểm.
Tùy chọn Rsync đang sử dụng, theo yêu cầu của 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
Cũng như một loạt các -f
quy tắc để bỏ qua một số tệp.
Các tùy chọn gắn kết của btrfs được báo cáo bởi mount
vì
rw,nosuid,noexec,noatime,nospace_cache
Đặc biệt, điều này bao gồm noatime
cờ, vì vậy không nên có bất kỳ văn bản nào liên quan trừ khi thực sự có sự khác biệt trong một số tệp. Tôi đã thêm thông tin này để đáp lại câu trả lời của Kyle Jones .
dtrace
hoặc systemtap
tìm ra thời gian đang sử dụng.