แสดงพื้นที่ว่างของระบบไฟล์ที่พร้อมใช้งานสำหรับผู้ใช้รูท


12

ตามค่าเริ่มต้น Linux ขอสงวนระบบไฟล์บางส่วนสำหรับผู้ใช้รูทอย่างน้อยใน ext4 (เพื่อป้องกันผู้ใช้ทั่วไปไม่ให้เติมไดรฟ์จนสมบูรณ์และล้มเหลวของระบบและเพื่อลดการแตกแฟรกเมนต์) อย่างไรก็ตามdfจะแสดงเฉพาะพื้นที่ว่างที่ปรากฏแก่ผู้ใช้ทั่วไป (แม้เมื่อเรียกใช้ในฐานะรูท) คุณจะแสดงพื้นที่ว่าง "ของจริง" ที่จะเข้าถึงรูทได้อย่างไร

คำตอบ:


6

ฉันไม่แน่ใจว่ามีเครื่องมือในตัว แต่สมมติว่าคุณปล่อยให้สงวนไว้ที่ค่าเริ่มต้น 5% แล้วสิ่งนี้จะบอกคุณ:

df / | grep dev | cut -f 3,6 -d\  | awk '{print ($1*.05)+$2}'

dfรูทgrepสำหรับบรรทัดที่มี dev อยู่ในนั้น (เพื่อลบส่วนหัว) cutขนาดและฟิลด์ที่มีอยู่จากนั้นใช้awkสคริปต์เพื่อคำนวณ 5% ของขนาดดิสก์ที่เพิ่มเข้าไปในที่มีอยู่

คุณสามารถดึงการจองจริงจากtune2fs -l <device>และรวมสิ่งนี้กับสคริปต์ด้านบน


2
ถูกต้องดังนั้นคำสั่งต่อไปนี้จะบอกเราว่าพื้นที่พาร์ติชั่นนั้นสงวนไว้สำหรับผู้ใช้ที่ได้รับสิทธิtune2fs -l /dev/DEVICE | egrep "Block count|Reserved block count"เท่านั้น: . เช่นสำหรับพาร์ทิชัน "บัฟเฟอร์มัลติมีเดีย" ของฉัน: Block count: 2621440และReserved block count: 128449: 4.9% ของบล็อกที่มีอยู่ (การตั้งค่าแบบอนุรักษ์นิยมเพื่อช่วยป้องกันการแตกแฟรกเมนต์)
tuk0z

ไม่จำเป็นต้องใช้cutคำสั่ง: คุณสามารถเลือกฟิลด์awkได้โดยตรง อันที่จริงcutคำสั่งไม่ทำงานสำหรับฉันตามที่คาดไว้ อย่างไรก็ตามฉันให้คำตอบอีกข้อหนึ่งที่ควรให้คำตอบที่แม่นยำยิ่งขึ้น
jarno

1
ดำเนินtune2fs -m <percentage> <device-name>การเปลี่ยนพื้นที่ดิสก์ที่สงวนไว้สำหรับการใช้งานรูทเท่านั้น
luka5z

1
แรงบันดาลใจจากข้างต้นฉันมากับสิ่งนี้เพื่อคำนวณพื้นที่สงวนในปริมาณรูตเป็น MB:sudo tune2fs -l $(df | grep -E '/$' | cut -d\ -f 1) | egrep "Reserved block count|Block size" | paste -sd\ | awk '{print ($4 * $7 / ( 1024 * 1024 ) ), "MB"}'
mp3foley

