Điểm:1

Thư mục bị phân mảnh trên ext4?

lá cờ id

Hệ thống tệp ext4 của tôi mất hiệu suất khi phát triển.

Tôi có một hệ thống lưu trữ rất nhiều tệp hình ảnh. Máy chủ hình ảnh dựa trên Debian này lưu trữ các tệp hình ảnh được chia thành các thư mục năm trên bộ đĩa 1-2TB với RAID-1 phần cứng. Các tệp được lưu trữ trong cấu trúc gồm các thư mục năm và hai cấp độ 256 thư mục bên dưới.

Thích

hình ảnh/2021/2b/0f/193528211006081503835.tif

Các tệp này được ghi liên tục trong năm và được phân bổ đều nhờ sự trợ giúp của hàm băm để mỗi thư mục lá/hình ảnh chứa khoảng 400 tệp vào cuối năm.

Điều này mang lại tổng số khoảng 256 x 256 x 400 = 26 214 400 tệp mỗi năm.

Lặp lại cấu trúc thư mục này hoạt động tốt cho đến khoảng 20 triệu tệp. Có thể mất vài giờ. Khi phát triển lớn hơn, thậm chí liệt kê một thư mục lá với 300-400 tệp có thể mất 1-4 giây khi không có trong bộ đệm. Tôi nghi ngờ nó có liên quan đến sự phân mảnh trong các mục nhập thư mục.

Truy cập một tệp riêng lẻ khi bạn biết đường dẫn luôn nhanh. Và nó không phải là vấn đề về phần cứng/đĩa, hiệu suất io thô là tốt. Nhân tiện, các tệp không bao giờ bị xóa khỏi cấu trúc này.

Chống phân mảnh với e4defrag không có gì khác biệt. Tôi cho rằng nó chỉ chống phân mảnh tệp chứ không phải thư mục. fsck.ext4 -D có thể là một giải pháp, nhưng vì đây là hệ thống sản xuất nên tôi không muốn ngắt kết nối hệ thống tệp và thử.

Điều hữu ích là sao chép các tệp vào một thư mục tạm thời và sau đó di chuyển chúng trở lại ghi đè lên bản gốc. Thích

