Có cách nào để làm cho các hệ thống tập tin mở rộng sử dụng ít không gian hơn cho bản thân trong Linux không?


48

Tôi có một loạt các ổ cứng gắn ngoài và bên trong mà tôi sử dụng trên hệ thống Linux. Tôi chỉ có hệ thống Linux, vì vậy sử dụng hệ thống tệp Linux sẽ chỉ có ý nghĩa, phải không? Tuy nhiên, hiện tại tôi đang sử dụng NTFS ở mọi nơi, vì nó mang lại cho tôi không gian sử dụng nhiều nhất trong số các ổ cứng.

Bây giờ tôi muốn chuyển sang hệ thống tệp Linux, chủ yếu là vì quyền và khả năng tương thích (ví dụ: tôi không thể phân vùng NTFS được mã hóa LUKS của mình để thay đổi kích thước trong Linux, cứ bảo tôi chkdsk trong Windows).

Tuy nhiên, khi tôi định dạng các ổ cứng đó, tôi đã thử một loạt các hệ thống tệp khác nhau và mọi hệ thống tệp Linux, thậm chí cả ext2 mà theo như tôi biết là không có nhật ký, đã sử dụng rất nhiều dung lượng cho chính nó. Tôi không nhớ các giá trị chính xác, nhưng hơn 100 GB, NTFS đã mang lại cho tôi nhiều hơn trên ổ cứng 2TB, rất nhiều.

Vì vậy, câu hỏi của tôi là: Có cách nào để làm cho các hệ thống tập tin ext sử dụng ít không gian hơn cho chúng không? Hoặc có một hệ thống tập tin khác (tôi đã thử ext2, ext3, ext4, NTFS và vfat - Không ai trong số họ đến gần với không gian có thể sử dụng mà NTFS cung cấp cho tôi) với sự hỗ trợ hoàn hảo của Linux và không gian có thể sử dụng tuyệt vời?

Tôi rất muốn nghe về cách thức và lý do tại sao các hệ thống tập tin (đặc biệt là ext2 không có nhật ký) sử dụng nhiều dung lượng hơn NTFS và tôi không biết hỏi nơi nào khác. Tôi chủ yếu thích một cách sử dụng ext4 mà không cần ghi nhật ký và bất cứ điều gì khác sử dụng nhiều dung lượng này, nếu có thể.



4
Tôi có, và nó đã giải thích những gì sử dụng thêm dung lượng nhưng sự khác biệt giữa NTFS và ext lớn hơn nhiều so với giữa reiserfs và ext, và tôi tự hỏi liệu có cách nào làm cho nó nhỏ hơn không. Ví dụ: trên ổ cứng 1TB tôi có thể sử dụng 989GB với NTFS. ext4 sẽ cung cấp cho tôi khoảng 909GB.
confetti

Đủ công bằng. Câu hỏi Decent và câu trả lời là khai sáng quá.
JakeGould

3
Làm thế nào để bạn thực sự đo không gian có sẵn? điều này rất quan trọng vì tùy thuộc vào những giá trị bạn nhìn vào bạn có thể hoặc không thể thấy hiệu quả của việc đặt trước 5% chẳng hạn như được nêu trong câu hỏi được liên kết
eMBee

2
Hãy nhớ rằng ghi nhật ký trên các hệ thống tệp như ext3 và ext4 là một điều tốt. Thật dễ dàng để mất nguồn vào ổ đĩa ngoài hoặc rút phích cắm một cách tình cờ nếu đó là USB, Khi điều đó xảy ra, nó thường không phải là vấn đề lớn vì nó tự chữa lành bằng cách sử dụng nhật ký khi nó khởi động lại. Không có mạng lưới an toàn đó, mọi thứ sẽ tồi tệ hơn nhiều. Nó không chỉ là một trường hợp nhiều hơn là tốt hơn.
Joe

Câu trả lời:


97

