Tại sao kích thước phân vùng và đầu ra df khác nhau?


16

Tôi có một phân vùng / dev / sda1.
Tiện ích đĩa cho thấy nó có dung lượng 154 GB. chương trình
df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             123G  104G   14G  89% /
devtmpfs             1006M  280K 1006M   1% /dev
none                 1007M  276K 1006M   1% /dev/shm
none                 1007M  216K 1006M   1% /var/run
none                 1007M     0 1007M   0% /var/lock
none                 1007M     0 1007M   0% /lib/init/rw

Tại sao kết quả khác nhau? Thiếu 31 GB ở đâu?


3
Xin vui lòng gửi đầu ra của fdisk -l /dev/sda(chạy như root).
Gilles 'SO- ngừng trở nên xấu xa'

2
Bạn đang sử dụng hệ thống tập tin nào? Nếu đó là ext2 / 3/4 thì bạn có thể sử dụng tune2fs -l /dev/sda1để kiểm tra nó. Nhìn vào số khối và kích thước khối và nhân chúng để có được kích thước hệ thống tập tin. Ngoài ra, fdisk -s /dev/sda1để có được kích thước phân vùng trong các khối 1k. Nhân số đó với 1024 để có được kích thước tính theo byte. Con số đó chỉ nên lớn hơn một chút so với hệ thống tập tin. Trên phân vùng ext4 40GB của tôi, nó lớn hơn 3072 byte. Nếu hệ thống tập tin của bạn nhỏ hơn một cách kỳ lạ, bạn có thể thử thay đổi kích thước nó. Đối với ext2 / 3/4, sử dụng resize2fs /dev/sda1. Bạn có thể làm điều này trong khi sử dụng máy tính bình thường.
chim cánh cụt359

@Gilles sudo fdisk -l / dev / sda hiển thị (Tôi chỉ đăng phân vùng sda1, vì những người khác không quan tâm đến chúng tôi). Khởi động thiết bị Khối kết thúc khối Id Hệ thống / dev / sda1 1 18706 150253568 83 Linux
xralf

@ penguin359 Tôi có hệ thống tập tin ext4. số khối = 32668162, kích thước khối = 4096, 32668162 * 4096 = 133808791552, fdisk -s / dev / sda1 * 1024 = 153859653632. Nó dường như nhỏ hơn một cách kỳ lạ. Tôi có thể thay đổi kích thước nó mà không mất dữ liệu? Điều gì gây ra rằng nó nhỏ hơn?
xralf

@xralf: thay đổi kích thước nên an toàn, tôi chưa bao giờ mất dữ liệu khi thực hiện. Nó có thể an toàn hơn một chút để làm điều đó với một phân vùng chưa từng có, ví dụ như một đĩa cd trực tiếp. Nhưng vẫn có được cho mình một bản sao lưu đầu tiên. Luôn luôn có một bản sao lưu trước khi làm công cụ quản trị hệ thống lớn.
Faheem Mitha

Câu trả lời:


25

Một lý do khả năng phân vùng có thể khác nhau là một số không gian được dành riêng cho root, trong trường hợp các phân vùng trở nên đầy đủ. Nếu không có không gian dành riêng cho root và các phân vùng trở nên đầy đủ, hệ thống không thể hoạt động. Tuy nhiên, sự khác biệt này thường là ở mức 1%, do đó không giải thích được sự khác biệt trong trường hợp của bạn. Từ trang người đàn ông cho df

Nếu một đối số là tên tệp tuyệt đối của nút thiết bị đĩa chứa hệ thống tệp được gắn kết, df hiển thị không gian có sẵn trên hệ thống tệp đó chứ không phải trên hệ thống tệp chứa nút thiết bị (luôn là hệ thống tệp gốc).

Vì vậy, df thực sự hiển thị kích thước của hệ thống tập tin của bạn, thường là kích thước của thiết bị, nhưng điều này có thể không đúng trong trường hợp của bạn. Hệ thống tập tin của bạn mở rộng trên toàn bộ phân vùng của bạn?

Làm

resize2fs /dev/sda1

Có sự khác biệt nào? Lệnh này cố gắng tăng hệ thống tập tin của bạn để bao phủ toàn bộ phân vùng. Nhưng hãy chắc chắn rằng bạn có một bản sao lưu nếu bạn thử điều này.


>> Hệ thống tập tin của bạn mở rộng trên toàn bộ phân vùng? Tôi nghĩ vậy. Đó là ext4. <br> Tôi nên sao lưu những gì? Tôi không có đĩa phụ để tạo bản sao lưu lớn hơn.
xralf

@xralf: (Ok, đây không phải chủ đề về câu hỏi này, nhưng ...) Nếu không có bản sao lưu, hãy thiết lập ngay lập tức. Sự thay thế duy nhất của một bản sao lưu tốt (và nó không phải là một sự thay thế tốt) là sử dụng có hệ thống hệ thống kiểm soát phiên bản phân tán và đẩy nó đến một vị trí xa. Nhưng tất nhiên, bạn không thể đặt mọi thứ dưới sự kiểm soát phiên bản, vd. phương tiện truyền thông. Xin thứ lỗi nếu tôi là một người bận rộn.
Faheem Mitha

@xralf: Tôi sẽ đăng kết quả đầu ra của bạn trong chính câu hỏi, dễ xem và đọc hơn.
Faheem Mitha

