เหตุใดขนาดพาร์ติชันและเอาต์พุต df จึงแตกต่างกัน


16

ฉันมีพาร์ติชั่น / dev / sda1
ยูทิลิตี้ดิสก์แสดงว่ามีความจุ 154 GB
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

ทำไมผลลัพธ์ต่างกัน ที่หายไป 31 GB อยู่ที่ไหน


3
โปรดโพสต์ผลลัพธ์ของfdisk -l /dev/sda(เรียกใช้เป็นรูท)
Gilles 'หยุดความชั่วร้าย'

2
คุณใช้ระบบไฟล์อะไร หากเป็น ext2 / 3/4 คุณสามารถใช้tune2fs -l /dev/sda1เพื่อตรวจสอบได้ ดูที่การนับบล็อกและขนาดบล็อกและทวีคูณพวกเขาเพื่อรับขนาดระบบไฟล์ นอกจากนี้fdisk -s /dev/sda1เพื่อให้ได้ขนาดพาร์ติชันในบล็อกขนาด 1k คูณด้วย 1024 เพื่อให้ได้ขนาดเป็นไบต์ หมายเลขนั้นควรมากกว่าระบบไฟล์เล็กน้อย ในพาร์ติชั่น 40GB ext4 ของฉันมันใหญ่กว่า 3072 ไบต์ หากระบบไฟล์ของคุณมีขนาดเล็กผิดปกติคุณสามารถลองปรับขนาดได้ สำหรับ ext2 / 3/4 resize2fs /dev/sda1การใช้งาน คุณสามารถทำได้ในขณะที่ใช้คอมพิวเตอร์ตามปกติ
penguin359

@Gilles sudo fdisk -l / dev / sda แสดงให้เห็น (ฉันโพสต์เฉพาะพาร์ทิชัน sda1 เพราะคนอื่นไม่สนใจเรา) การเริ่มต้นการบูตอุปกรณ์สิ้นสุดบล็อกระบบ Id / dev / sda1 1 18706 150253568 83 Linux
xralf

@ penguin359 ฉันมีระบบไฟล์ ext4 จำนวนบล็อก = 32668162 ขนาดบล็อก = 4096, 32668162 * 4096 = 133808791552, fdisk -s / dev / sda1 * 1024 = 153859653632 ดูเหมือนว่าจะมีขนาดเล็กลงอย่างผิดปกติ ฉันสามารถปรับขนาดได้โดยไม่สูญเสียข้อมูลหรือไม่ อะไรทำให้มันเล็กลง?
xralf

@xralf: การปรับขนาดควรปลอดภัยฉันไม่เคยทำข้อมูลสูญหาย มันอาจจะปลอดภัยกว่าเล็กน้อยที่จะทำกับพาร์ติชั่นที่ไม่ได้ประกอบเข้าไปเช่นกับไลฟ์ซีดี แต่ยังรับตัวเองสำรองก่อน ได้รับการสำรองข้อมูลเสมอก่อนที่จะทำสิ่งสำคัญผู้ดูแลระบบ
Faheem Mitha

คำตอบ:


25

เหตุผลหนึ่งที่ความสามารถของพาร์ติชันสามารถแตกต่างกันได้คือพื้นที่บางส่วนถูกสงวนไว้สำหรับรูทในกรณีที่พาร์ติชันเต็ม หากไม่มีพื้นที่ที่สงวนไว้สำหรับรูทและพาร์ติชันเต็มระบบจะไม่สามารถทำงานได้ อย่างไรก็ตามความแตกต่างนี้มักจะเป็นลำดับที่ 1% ดังนั้นจึงไม่ได้อธิบายความแตกต่างในกรณีของคุณ จาก man page สำหรับ df

หากอาร์กิวเมนต์เป็นชื่อไฟล์สัมบูรณ์ของโหนดอุปกรณ์ดิสก์ที่มีระบบไฟล์ที่เมาท์ df แสดงพื้นที่ว่างบนระบบไฟล์นั้นมากกว่าบนระบบไฟล์ที่มีโหนดอุปกรณ์ (ซึ่งเป็นระบบไฟล์รูทเสมอ)

ดังนั้น df จึงแสดงขนาดของระบบไฟล์ของคุณซึ่งโดยปกติแล้วจะเป็นขนาดของอุปกรณ์ แต่นี่อาจไม่เป็นจริงในกรณีของคุณ ระบบไฟล์ของคุณขยายไปทั่วพาร์ติชันทั้งหมดของคุณหรือไม่?