Theo mặc định, ext2 và những người kế nhiệm của nó dành 5% hệ thống tập tin để người dùng root sử dụng. Điều này làm giảm sự phân mảnh và làm cho ít có khả năng quản trị viên hoặc bất kỳ trình tiện ích gốc nào sẽ không còn chỗ để làm việc.

Các khối dành riêng này ngăn các chương trình không chạy bằng root để lấp đầy đĩa của bạn. Liệu những cân nhắc này có biện minh cho việc mất dung lượng hay không phụ thuộc vào hệ thống tập tin được sử dụng để làm gì.

Số tiền 5% đã được thiết lập vào những năm 1980 khi các đĩa nhỏ hơn nhiều, nhưng chỉ còn nguyên trạng. Ngày nay 1% có lẽ là đủ cho sự ổn định của hệ thống.

Việc đặt trước có thể được thay đổi bằng cách sử dụng -mtùy chọn của tune2fslệnh:

tune2fs -m 0 /dev/sda1

Điều này sẽ đặt tỷ lệ phần trăm khối dành riêng thành 0% (0 khối).

Để có được giá trị hiện tại (trong số những người khác), sử dụng lệnh:

tune2fs -l <device> 

10
Điều này sẽ giải thích sự khác biệt to lớn trong không gian có thể sử dụng một cách hoàn hảo (vì 5% của 2TB là 100GB). Các đĩa sẽ không được sử dụng cho bất kỳ thứ gì liên quan đến tập tin gốc hoặc hệ thống, vì vậy tôi nghĩ rằng nó sẽ được lưu để vô hiệu hóa điều này. Tôi có một câu hỏi mặc dù: Làm thế nào để các chương trình sở hữu root biết có nhiều không gian trống hơn các chương trình không root? Chạy dfnhư không root so với root cho thấy không có sự khác biệt.
confetti

12
@confetti: Vì VFS không từ chối các nỗ lực ghi vào đĩa của họ ( dĩ nhiên cho đến khi âm lượng thực sự đầy).
Ignacio Vazquez-Abrams

1
tune2fs -l <device>nên đưa ra giá trị này trong số những người khác. Số tiền 5% đã được thiết lập vào những năm 1980 khi các đĩa nhỏ hơn nhiều, nhưng chỉ còn nguyên trạng. Ngày nay 1% có lẽ là đủ cho sự ổn định của hệ thống.
harrymc

7
XFS dự trữ khối nhỏ hơn 5% hoặc 8192 (32 MiB), do đó, lượng dành riêng thường rất nhỏ so với kích thước của hệ thống tệp.
Michael Hampton

5
Cảm ơn mọi người rất nhiều vì những lời giải thích. Điều này giúp tôi hiểu rất nhiều. Đĩa của tôi được sử dụng để lấp đầy hoàn toàn đến byte cuối cùng của nó trước đây, nhưng hệ thống của tôi đã không hoàn toàn thất bại, bây giờ tôi đã hiểu tại sao.
confetti

3

nếu dữ liệu bạn định lưu trữ trên đó có thể nén được, btrfs được gắn với compress=zstd(hoặc compress-force=zstd) sẽ sử dụng không gian đĩa ít hơn đáng kể so với ext *

  • điều này sẽ làm cho btrfs nén dữ liệu của bạn một cách trong suốt trước khi ghi nó vào đĩa và giải nén nó một cách trong suốt khi đọc lại. Ngoài ra, ext4 phân bổ trước tất cả các nút khi tạo hệ thống tệp, btrfs tạo chúng khi cần, tôi đoán rằng cũng có thể tiết kiệm một số không gian.

1
Bạn có nhớ thêm thông tin cho câu trả lời này? (Cách thức hoạt động, những gì nó làm, có thể là một tài liệu tham khảo, ...)
confetti

@confetti thích cái này? chắp
vá.kernel.org/patch/9817875

Tôi thực sự thích ý tưởng này, nhưng nhiều thông tin hơn về cách điều này sẽ ảnh hưởng đến tốc độ và hiệu suất và như vậy sẽ rất tốt.
confetti