นี่ไม่ใช่คำตอบที่พกพาได้ ตรวจสอบคำตอบที่คุณต้องการด้านล่าง (สปอยเลอร์: tune2fs /dev/sda1หรือดียิ่งขึ้นstat -f -c '%a blocks free and %f blocks free for root (%S bytes per block)' /
trs

17

โดยใช้คำสั่งtune2fs (พบใน/ sbin / tune2fs ) คุณสามารถกำหนดพื้นที่ที่สงวนไว้ได้อย่างง่ายดาย: (และอื่น ๆ !)

tune2fs -l /dev/sda1

ฉันจะให้ข้อมูลระบบของฉันสำหรับการอ้างอิงฉันจะลบบรรทัดที่ไม่เกี่ยวข้องกับคำถามนี้:

ส่วนหัว ... และชื่อไดรฟ์ข้อมูลฉันติดป้ายกำกับไดรฟ์ทั้งหมดทำให้ระบุได้ง่ายหากจำเป็น

tune2fs 1.42.4 (12-Jun-2012)
Filesystem volume name:   xenon
Last mounted on:          /
...

ต้องการให้สิ่งนี้พูดว่า "สะอาด" ในขณะที่ระบบกำลังทำงาน ซื่อสัตย์!

Filesystem state:         clean

นี่คือจุดเริ่มต้นของข้อมูลความจุของที่เก็บข้อมูล:

ที่นี่คุณจะเห็นว่าฉันมี 121,179,648 บล็อกรวม ... ด้วยขนาดบล็อก 4K (4096) ที่คูณด้วยจำนวนใหญ่ (462-ish GB) (ขนาดบล็อกระบุไว้ด้านล่าง)

Block count:              121179648

และบล็อกที่สงวนไว้ ... โดยดูจากหมายเลขด้านบนและหมายเลขด้านล่าง .. คุณควรจะสามารถคิดได้อย่างรวดเร็วว่าฉันจองไว้ 1% ในกรณีนี้ (4.62-ish GB)

Reserved block count:     1211796

พื้นที่ว่างในปัจจุบันมีเท่าไหร่? ที่นี่!

Free blocks:              104090586
...

และขนาดบล็อกที่สำคัญทั้งหมด มีประโยชน์สำหรับการคูณ

Block size:               4096
...

บรรทัดเหล่านี้บอกว่าใครเป็นบล็อกที่สงวนไว้สำหรับ ... user 0, root ในกรณีนี้

Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
...

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

หวังว่านี่จะช่วยได้ จำไว้ว่า ... หน้าคนเป็นเพื่อนของคุณ


2

สิ่งนี้แสดงพื้นที่ว่างเป็นไบต์ในพาร์ติชันที่เกี่ยวข้องกับ "/ path"

printf '%s' $(($(stat -f --format='%f*%S' /path)))

คุณไม่จำเป็นต้องเป็น superuser ในการเรียกใช้

BTW ฉันไม่เข้าใจว่าอะไรคือความแตกต่างระหว่าง

ขนาดบล็อก% s (เพื่อการโอนที่เร็วขึ้น)

ขนาดบล็อกพื้นฐาน% S (สำหรับจำนวนบล็อก)

statในการใช้งานของ


เจ๋ง - บัญชีนี้ใช้สำหรับพื้นที่ที่สงวนไว้สำหรับรูทหรือไม่
Paul

@ พอลมันรวมอยู่ด้วย
jarno

เอาต์พุตของคุณเป็นผลรวมอย่างมีประสิทธิภาพ - ดังนั้นคุณสามารถไพพ์เอาท์พุทbcเพื่อรับจำนวนไบต์หรือแม้แต่ใช้--format='%f*%S/1024/1024/1024' | bcเพื่อรับกิโลไบต์ / เมกะไบต์ / กิกะไบต์ / กิกะไบต์ขึ้นอยู่กับจำนวนหน่วยที่คุณเลือก
พอล

@ พอลฉันจะเรียกมันว่าผลิตภัณฑ์ คำนำหน้าไบนารีจะเรียกว่า kibibytes, mebibytes และ gibibytes ตามลำดับ การขยายเลขคณิต โดยรอบ$(( ... ))ทำการคำนวณ แต่มันจะส่งผลเฉพาะส่วนจำนวนเต็มของผลหาร (ถ้าคุณเพิ่มการหาร) หรือคุณหมายความว่าเชลล์ของคุณไม่รองรับการขยายเลขคณิต
jarno

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