ทำ

resize2fs /dev/sda1

สร้างความแตกต่างหรือไม่? คำสั่งนี้พยายามเพิ่มระบบไฟล์ของคุณเพื่อให้ครอบคลุมทั้งพาร์ติชัน แต่ให้แน่ใจว่าคุณมีการสำรองข้อมูลถ้าคุณลองสิ่งนี้


>> ระบบไฟล์ของคุณขยายไปทั่วพาร์ติชั่นทั้งหมดหรือไม่? ฉันคิดอย่างนั้น เป็น ext4 <br> ฉันควรสำรองอะไร ฉันไม่มีดิสก์สำรองเพื่อสำรองข้อมูลขนาดใหญ่
xralf

@xralf: (ตกลงนี่เป็นหัวข้อที่ไม่เกี่ยวข้องกับคำถามนี้ แต่ ... ) หากไม่มีข้อมูลสำรองให้ตั้งค่าทันที ทางเลือกเดียวของการสำรองข้อมูลที่ดี (และไม่ใช่ทางเลือกที่ดี) คือการใช้ระบบการควบคุมเวอร์ชันแบบกระจายและผลักไปยังตำแหน่งระยะไกล แต่แน่นอนคุณไม่สามารถวางทุกอย่างไว้ภายใต้การควบคุมเวอร์ชันเช่น สื่อ โปรดแก้ตัวถ้าฉันเป็นคนยุ่ง
Faheem Mitha

@ xralf: ฉันจะโพสต์ผลการส่งออกของคุณในคำถามตัวเองมันจะง่ายต่อการมองเห็นและอ่าน
Faheem Mitha

resize2fs เป็นการดำเนินการที่ค่อนข้างปลอดภัยไม่จำเป็นต้องสำรองข้อมูล (ถ้าคุณมีพลังงานที่มั่นคงและคุณใช้ซอฟต์แวร์ที่มีเสถียรภาพ) BTW จำนวนบล็อกเริ่มต้นที่สงวนไว้คือ 5% สำหรับระบบไฟล์ ext *
rvs

@rvs: ไม่รองรับการสำรองข้อมูลอีกครั้ง คุณคิดถูก 5% อย่างน้อยใน Debian ฉันกำลังเข้าใจผิด แต่ฉันไม่รู้ว่านั่นเป็นมาตรฐานในการแจกแจงทั้งหมดหรือไม่
Faheem Mitha

5

ความแตกต่างที่สำคัญคือบางสิ่งที่บอกว่า 1 กิโลไบต์คือ 1,000 ไบต์และบางคนบอกว่า 1 กิโลไบต์คือ 1024 ไบต์

Gnome Disk Utility แสดงความจุโดยใช้ 1 กิโลไบต์ = 1,000 ไบต์เนื่องจากผู้ผลิตดิสก์อธิบายขนาดของดิสก์ด้วยวิธีนี้ ซึ่งหมายความว่าความจุฮาร์ดดิสก์ของคุณอยู่ใกล้กับ154,000,000,000 ไบต์

ในทางตรงกันข้ามระบบปฏิบัติการส่วนใหญ่บอกว่า 1 กิโลไบต์ = 1024 ไบต์ เครื่องมือทั้งหมดที่ชอบdfและfdiskใช้การประชุมนี้ ดังนั้น 154000000000 ไบต์ / 1024/1024/1024 = 143.4 GB

ในฐานะที่เป็น jlliagre ชี้ให้เห็นอย่างถูกต้อง (และ Gilles หมายถึงเมื่อขอfdiskผลลัพธ์ของคุณ) ยูทิลิตี้ดิสก์กำลังบอกขนาดของฮาร์ดดิสก์ทั้งหมดของคุณ แต่/dev/sda1เป็นพาร์ติชันเดียวบนฮาร์ดดิสก์ของคุณ ตัวอย่างเช่นฮาร์ดดิสก์ของคุณอาจมีพาร์ติชั่นอื่นเช่นพาร์ติชั่น 4-8 GB สำหรับการแลกเปลี่ยน (หรือที่เรียกว่าหน่วยความจำเสมือน) และพาร์ติชันสำหรับบูตซึ่งโดยปกติจะอยู่ที่ประมาณ 100 MB