cp -a hình ảnh/2021/2b/0f/* hình ảnh/2021/2b/tmp
hình ảnh mv -f/2021/2b/tmp/* hình ảnh/2021/2b/0f

Sau khi hoạt động này hoạt động hiệu suất được phục hồi (ngay cả khi không có trong bộ nhớ cache). Nếu bản thân các tệp bị phân mảnh, tôi hiểu tại sao điều này sẽ hữu ích, nhưng chúng không theo e4defrag.Di chuyển các tệp vào thư mục tạm thời và ngược lại không giúp được gì.

Ai đó có thể giúp tôi hiểu những gì đang xảy ra ở đây.

djdomi avatar
lá cờ za
tôi nghĩ bạn cần thêm thông tin chi tiết về máy chủ, hơn nữa tôi nghĩ rằng hàng giờ của bạn sẽ bùng nổ về kích thước;) cũng hãy xem https://serverfault.com/questions/796665/what-are-the-performance-implications- for-millions-of-files-in-a-modern-file-sys cũng giống như câu hỏi của bạn và https://serverfault.com/questions/506465/is-there-a-hard-limit-to- số-tệp-một-thư-mục-có-thể-có
lá cờ id
@djdomi Đã mô tả hệ thống tốt hơn, cảm ơn. Vui lòng giải thích ý của bạn khi ghi nhật ký bùng nổ, tôi không chắc ý của bạn là gì. Đối với các bài báo được trích dẫn đó, sẽ không có thư mục nào chứa nhiều hơn khoảng 500 tệp, vì vậy đó không phải là vấn đề. Tôi đã nghĩ về XFS (chưa bao giờ sử dụng nó) nhưng đã đọc cả ưu và nhược điểm, có thể đáng xem xét.
djdomi avatar
lá cờ za
Ngoài ra, ý tôi là, bạn sẽ gặp số lượng tệp tối đa là ext4, nếu tôi đếm chính xác, hãy xem tại đây https://serverfault.com/questions/104986/what-is-the-maximum-number-of-files- a-file-system-can-contain
lá cờ id
@djdomi, cảm ơn vì đã làm rõ. Mỗi bộ đĩa là hệ thống tệp riêng của nó, do đó, một bộ đĩa sẽ đầy trước khi các tệp tối đa hoặc tình trạng thiếu inode gây ra sự cố. Miễn là một năm các tệp có thể được lưu trữ trên một bộ đĩa thì không sao cả.
djdomi avatar
lá cờ za
Tôi không phải là xuất hệ thống tệp, nhưng tôi tin rằng đó là sự cố trong khi sử dụng ext4 cho số lượng tệp lớn như vậy
Điểm:0
lá cờ in

Tôi sẽ cố gắng trả lời cho ext4. Làm thế nào để bạn tạo hệ thống tập tin? đầu ra của ví dụ là gì:

sudo tune2fs -l /dev/sda1

Tôi cho rằng âm lượng ext4 của bạn là sda1. Bạn nên có "dir_index", "filetype" trong số các tính năng của hệ thống tệp. Nếu không, bạn phải định dạng với những thứ này được bật. Khi những điều này ổn, có thể bạn muốn đổi bộ nhớ cache của tệp lấy bộ nhớ cache siêu dữ liệu. nếu đầu ra của:

mèo /proc/sys/vm/vfs_cache_pressure

hiển thị 100, hãy thử giảm giá trị này xuống 50. Nó có thể được thực hiện liên tục trong tệp vv/sysctl.conf nơi bạn có thể viết:

vm.vfs_cache_pressure=50

và áp dụng nó bằng cách sudo sysctl -p Điều này sẽ tăng xác suất lưu trữ dữ liệu meta vào bộ đệm. Ext4 dir chỉ số có thể phân mảnh như bạn đề xuất. Không có cách chữa trị trực tiếp, nhưng bạn có thể xem bài đăng trên Stackexchange này: cách chống phân mảnh nguyên tử-ext4-thư mục

lá cờ id
Cám ơn vì sự gợi ý. Tham số áp suất bộ đệm có vẻ thú vị để giữ nhiều dữ liệu meta hơn trong bộ đệm. Nhưng nơi tôi gặp vấn đề nhất là khi quét toàn bộ cây. Tôi nghi ngờ nó giúp tăng hiệu suất ở đây. Tôi sẽ ghi nhớ điều đó khi bộ đĩa mới trở nên phổ biến hơn vào cuối năm. Tôi cũng đang đánh giá XFS được cài đặt sẵn ext4 để xem nó hoạt động như thế nào.
A. Genchev avatar
lá cờ in
Thông thường, một hệ thống tệp mở rộng có thể chứa 64k mục nhập trong một thư mục mà không cần hoàn hảo. vấn đề. Tôi cũng thắc mắc tại sao bạn cần quét lại toàn bộ cây trong khi bạn chắc chắn rằng không có tệp nào bị xóa. Bạn đã cân nhắc thay đổi cấu trúc L2/L3 của mình thành Tháng/Ngày thay vì hàm băm chưa? Lý do là khi đó bạn sẽ không có tệp bị xóa cũng như tệp mới được thêm vào, vì vậy kết quả quét cũ sẽ hợp lệ. Bạn sẽ chỉ cần quét trong tháng tới. Và thời gian là theo một hướng.
lá cờ id
Lý do sử dụng hàm băm là những thứ duy nhất được biết khi truy xuất tệp hình ảnh là năm và tên tệp. Ngay cả khi điều đó có thể được giải quyết trong tương lai, nó sẽ dẫn đến việc lưu trữ nhiều tệp hơn trên mỗi thư mục lá. Giống như 100000 mỗi ngày.
A. Genchev avatar
lá cờ in
Vì vậy, bạn không thêm hình ảnh từ ngày/tháng hiện tại mà cả các tệp cũ từ đầu năm? Sau đó, bạn không tìm nạp các tệp này hàng ngày/tháng. Mặt khác, bạn sẽ biết tệp nào xuất hiện vào thời điểm nào (theo quan điểm của bạn).
lá cờ id
Vâng, bạn nói đúng, chúng tôi viết những hình ảnh cũ hơn. Ngay cả những hình ảnh thuộc về những năm trước. Sau đó, chúng tôi tìm nạp ngẫu nhiên các hình ảnh có độ tuổi từ 5-10 năm.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.