2
@confetti, vì bạn đang sử dụng ổ cứng, nên có thể sẽ cải thiện hiệu suất. CPU nhanh hơn nhiều so với ổ cứng đến nỗi phần chậm của việc truy cập đĩa là lấy dữ liệu vào và ra khỏi đĩa; thời gian dành cho việc nén hoặc giải nén sẽ không được chú ý.
Đánh dấu

2
Mặt khác, hầu hết các loại tệp lớn hiện nay (ví dụ: hình ảnh, âm thanh, video, thậm chí hầu hết các định dạng tài liệu văn bản phong phú) có xu hướng đã được nén và thường không được hưởng lợi từ việc nén bổ sung. Ít nhất không phải là loại mục đích chung đơn giản được thực hiện ở cấp hệ thống tập tin.
Ilmari Karonen

3

Một điểm khác chưa được nói đến là số lượng nút bạn dự trữ trên hệ thống tệp của bạn.

Theo mặc định, mkfs tạo ra một số nút, điều này cho phép đưa toàn bộ rất nhiều tệp rất nhỏ vào hệ thống tệp của bạn. Nếu bạn biết rằng các tệp sẽ rất lớn và bạn sẽ chỉ đặt một số lượng nhỏ tệp trên FS, bạn có thể giảm số lượng nút.

Bảo trọng! Số này (tương ứng tỷ lệ giữa không gian và số lượng nút) chỉ có thể được đặt tại thời điểm tạo hệ thống tệp. Ngay cả khi mở rộng FS, tỷ lệ vẫn giữ nguyên.


Ngoài ra, nếu bạn biết bạn sẽ lưu trữ rất nhiều tệp thực sự nhỏ, bạn có thể tăng số lượng nút và giảm kích thước khối để bạn không lãng phí nhiều dung lượng. (Mỗi tệp phải tiêu thụ tối thiểu một khối, ngay cả khi đó là 1 byte. Sử dụng ls -ls để so sánh kích thước với những gì được sử dụng trên đĩa.)
Perkins

@Perkins Bạn nói đúng, nhưng tôi nghĩ rằng điều này chỉ giữ cho các tệp RẤT nhỏ: kích thước khối mặc định là 4kiB (IIRC), tối thiểu là 1 kiB. Vì vậy, không quá nhiều để giành chiến thắng, ngoại trừ đĩa của bạn thực sự chứa đầy những tập tin đó. Nhưng tuy nhiên, tôi có thể đi sâu vào ngày mai.
glglgl

2
hoặc thay thế sử dụng btrfs, tạo ra các nút khi cần thiết. trong khi các nút của ext4 được phân bổ tại thời điểm tạo hệ thống tệp và không thể thay đổi kích thước sau khi tạo, với giới hạn cứng là 4 tỷ, các nút của btrfs được tạo động khi cần và giới hạn cứng là 2 ^ 64, khoảng 18,4 triệu, khoảng 4,6 tỷ cao hơn giới hạn cứng của ext4 tối đa: p
hanshenrik

Nhắc nhở tôi về việc thiết lập một ống chỉ usenet. ext4 sẽ lưu trữ rất nhỏ (giới hạn là khoảng 60-160 byte tùy thuộc vào nhiều thứ) trong chính nút inode.
mr.spuratic

@hanshenrik Lưu ý rằng bạn có cùng giới hạn chặn kích thước trên btrfs (với một số cách khác để xử lý xung quanh nó) vì vậy bạn vẫn cần biết loại tệp nào (lớn hay nhỏ hoặc cả hai) bạn sẽ lưu trữ và điều chỉnh hệ thống tập tin của bạn phù hợp nếu bạn muốn vắt kiệt dung lượng lưu trữ tối đa. Tính khả dụng của nén tự động sẽ giúp ích khá nhiều mặc dù nếu bạn đang lưu trữ dữ liệu mịn.
Perkins
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.