คุณไม่ได้โพสต์เอาท์พุทfdisk -l /dev/sdaดังนั้นสมมติว่าพาร์ติชัน swap ของคุณคือ 8 GB ตอนนี้เราลงไป135 GB

จากนั้นก็มีสิ่งอื่น ๆ ที่นำไปสู่ความแตกต่าง

ตัวอย่างเช่นระบบไฟล์ใช้ดิสก์พาร์ติชันบางส่วนสำหรับเมตาดาต้า ข้อมูลเมตาคือชื่อไฟล์, สิทธิ์ของไฟล์, ส่วนใดของพาร์ติชั่นที่เป็นของไฟล์, และส่วนใดของพาร์ติชั่นนั้นว่าง ในระบบของฉันใช้พาร์ติชั่นนี้ประมาณ 2% สมมติว่าคุณเป็นที่คล้ายกันมันจะทำให้พื้นที่ว่างลงไปประมาณ132 GB

ระบบไฟล์ยังสามารถจองพื้นที่บางส่วนที่ผู้ใช้รูทสามารถใช้ได้เท่านั้น ในระบบของฉันมันเป็น 5% ของพาร์ทิชันดังนั้นในกรณีของคุณมันจะหมายถึงกำลังการผลิตรวมประมาณ125 GB

จำนวนที่แน่นอนขึ้นอยู่กับว่าคุณใช้ ext2, ext3, ext4, fat, ntfs, btrfs, etc และการตั้งค่าใดที่ใช้เมื่อทำการฟอร์แมตพาร์ติชัน

หากคุณใช้ ext2 หรือ ext3 sudo tune2fs -l /dev/sda1สามารถช่วยให้เข้าใจว่าพื้นที่กำลังจะไปไหน


ยูทิลิตี้ดิสก์แสดงความจุที่แน่นอน 154 GB (153,859,653,632 ไบต์)
xralf

>> sudo tune2fs -l / dev / sda1 << พารามิเตอร์ใดบอกฉันว่าพื้นที่จะไปไหน
xralf

2

อาจใช้พวก inodes จำนวนเงินบางส่วนอาจถูกใช้งานโดย MBR


1
MBR ไม่ปรากฏขึ้นเนื่องจากอยู่ในรูปทรงกระบอก 0 (ไม่แม้แต่ในพาร์ติชันแรกซึ่งมักจะเริ่มที่ภาค 2048) อย่างไรก็ตามมีสำเนาของ superblock อยู่ ยังคงเป็นไอโหนด ดูเพิ่มเติมที่: unix.stackexchange.com/questions/13547/…และคำสั่ง "lsblk / dev / sdX" และ "dumpe2fs -h / dev / sdX"
David Tonhofer

1

sda1 ไม่ใช่ดิสก์ทั้งหมดของคุณ แต่เป็นพาร์ทิชันหลักตัวแรก คุณอาจสร้างพาร์ติชันที่ไม่ได้เมานต์อื่น ๆ ที่ไม่แสดงใน df output หรือเพียงแค่มี sda1 ไม่ได้เติมพื้นที่ที่ใช้งานได้ทั้งหมดด้วยเหตุผลบางอย่างหรือมีระบบไฟล์ไม่ได้ใช้พื้นที่ที่มีอยู่ทั้งหมดในพาร์ติชัน

fdisk -l จะบอกคุณว่าตารางพาร์ติชั่นของคุณเป็นอย่างไร


แน่นอน. เรากำลังพูดถึงพาร์ติชั่น / dev / sda1 เท่านั้นไม่ใช่ดิสก์ทั้งหมด
xralf

ไม่ชัดเจนจากคำถามของคุณเมื่อคุณอ้างถึงโปรแกรมอรรถประโยชน์ดิสก์โดยไม่แสดงผลลัพธ์ คุณควรแก้ไขเพื่อให้ชัดเจน การบอกวิธีการที่คุณสร้าง / ระบบไฟล์จะมีประโยชน์เช่นกัน
jlliagre

ส่วนที่เกี่ยวข้องของการส่งออกของดิสก์ยูทิลิตี้คือ "ความจุของพาร์ทิชัน sda1 = 154 GB"
xralf

โปรดแก้ไขคำถามเดิมของคุณเพื่อให้ชัดเจน
jlliagre
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.