Hệ thống tệp Linux loại bỏ các tệp cũ hơn khi phân vùng đầy


7

Tôi tự hỏi nếu có một hệ thống tệp tương đương với cơ sở dữ liệu vòng tròn, với kích thước cố định, sẽ loại bỏ các tệp cũ nhất. Nó khá dễ thực hiện với một công việc cron đơn giản mà tôi có, nhưng tôi cho rằng đó là vấn đề mà nhiều người gặp phải và có lẽ có điều gì đó tốt hơn. Tôi muốn đặt phân vùng có kích thước cố định hoặc nhóm, trong đó các tệp cũ hơn sẽ tự động bị xóa hoặc bị tắt, khi nhóm đầy. Một loại bộ đệm tròn sẽ sử dụng khoảng trống còn lại của tệp cũ nhất cho tệp mới, trong khi duy trì tính toàn vẹn của tệp.

Giải pháp cron của tôi so sánh việc sử dụng đĩa với ngưỡng và loại bỏ đệ quy tệp cũ nhất cho đến khi việc sử dụng đĩa lại nằm dưới ngưỡng. Nó không hoàn hảo bởi vì người ta không thể đảm bảo ngưỡng đủ thấp để nó không bị vượt qua giữa hai lần lặp lại. Nó cũng không tối đa hóa việc sử dụng không gian lưu trữ vì giá trị ngưỡng có xu hướng dự đoán trong tự nhiên (tôi có thể điền bao nhiêu trong một phút, giữa hai lần lặp lại). Hai thiếu sót tôi hy vọng sẽ cải thiện.

