Btrfs Chống phân mảnh tệp / thư mục


9

Tôi vừa cài đặt Ubuntu 11.10 trên hệ thống tệp Btrfs và tôi muốn hỏi một câu hỏi về phân mảnh tệp.

Tôi có thực sự cần chống phân mảnh các tập tin hoặc toàn bộ hệ thống?

Chống phân mảnh # btrfs phân mảnh hệ thống tập tin / pool1 Chống phân mảnh

Phân mảnh Btrfs


Không, btrs, ext4,3,2, ETC ... không yêu cầu bạn chống phân mảnh ổ đĩa, họ phải chịu đựng điều đó như bất kỳ hệ thống tập tin nào khác.
Uri Herrera

Nhưng không nơi nào giống với NTFS.
Uri Herrera

Câu trả lời:


13

Bạn không thực sự cần phải chống phân mảnh các hệ thống tập tin Btrfs bằng tay.

Có, Btrfs là COW (copy-on-write), nghĩa là nó phân mảnh các tệp nhiều hơn Ext, nhưng điều này được đề cập trong một số khía cạnh của thiết kế, bao gồm khả năng dễ dàng chống phân mảnh hệ thống tệp khi trực tuyến. Đoạn trích này cung cấp thêm chi tiết (nhấn mạnh của tôi):

Tự động chống phân mảnh

Hệ thống tập tin COW (copy-on-write) có nhiều ưu điểm, nhưng chúng cũng có một số nhược điểm, ví dụ như phân mảnh. Btrfs lần đầu tiên đưa ra dữ liệu khi các tệp được ghi vào đĩa, nhưng thiết kế COW ngụ ý rằng bất kỳ sửa đổi nào sau đó đối với tệp không được ghi lên trên dữ liệu cũ, nhưng sẽ được đặt trong một khối miễn phí, sẽ được đặt trong một khối miễn phí gây ra sự phân mảnh (cơ sở dữ liệu RPM là một trường hợp phổ biến của vấn đề này). Ngoài ra, nó chịu các vấn đề phân mảnh phổ biến cho tất cả các hệ thống tập tin.

Btrfs đã cung cấp các lựa chọn thay thế để chống lại vấn đề này: Đầu tiên, nó hỗ trợ chống phân mảnh trực tuyến bằng cách sử dụng lệnh btrfs filesystem defragment. Thứ hai, nó có tùy chọn gắn kết -o nodatacow, vô hiệu hóa COW cho dữ liệu. Bây giờ btrfs thêm tùy chọn thứ ba, -o autodefragtùy chọn gắn kết. Cơ chế này phát hiện việc ghi ngẫu nhiên nhỏ vào các tệp và xếp hàng chúng cho một quy trình chống phân mảnh tự động, vì vậy hệ thống tệp sẽ tự chống phân mảnh trong khi sử dụng. Nó không phù hợp với ảo hóa hoặc khối lượng công việc cơ sở dữ liệu lớn, nhưng hoạt động tốt cho các tệp nhỏ hơn như cơ sở dữ liệu vòng / phút, SQLite hoặc bdb.

Vì vậy, miễn là bạn không có kế hoạch chạy phần mềm chuyên sâu IO như cơ sở dữ liệu dưới tải trọng đáng kể, bạn sẽ ổn, miễn là bạn gắn kết hệ thống tệp của mình với autodefragtùy chọn.

Để kiểm tra sự phân mảnh của các tệp, bạn có thể sử dụng tiện ích filefrag :

$ find /path -type f -exec filefrag {} + >frag.list
# Now you can use your favourite tools to sort the data

Trên các hệ thống Systemd, /var/log/journal/có lẽ sẽ bị phân mảnh nhiều nhất. Bạn cũng có thể xem ~/.mozillavà các cơ sở dữ liệu trình duyệt khác.

Để chống phân mảnh, sử dụng:

$ sudo btrfs fi defrag -r /path

Làm thế nào để tôi biết phân mảnh của nó .... hoặc không ... lệnh để kiểm tra trạng thái chống phân mảnh
One Zero

2
Câu trả lời này là sai theo wiki BTRFS : btrfs gotchas . Vấn đề phân mảnh tập tin có thể dễ dàng được sao chép bằng cách chạy systemd-journald trên một khối lượng btrfs. Mặc dù tôi chưa thử nghiệm nhưng tùy chọn autodefrag giải quyết vấn đề này.
Jonas Schäfer

Tôi đã sử dụng btrfs toàn thời gian ngay bây giờ cho ít nhất 18 tháng, với systemd, firefox, vv Một kiểm tra nhanh chóng sử dụng filefragcho thấy các file tạp chí đang thực sự nặng nề phân mảnh (trung bình 10k mức độ mỗi), nhưng tôi đã không quan sát CPU spiking cũng không tác động hiệu suất. Tôi không có autodefrag, sẽ kích hoạt nó và báo cáo lại trong lần khởi động lại tiếp theo.
Félix Saparelli

Vì vậy: phân mảnh tập tin xảy ra, autodefragkhông giúp đỡ, tác động hiệu suất là nhỏ nhất trên các hệ thống hàng ngày. Rõ ràng các máy chủ tải nặng có thể cần phải đo lường và điều chỉnh mọi thứ, nhưng một lần nữa đây là phần mềm alpha vì vậy bạn có thể muốn tránh nó ở đó.
Félix Saparelli

find /path -type f -exec filefrag {} + >frag.listtránh tất cả các FIBMAP unsupportedlỗi từ thư mục và các tệp không thường xuyên khác và không vi phạm các tên tệp lạ.
Peter Cordes

0

Vì lợi ích của chủ đề này, tôi nghĩ tốt hơn là làm rõ rằng:

Bất kỳ hệ thống tập tin! = Tiện ích phục hồi / quản lý

Hãy nhớ rằng hệ thống tập tin là về cách tổ chức dữ liệu trên phần cứng vật lý, mọi hoạt động khác được thực hiện với phần mềm và tiện ích bổ sung, đặc biệt là trong GNU / linux, được thực hiện bởi những người có lẽ không liên quan chặt chẽ với những người đã thực hiện hệ thống tập tin.

Đây có lẽ không phải là trường hợp của Btrfs, nhưng đôi khi chúng ta gần như vậy bởi vì môi trường máy tính để bàn và doanh nghiệp có thể cung cấp các giải pháp khác nhau với các mức độ thực tế khác nhau.

Câu trả lời cho câu hỏi của bạn là "không" nhưng là "không" liên quan đến hành vi thông thường của hệ thống tệp chung và mọi tiện ích bạn có thể tìm thấy về điều này chỉ đơn giản là một dự án khác nhau.

Khi bạn cần chống phân mảnh hệ thống tệp của mình, hãy nhớ rằng bạn sẽ sử dụng phần mềm bên ngoài không thực sự liên quan đến tuổi thọ của chính hệ thống tệp, với tất cả các ưu và nhược điểm.


0

Lệnh để chống phân mảnh hệ thống tập tin btrfs là

btrfs filesystem defragment sync -r -v -f [-czlib] / /home

0

Dựa trên câu trả lời này, tôi đã đưa ra:

sudo find / -xdev -type f -exec filefrag {} + | sed -En 's/(.+): (\w+) extent.*/\2 \1/p' | sort -nr

Điều này liệt kê các tệp bị phân mảnh nhất trước tiên, với định dạng:

<num-fragments> <pathname>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.