Tại sao tôi không thể tạo các tệp lớn hơn 2 GB trên Linux?


8

Tôi muốn chia sẻ một số kiến ​​thức tôi đã học được khi gặp sự cố khi sử dụng libpcap và khịt mũi để đánh hơi một liên kết mạng dung lượng cao (1 GB song công; tổng hợp tối đa 2 GB). Các ứng dụng sẽ đánh hơi tất cả lưu lượng truy cập thành công, nhưng sẽ sập khi kích thước tệp đạt 2 GB.

Nếu bạn gặp vấn đề với việc tạo các tệp 2 GB, mặc dù bạn có một hệ thống tệp hỗ trợ nó và / hoặc bạn biết kernel hỗ trợ nó, đây là dành cho bạn.


Nghĩ rằng tôi sẽ chia sẻ điều này với cộng đồng; cho tôi biết nếu có bất kỳ thay đổi nào tôi cần thực hiện.
romandas

Câu trả lời:


22

Hỗ trợ tệp lớn (> 2 GB) cho Linux cần được xử lý ở ba vị trí riêng biệt để đảm bảo bạn không chạy trong giới hạn kích thước tệp tối đa 2 GB:

  1. Hỗ trợ tập tin lớn được kích hoạt trong kernel

  2. Một hệ thống tệp hỗ trợ kích thước tệp lớn (nhiều hệ thống tệp dựa trên Linux thực hiện (ext3, reiserfs> = 3.6, v.v.))

  3. Hỗ trợ tệp lớn trong các thư viện hoặc ứng dụng được sử dụng

Hỗ trợ kernel cho các tệp lớn đã có từ 2.4.0-test7; nếu bạn sử dụng kernel tùy chỉnh, hãy đảm bảo bạn đã bao gồm các tùy chọn tệp lớn.

Hầu hết các hệ thống tệp Linux đều hỗ trợ các tệp lớn, nhưng bạn có thể gặp sự cố khi sử dụng hệ thống tệp mạng.

Cuối cùng, các thư viện (ví dụ libpcap) và các ứng dụng cần được biên dịch với các tùy chọn gcc -D _LARGEFILE64_SOURCE -D _FILE_OFFSET_BITS = 64. Kiểm tra để đảm bảo các gói bạn đang sử dụng được biên dịch sẵn với các tùy chọn này hoặc tự cuộn.

Xem ở đây để biết thêm chi tiết.


3
Thay vì "FILE_OFFSET_BITS", nó phải là "_FILE_OFFSET_BITS".
Juliano

Bạn đúng. Đã sửa.
romandas

1
Nếu bạn downvote, ít nhất là đàng hoàng và cho tôi biết lý do tại sao .
romandas

Lưu ý: _FILE_OFFSET_BITSđi O_LARGEFILEđến opensyscall trên vòm chính xác, nhưng _FILE_OFFSET_BITSđược ưa thích cho tính di động: stackoverflow.com/questions/2888425/...
Ciro Santilli冠状病毒审查六四事件法轮功

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.