Tôi đang tìm kiếm một giải pháp thanh lịch hơn, giống như cách cơ sở dữ liệu vòng tròn ( http://linux.die.net/man/1/rrdtool ) xử lý việc này một cách minh bạch, nhưng đối với các hệ thống tệp.


Điều gì về việc quá tải lệnh mv để thực hiện xác minh và xóa (theo yêu cầu) trước khi di chuyển tệp vào phân vùng?

cung cấp một phương pháp thay thế để đạt được mục tiêu, hy vọng sẽ kích hoạt một số ý kiến ​​hữu ích.

bất kỳ công đức trong việc xem xét logrotate? Tôi tin rằng bạn có thể viết các quy tắc cho bất kỳ loại tệp nào, nhưng làm thế nào để đảm bảo nó chạy đúng lúc (khi cần) để lưu trữ nhiều tệp hơn.

1
Tôi không đồng ý. Hệ thống tập tin được xây dựng với các tính năng khác nhau. Một số thực hiện khử nhiễu, một số cho phép lưu trữ phân tán. Nhu cầu của tôi là một cái sẽ tối đa hóa việc sử dụng dung lượng lưu trữ cố định mà nó có và sử dụng thông minh dung lượng còn lại bằng cách xóa tệp cũ nhất để lưu trữ tệp mới.

1
Tôi đồng ý với user153222, ở trên; tmpfslà một ví dụ tuyệt vời về một hệ thống tập tin chắc chắn không lưu trữ thông tin một cách kiên cường, nhưng rất hữu ích trong một số trường hợp nhất định vì những gì nó làm. Bạn sử dụng một công cụ để phục vụ nhu cầu và tôi có thể dễ dàng hình dung được các nhu cầu mà hệ thống tệp đệm vòng sẽ phục vụ tốt. Tôi chắc chắn đây không phải là một câu hỏi tồi và tôi hy vọng nó không bị đóng cửa.
MadHatter

Câu trả lời:


5

Tồn tại nhiều hệ thống HSM ( Quản lý lưu trữ phân cấp ), chủ yếu nhắm vào các hệ thống SAN. Những tệp này di chuyển các tệp từ các đĩa nhanh hơn, sang các đĩa chậm hơn, vào băng khi thời gian truy cập cuối cùng của chúng trở nên cũ hơn. Bạn có thể muốn tìm kiếm một trong những thứ này, nếu bạn có SAN. Hầu hết những cái tôi biết là giấy phép thương mại, chẳng hạn như IBM Tivoli HSM mà chúng tôi sử dụng. Bạn có thể muốn xem OHSM mặc dù.

Nếu bạn chỉ muốn xóa các tệp cũ, thì một công việc cron đơn giản như find /data -atime +30 -exec rm {} \;sẽ xóa các tệp không được truy cập trong một khoảng thời gian nhất định (nhưng đảm bảo hệ thống tệp không được gắn với noatimetùy chọn!) Điều này sẽ rất rủi ro, mặc dù, trừ khi bạn có một hệ thống sao lưu trực tuyến tốt.


đây là khá nhiều những gì tôi có bây giờ, nhưng không đủ để đảm bảo hệ thống tập tin không lấp đầy giữa hai lần lặp cron

5
Tôi sẽ nói rằng bạn đang làm sai cách. Hoặc thêm rất nhiều đĩa vào hệ thống tập tin, tăng tần số của cron của bạn hoặc tìm một số cách khác. Nếu bạn thấy mình cần phải xóa một lượng dữ liệu không xác định thường xuyên như thế này thì có lẽ có vấn đề với bất cứ thứ gì đang lấp đầy hệ thống tập tin. Tôi cho rằng hệ thống tập tin trong câu hỏi là tạm thời; trong trường hợp đó, các quy trình ghi vào nó nên được viết để tự dọn dẹp tốt hơn và có lẽ bạn nên tăng kích thước của hệ thống tập tin.
Steve Shipway

Tôi đánh giá cao bình luận của Steve, nhưng tôi có nhu cầu chính đáng về một hệ thống tệp sẽ giữ lại các tệp theo cách "nỗ lực tốt nhất". Trong điều kiện bình thường, các tệp được loại bỏ định kỳ bởi một quy trình từ xa. Trong trường hợp mất liên lạc, tôi muốn hồ bơi giữ lại càng nhiều càng tốt, loại bỏ mọi thứ rơi ra khỏi đầu, giữ lại các tệp gần đây nhất cho đến dung lượng của nhóm. Tôi đang tìm kiếm một cách tự động có thể được thực hiện, giống như nó xảy ra trong rrdtool. Các giải pháp thay thế của tôi đều ổn, nhưng sau đó tôi cần đặt ngưỡng đảm bảo tôi không lấp đầy hồ bơi quá nhanh

1
Vì vậy - hệ thống tập tin được sử dụng hơi giống như một hàng đợi và khi nó đầy, bạn muốn mất mục cũ nhất so với mục mới nhất? Điều đó có ý nghĩa. Tuy nhiên, đây thực sự là thứ cần được quản lý bằng cách viết ứng dụng cho nó ... Tôi sẽ nói rằng bạn nên (a) tăng kích thước FS để nguy cơ xảy ra sự cố thấp hơn và (b) bạn có thể viết tập lệnh perl đơn giản để truy vấn không gian trống của FS và xóa các tệp theo thứ tự ngược tuổi cho đến khi không gian trống> X. Điều này có thể khó hơn nếu cấu trúc thư mục phức tạp hơn.
Steve Shipway

Chính xác như một hàng đợi có. Không thể tăng FS (đó là RAMDISK). Tôi đã có tương đương với tập lệnh perl mà bạn đề cập như đã đề cập ở trên, nhưng tôi đang tìm kiếm một giải pháp thanh lịch hơn nếu có. Cấu trúc thư mục không thay đổi trong trường hợp này, nhưng nếu hệ thống tập tin như vậy tồn tại, tôi hy vọng hàng đợi vẫn có thể hoạt động ngay cả trong các hệ thống phân cấp phức tạp.

0

Tôi chỉ có thể hy vọng rằng không có hệ thống tệp như vậy tồn tại (các tìm kiếm chữ thảo dường như không trả lại nhiều sự quan tâm). Nghe có vẻ giống như cốt truyện cho một giấc mơ khủng khiếp ...

Dù sao, tôi cho rằng câu trả lời ngắn gọn là: Không có gì như thế này tồn tại.

Và tôi thực sự hy vọng đó là sự thật :(


Còn đối với bạn thân của bạn ... nếu bạn chỉ lo lắng về việc chồng chéo ... Sử dụng tệp khóa. Sau đó, lo lắng duy nhất của bạn là " Ứng dụng của tôi có thể lấp đầy hệ thống tập tin này trước khi cron chạy lại không?"


Không lo lắng về các crons chồng chéo, nhưng tôi lo lắng về việc lấp đầy phân vùng trước khi cron daemon chạy lại.

giấc mơ khủng khiếp không phải là một nhận xét hợp lệ trong tâm trí của tôi: rrdtool thoát ra vì một lý do. Và hãy tưởng tượng bạn cần lưu trữ các tệp thay vì dữ liệu trong cơ sở dữ liệu ... Không quá xa.

thật thú vị khi một số người chọn tập trung vào việc đoán thứ hai nhu cầu của tôi thay vì đề xuất các giải pháp ... rrdtool có khả năng loại bỏ dữ liệu cũ hơn bằng cách sử dụng một tương tự cửa sổ di chuyển, giữ một kích thước cố định. Đây là cách tôi muốn phân vùng hành xử. Tôi không có nhu cầu về các tính năng SQL.

4
Dự đoán thứ hai về nhu cầu đến từ nhiều năm mang đến cho chúng ta những vấn đề XY. Không nhất thiết là trường hợp ở đây, nhưng vì bạn không mô tả những gì bạn đang thực sự làm, chúng tôi có xu hướng cho rằng đó là trường hợp cho các yêu cầu bất thường. meta.stackexchange.com/questions/66377/what-is-the-xy-pro Hiệu
Cấp

Rất tốt, cảm ơn vì liên kết. Tôi không nghĩ đó là trường hợp ở đây, tôi mô tả nhu cầu của tôi trước tiên, tốt nhất có thể. Tôi cũng cung cấp giải pháp mà tôi có và hai khuyết điểm tôi đang cố gắng khắc phục. Tôi thực sự không hiểu tại sao một số người sẽ gắn cờ này với "sự hiểu biết tối thiểu" -> rõ ràng không phải là trường hợp trong tâm trí của tôi. Tôi cũng không đồng ý với tuyên bố của bạn Tôi không mô tả những gì tôi đang làm. Tôi cung cấp các trường hợp sử dụng trong các ý kiến ​​trên.
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.