resize2fs hoạt động khá an toàn, không cần sao lưu cho nó (nếu bạn có nguồn điện ổn định và bạn sử dụng phần mềm ổn định). BTW, số lượng khối dành riêng mặc định là 5% cho các hệ thống tập tin ext *.
rvs

@rvs: không đồng ý sao lưu. Bạn đúng khoảng 5% ít nhất trên Debian. Tôi đã sai lầm. Nhưng tôi không biết nếu đó là tiêu chuẩn trên tất cả các bản phân phối.
Faheem Mitha

5

Sự khác biệt chính là bởi vì một số thứ nói rằng 1 kilobyte là 1000 byte và những thứ khác nói 1 kilobyte là 1024 byte.

Gnome Disk Utility cho thấy dung lượng sử dụng 1 kilobyte = 1000 byte, bởi vì các nhà sản xuất đĩa mô tả kích thước đĩa theo cách này. Điều này có nghĩa là dung lượng đĩa của bạn gần 154.000.000.000 byte .

Mặt khác, hầu hết các hệ điều hành cho biết 1 kilobyte = 1024 byte. Tất cả các công cụ thích dffdisksử dụng quy ước này. Vậy 154.000.000.000 byte / 1024/1024/1024 = 143,4 GB .

Như jlliagre chỉ ra một cách đúng đắn (và Gilles ngụ ý khi yêu cầu fdiskđầu ra của bạn ), tiện ích đĩa sẽ cho bạn biết kích thước của toàn bộ đĩa cứng của bạn. Nhưng /dev/sda1là một phân vùng duy nhất trên đĩa cứng của bạn. Ví dụ, đĩa cứng của bạn có thể có một số phân vùng khác trên đó, chẳng hạn như phân vùng 4-8 GB để trao đổi (còn được gọi là bộ nhớ ảo) và phân vùng khởi động thường khoảng 100 MB.

Bạn đã không đăng đầu ra của fdisk -l /dev/sda, vì vậy, giả sử phân vùng trao đổi của bạn là 8 GB. Bây giờ chúng tôi xuống còn 135 GB .

Sau đó, có một số điều khác góp phần vào sự khác biệt.

Ví dụ: hệ thống tệp sử dụng một số phân vùng đĩa cho siêu dữ liệu. Siêu dữ liệu là những thứ như tên tệp, quyền tệp, phần nào của phân vùng thuộc về tệp nào và phần nào của phân vùng là miễn phí. Trên hệ thống của tôi, khoảng 2% phân vùng được sử dụng cho việc này. Giả sử của bạn là tương tự, nó sẽ mang lại dung lượng trống xuống khoảng 132 GB .

Hệ thống tập tin cũng có thể dự trữ một số không gian chỉ có thể được sử dụng bởi người dùng root. Trên hệ thống của tôi, đó là 5% phân vùng, vì vậy trong trường hợp của bạn, nó có nghĩa là tổng dung lượng khoảng 125 GB .

Các con số chính xác phụ thuộc vào việc bạn có đang sử dụng ext2, ext3, ext4, fat, ntfs, btrfs, v.v. và những cài đặt nào đã được sử dụng khi định dạng phân vùng.

Nếu bạn đang sử dụng ext2 hoặc ext3, sudo tune2fs -l /dev/sda1có thể giúp hiểu không gian đang đi đâu.


Tiện ích đĩa hiển thị chính xác dung lượng 154 GB (153.859.653.632 byte).
xralf

>> sudo Tune2fs -l / dev / sda1 << Những tham số nào cho tôi biết không gian đang đi đâu?
xralf

2

Có lẽ chúng được sử dụng bởi inodes. Một số lượng có thể được MBR sử dụng hết.


1
MBR không xuất hiện vì nó nằm trong hình trụ 0 (thậm chí không nằm trong phân vùng đầu tiên, thường bắt đầu ở sector 2048). Tuy nhiên, có bản sao của siêu khối. Tuy nhiên, đó là các nút. Xem thêm: unix.stackexchange.com/questions/13547/ và các lệnh "lsblk / dev / sdX" và "dumpe2fs -h / dev / sdX"
David Tonhofer

1

sda1 không phải là toàn bộ đĩa của bạn mà là phân vùng chính đầu tiên của nó. Bạn có thể đã tạo các phân vùng chưa được đếm khác không hiển thị trong đầu ra df hoặc đơn giản là sda1 không lấp đầy tất cả không gian có thể sử dụng vì một số lý do hoặc có hệ thống tệp không sử dụng tất cả không gian có sẵn trong phân vùng.

fdisk -l sẽ cho bạn biết bảng phân vùng của bạn trông như thế nào.


Tất nhiên. Chúng ta chỉ nói về phân vùng / dev / sda1, không phải toàn bộ đĩa.
xralf

Điều đó không rõ ràng từ câu hỏi của bạn khi bạn đề cập đến một tiện ích đĩa mà không hiển thị đầu ra của nó. Bạn nên chỉnh sửa nó để làm cho rõ ràng. Nói làm thế nào bạn tạo hệ thống / tập tin cũng sẽ hữu ích.
jlliagre

Phần có liên quan của đầu ra của tiện ích đĩa là "dung lượng của phân vùng sda1 = 154 GB".
xralf

Vui lòng chỉnh sửa câu hỏi ban đầu của bạn để làm cho rõ ràng.
jlliagre
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.