Phiên bản ngắn : rm -rf mydir
, với mydir
(đệ quy) chứa 2,5 triệu tệp, mất khoảng 12 giờ trên một máy chủ yếu.
Thông tin thêm : Hầu hết các tệp bị xóa là các liên kết cứng đến các tệp trong các thư mục khác (thư mục bị xóa thực sự là bản sao lưu cũ nhất được tạo bởi rsnapshot
; rm
lệnh thực sự được đưa ra bởi rsnapshot
). Vì vậy, phần lớn các mục trong thư mục đang bị xóa - nội dung tệp không nhiều; nó theo thứ tự vài chục GB.
Tôi không chắc chắn đó btrfs
là thủ phạm. Tôi nhớ lại sao lưu cũng rất chậm trước khi tôi bắt đầu sử dụng btrfs
, nhưng tôi không chắc chắn rằng sự chậm chạp đang trong quá trình xóa.
Máy là Intel Core i5 2.67 GHz với RAM 4 GB. Nó có hai đĩa SATA: một có hệ điều hành và một số thứ khác, và đĩa sao lưu là 1 TB WDC WD1002FAEX-00Z3A0
. Bo mạch chủ là Asus P7P55D.
Chỉnh sửa : Máy là một bản wheezy Debian với Linux 3.16.3-2~bpo70+1
. Đây là cách hệ thống tập tin được gắn kết:
root@thames:~# mount|grep rsnapshot
/dev/sdb1 on /var/backups/rsnapshot type btrfs (rw,relatime,compress=zlib,space_cache)
Chỉnh sửa : Sử dụng rsync -a --delete /some/empty/dir mydir
mất khoảng 6 giờ. Một sự cải thiện đáng kể so với rm -rf
, nhưng tôi vẫn còn quá nhiều. ( Giải thích lý do tại sao rsync
nhanh hơnrm
: "[M] hệ thống tập tin Ost lưu trữ cấu trúc thư mục của họ ở định dạng btree, thứ tự [in] mà bạn xóa tệp là ... quan trọng. Người ta cần tránh cân bằng lại btree khi bạn thực hiện hủy liên kết .... rsync -a --delete
... không xóa theo thứ tự ")
Chỉnh sửa : Tôi đã đính kèm một đĩa khác có 2,2 triệu tệp (đệ quy) trong một thư mục, nhưng trên XFS. Dưới đây là một số kết quả so sánh:
On the XFS disk On the BTRFS disk
Cached reads[1] 10 GB/s 10 GB/s
Buffered reads[1] 80 MB/s 115 MB/s
Walk tree[2] 11 minutes 43 minutes
rm -rf mydir[3] 7 minutes 12 hours
[1] Với hdparm -T /dev/sdX
và hdparm -t /dev/sdX
.
[2] Thời gian thực hiện để chạy find mydir -print|wc -l
ngay sau khi khởi động.
[3] Trên đĩa XFS, điều này xảy ra ngay sau khi đi trên cây find
. Trên đĩa BTRFS, đây là phép đo cũ (và tôi không nghĩ rằng đó là với cây được lưu trong bộ nhớ cache).
Nó dường như là một vấn đề với btrfs
.
btrfs
? Điều này là có thể, tất nhiên, nhưng bạn có nghĩ rằng nó có thể có liên quan? Ngay bây giờ tôi không thể nhớ tại sao tôi quyết định thử btrfs
.
btrfs
vì tôi muốn nén trong suốt. Bây giờ: rsnapshot
sử dụng các liên kết cứng. Nó không có bất kỳ tùy chọn để không sử dụng các liên kết cứng. Vì vậy, các liên kết cứng trùng lặp với btrfs
chức năng sao chép trên ghi, nhưng tôi không thể làm gì nhiều về điều đó.