2012-02-27 17 views
39

Tôi đang cố giải phóng một số dung lượng trên máy chủ Ubuntu chạy Mongo. Tôi đã đính kèm một khối lượng 8GB trống mới và có phòng để di chuyển mọi thứ xung quanh.Tệp Mongo "prealloc" chiếm phòng

Tôi có một số tệp lớn (1GB) trong/var/lib/mongodb/journal/prealloc, có an toàn để xóa chúng hoặc di chuyển chúng không? Nếu tôi có thể di chuyển chúng - bất cứ ai có thể cho tôi một con trỏ trên làm thế nào để làm điều này cho Mongo?

+0

Tôi đã gắn và gắn khối lượng mới của mình, chỉ cần biết về những khoảng không gian được phân bổ trước đó. – jbnunn

+3

Nhận ra sau một năm sau, mức độ "lớn" ngây thơ như thế nào, liên quan đến 1GB:/ – jbnunn

Trả lời

48

Vì vậy, về mặt lý thuyết, các tệp prealloc là các tệp tạp chí được phân bổ trước. Điều này trái ngược với khi sử dụng tệp nhật ký có định dạng j._X, trong đó X là chữ số.

Mục tiêu ở đây là phải có tệp "tiếp theo" đã được cấp phát khi tệp cuối cùng hết dung lượng. Phân bổ trước thường nhanh hơn nhiều so với phân bổ theo yêu cầu.

có an toàn để xóa chúng hoặc di chuyển chúng không?

Câu trả lời bạn tìm kiếm có trong tài liệu here. Các tài liệu dường như cung cấp câu trả lời chính cho câu hỏi của bạn:

tệp prealloc không chứa dữ liệu, nhưng chỉ đơn giản là các tệp được preallocated sẵn sàng để sử dụng thực sự được hệ thống tệp (tức là chúng không được preallocated) "thưa thớt"). Do đó, an toàn để loại bỏ chúng, nhưng nếu bạn khởi động lại mongod với nhật ký, nó sẽ tạo lại chúng nếu chúng bị thiếu. *

+14

Ah, bạn chính xác. Những gì tôi đã làm là xóa các tập tin đó (và giải phóng 3GB phòng), sau đó chỉnh sửa /etc/mongodb.conf và thay đổi dbpath thành vị trí gắn kết mới, và đặt nojournal = true, "Vô hiệu hóa ghi nhật ký". Bây giờ tôi có đủ không gian tôi thực sự có thể nhận xét điều đó, và rất có thể là vì nó có vẻ là cược an toàn hơn. Cảm ơn @GatesVP – jbnunn

+5

Một số lưu ý: 8GB không được coi là rất nhiều không gian trong MongoDB-land. Cơ chế ghi nhật ký đó ban đầu được gọi là "độ bền đơn máy chủ" b/c Các thiết lập mặc định của MongoDB rất dễ bay hơi. Nếu bạn không có ghi nhật ký (* mặc định trong 2.0 + *), thì bạn sẽ muốn xem xét có một bộ bản sao. Nếu không, dữ liệu của bạn rất dễ bị tham nhũng. –

+0

Ok tôi đánh giá cao điều đó. Đó là một máy chủ dev, vì vậy tôi sẽ đảm bảo rằng sản xuất của tôi có nhiều hơn thế. – jbnunn

6

Thêm "smallfiles = true" vào tệp cấu hình MongoDB.

+0

Điều này sẽ khiến MongoDB sử dụng 128 triệu tệp prealloc thay vì 1GB, nhưng dường như không làm giảm tổng kích cỡ tạp chí. –

+1

Nếu tôi đặt tùy chọn này và khởi động lại mongodb, các tệp hiện có có bị giảm không? –

+0

@LudwigMagnusson, bạn đã thử khởi động lại chưa? Kích thước tệp có bị giảm không? – Yahya