Score:4

ไม่มีพื้นที่ว่างในฮาร์ดไดรฟ์ประมาณ 900GB

ธง ae

ฉันมีไดรฟ์ WD M.2 ขนาด 2TB (1.8T) ซึ่งดูเหมือนจะไม่มีพื้นที่จัดเก็บหลายร้อย GB แต่ฉันไม่สามารถทราบได้ว่าไดรฟ์นั้นอยู่ที่ไหนหรือกำลังใช้อะไรอยู่ สิ่งนี้เกิดขึ้นกับ Samsung SATA SSD ของฉันด้วย ดังนั้นฉันจึงไม่คิดว่ามันเกี่ยวข้องกับตัวไดรฟ์ นี่เป็นพาร์ติชันเดียวในไดรฟ์เหล่านี้

ดีเอฟ บอกว่าฉันใช้ข้อมูล 1.3T

trever@เซิร์ฟเวอร์:~$ df -h
ขนาดระบบไฟล์ที่ใช้ Avail Use% Mounted on
อูเดฟ 32G 0 32G 0% /เดฟ
tmpfs 6.3G 5.7M 6.3G 1% /รัน
/dev/nvme0n1p2 1.8T 1.3T 477G 73% /

ตัววิเคราะห์การใช้งานดิสก์ (baobab) บอกว่าฉันใช้พื้นที่ประมาณ 850GB ซึ่งสำหรับฉันแล้วดูเหมือนว่าจะแม่นยำกว่าสำหรับสิ่งที่ฉันคาดไว้ ฉันรันสิ่งนี้ในฐานะรูท (ซูโด เบาบับ) และให้มันสแกนไดรฟ์รูท / และนี่คือสิ่งที่ได้กลับมา

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นตัวตรวจสอบระบบยังบอกว่าฉันใช้ 1.4T ซึ่งก็ใช้ได้ ฉันเข้าใจว่าอาจมีการปัดเศษและ/หรือวิธีคำนวณพื้นที่ดิสก์

การใช้พื้นที่เก็บข้อมูล 800-900GB เหมาะสมกว่าสำหรับฉัน ฉันตรวจสอบสิ่งต่างๆ เช่น พื้นที่ที่สงวนไว้:

trever@server:~$ sudo tune2fs -l /dev/sda1 | grep -i "จำนวนบล็อก"
[sudo] รหัสผ่านสำหรับเทรเวอร์: 
จำนวนบล็อก: 976754176
จำนวนบล็อกที่สงวนไว้: 48837708

ฉันได้ตรวจสอบขนาดของ /var/logs (20GB)และ /var/cache/apt/เอกสารสำคัญ/ (380MB) และฉันก็ยังไม่ทราบว่าหลายร้อย GB หายไปที่ไหน

มีข้อเสนอแนะเพิ่มเติมเกี่ยวกับสิ่งที่จะทำให้พื้นที่นี้เพิ่มขึ้นหรือไม่

อัปเดต: พื้นที่ว่างมากขึ้นเรื่อย ๆ ดูเหมือนจะหายไปเมื่อเวลาผ่านไป ตอนนี้ฉันอยู่ที่ไหน:

trever@เซิร์ฟเวอร์:~$ df -h
ขนาดระบบไฟล์ที่ใช้ Avail Use% Mounted on
อูเดฟ 32G 0 32G 0% /เดฟ
tmpfs 6.3G 5.3M 6.3G 1% /รัน
/dev/nvme0n1p2 1.8T 1.6T 157G 92% /

และนี่คือสิ่งที่ฉันสามารถอธิบายได้:

เซิร์ฟเวอร์ root@:~# du -cha --max-ความลึก=1 --exclude=/Volumes/* / | grep -E "M|G"
42M /สคริปต์
du: ไม่สามารถเข้าถึง '/proc/44457': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
du: ไม่สามารถเข้าถึง '/proc/44535': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
du: ไม่สามารถเข้าถึง '/proc/44586/task/44586/fd/4': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
du: ไม่สามารถเข้าถึง '/proc/44586/task/44586/fdinfo/4': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
du: ไม่สามารถเข้าถึง '/proc/44586/fd/3': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
du: ไม่สามารถเข้าถึง '/proc/44586/fdinfo/3': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
94G /var
du: ไม่สามารถเข้าถึง '/run/user/1000/gvfs': ปฏิเสธการอนุญาต
5.3M /รอบ
2.1G /swapfile
183M/คัน
14M / ฯลฯ
538G /นักเทียบท่า
202G /บ้าน
8.9G /usr
6.0G /สแนป
1.8G /รูท
852G /
รวม 852G

ฉันได้ทำก ฟค และดูเหมือนว่าจะดี ฉันไม่แน่ใจว่าอะไรกินพื้นที่ของฉันอย่างน่าอัศจรรย์ แต่มันค่อนข้างเกี่ยวข้อง

in flag
What file system are you using on your SSD? If it’s ZFS, you may have a bunch of space tied up in snapshots
trever avatar
ae flag
Sorry, should have mentioned that, im using EXT4.
in flag
I wonder how many “tiny files” you have, as this may be leaving a large number of blocks mostly empty. The difference between “file size” and “space a file uses” is generally not an issue people see until they start working with multi-TB storage devices
za flag
Too long ago to remember exact details, I had similar problems with pre-20.04 releases, thrice. Once was a partition issue. Once was a weird file. Once was neither, and I could find no solution, nobody to help. I was left with no option but to perform a fresh, manual install. The fresh install needed about 20 minutes, and solved all issues. lol, expedience has value.
oldfred avatar
cn flag
Have you emptied trash? Housecleaned? Some tools show totals with and others without. I prefer command line tools like df, du (or ncdu) & lsblk and then gparted if using GUI. How did /var get ot 85GB? My /var in Kubuntu 20.04 is 800MB.
cc flag
Check what's under any mount points too. See https://unix.stackexchange.com/questions/4426/access-to-original-contents-of-mount-point
nobody avatar
gh flag
`findmnt` please.
heynnema avatar
ru flag
Does the drive have a MBR (dos) or GPT partition table? See `sudo fdisk -l`. Report back. Start comments to me with @heynnema or I'll miss them.
trever avatar
ae flag
@oldfred - yes I have emptied the trash and everything I could find. `/var` is large because of Docker it appears.
trever avatar
ae flag
@nobody - https://gist.github.com/Treverr/79cfc04baac54db0a3dd1e97b1b03fe7
trever avatar
ae flag
@heynnema - GPT (https://gist.github.com/Treverr/74b0bebf551e3b0cd187823fc08a995b)
Robert Riedl avatar
us flag
do you use sparse files ?
Satoshi Nakamoto avatar
lc flag
I don't think is anything missing at all with `df -h` it says that there is 477G AVAILABLE. Are you referring to unusual space occupying the SATA, maybe it's an issue between the manufacturer and Ubuntu's capability of handling this driver. How was it before?
trever avatar
ae flag
@RobertRiedl I do not on this drive
trever avatar
ae flag
@Tyþë-Ø - What im seeing is that the USED space minus the capacity of the drive (1.8T) does not come close to what the available is reporting. Its off by nearly 500GB. I am seeing the same thing across 2 different drives when I moved from a SATA to NVMe M.2 drive.
Satoshi Nakamoto avatar
lc flag
Sure so you made a mistake. There's two sort of data types, MiB (megabibytes) and MB(megabytes), your driver never will be exactly 1.8TB because of that conversion.
Satoshi Nakamoto avatar
lc flag
Besides I see that /udev and tmpfs occupies 38GB and sum up 477GB + 38GB = 515GB. I believe you got your answer
ExploitFate avatar
zm flag
Could you run `fsck` and add output to the question?
trever avatar
ae flag
@ExploitFate I have ran `fsck` recently and the file system is in good shape. I can run it again. But now `df` is showing that I only have 25GB available and I still cannot figure out why
trever avatar
ae flag
Anyone have any other ideas? Nothing suggest this far has done anything and I now have almost 1TB of missing space. Something is seriously wrong.
trever avatar
ae flag
@SatoshiNakamoto not sure I understand what you mean. For example now `du` adds up to 852G and `df` says 1.6T has been used, thats double but I still cant find out where the 800GB is.
Robert Riedl avatar
us flag
I still think this is somehow related to docker how it handles files..
trever avatar
ae flag
Any idea how I could test this theory / confirm it? Stop all my docker services?
Score:2
ธง in

สมมุติฐาน: ลบแล้ว แต่ยังเปิดไฟล์อยู่

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

นี่อาจเป็นผลมาจากกิจกรรม Docker ในระบบไฟล์

หลักการแก้ปัญหา

  • เปิดเผยไฟล์ที่ถูกลบซึ่งยังคงอ้างอิงโดยกระบวนการ (ดูวิธีด้านล่าง)
  • เปิดเผยชื่อกระบวนการและ/หรือ ID เพื่อให้คุณมีคำแนะนำเกี่ยวกับสิ่งที่เกิดขึ้น
  • ปิดกระบวนการเหล่านั้น สังเกตพื้นที่ว่าง
  • หากทั้งหมดล้มเหลว ให้รีบูตเครื่องใหม่ ถ้าว่างก็เป็นไปตามสมมุติฐาน

วิธีการเปิดเผยข้อมูล

คำสั่งด้านล่างจะทดสอบสมมติฐานโดยการค้นหาและแสดงว่าไฟล์ใดใช้พื้นที่ใด

แวบแรก

สำหรับภาพรวมเบื้องต้น คุณสามารถออกสิ่งนี้:

lsof -n | egrep -w "ลบแล้ว|^คำสั่ง"

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

ตัวอย่าง:

คำสั่ง PID TID TASKCMD ผู้ใช้ FD ประเภท ขนาดอุปกรณ์/ปิด ชื่อโหนด
Xorg 1183 รูท 78u REG 0,1 4 2058 /memfd:xshmfence (ลบแล้ว)
Xorg 1183 รูท 85u REG 0,1 4 7182 /memfd:xshmfence (ลบแล้ว)
Xorg 1183 รูท 92u REG 0,1 4 7137 /memfd:xshmfence (ลบแล้ว)
Xorg 1183 รูท 94u REG 0,1 4 7870 /memfd:xshmfence (ลบแล้ว)

รายการง่าย ๆ ที่กรองแล้ว

สิ่งนี้กรองและแสดงไฟล์จริงเป็นส่วนใหญ่:

lsof -F "sn" -lnPX -M | sed -n 's|^n/|/|p' | ลบ grep | egrep -v '^/(dev/shm|memfd:|proc)' | LC_ALL=C เรียงลำดับ -n | ยูนิค

ตัวอย่าง:

/tmp/#someinodenumber (ลบแล้ว)

ข้อมูลที่สมบูรณ์พร้อมขนาด กระบวนการ และชื่องาน

สิ่งนี้น่าสนใจกว่า: มันจะแสดงรายการไฟล์ทั้งหมดพร้อมกับพื้นที่ที่พวกเขาครอบครองเป็นไบต์และอีกมากมาย

ขั้นแรก ส่วนที่ช้า รวบรวมข้อมูล

# คุณอาจต้องการเรียกใช้ส่วนนี้ในฐานะรูทเพื่อให้แน่ใจว่ามีการรายงานทั้งหมด
lsof -F "ctsupMin" -lnPX -M >|/tmp/lfosoutput 

จากนั้นประมวลผลและจัดรูปแบบสำหรับการแสดงผลที่สวยงาม เสร็จสิ้นและจัดเรียงตามขนาดที่เพิ่มขึ้น

#สามารถเรียกใช้เป็นผู้ใช้ปกติไม่จำเป็นต้องรูท
{ echo "SIZE^UID^PID^ชื่อกระบวนการ^ชื่องาน^INODE^PATH"
</tmp/lfosoutput \
python3 -c $'import sys ; ฉ={}
def g(c): กลับ f.get(c,"(ไม่ทราบ)")
สำหรับบรรทัดใน sys.stdin:
 ค=บรรทัด[0] ; r=บรรทัด[1:].rstrip() ; ฉ[ค]=ร
 ถ้า c=="n" และ f["t"]=="REG" \
    และ "(ถูกลบ)" ใน f["n"] \
    และไม่ใช่ f["n"].startswith("/memfd:") \
    และไม่ใช่ f["n"].startswith("/dev/shm") :
  พิมพ์(f'\''{g("s")}^{g("u")}^{g("p")}^\"{g("c")}\"^\"{ g("M")}\"^{g("i")}^{g("n")}'\'')
  ฉ={}' \
| LC_ALL=C เรียงลำดับ -n | ยูนิค
echo "SIZE^UID^PID^ชื่อกระบวนการ^ชื่องาน^INODE^PATH"
} | คอลัมน์ -t -s '^'

เอาต์พุตตัวอย่าง: ไฟล์ขนาด 36 เมกะไบต์ที่ Firefox ใช้

ขนาด UID PID ชื่อกระบวนการ ชื่องาน INODE PATH
36012032 1234 12345 "Isolated Web Co" "StyleThread#2" 1234567 /tmp/mozilla-temp-12345 (ลบแล้ว)
ขนาด UID PID ชื่อกระบวนการ ชื่องาน INODE PATH

(จริงๆมีหลายบรรทัดแบบนี้นี่แค่บรรทัดตัวอย่างนะครับ)

ทดสอบว่าสคริปต์เปิดเผยไฟล์ดังกล่าวจริงหรือไม่โดยสร้างไฟล์ขึ้นมา

ในเทอร์มินัลอื่น ให้คัดลอกและวางสิ่งนี้:

# เรียกใช้ล่ามแบบโต้ตอบของ Python
หลาม3
# ตอนนี้อยู่ใน Python
n="/tmp/whatever_file_name_you_want"
f=open(n,mode='a')
นำเข้าระบบปฏิบัติการ
os.unlink(n)
f.write("บางประโยค")
ฉ.flush()
#อย่าออกตอนนี้ไม่งั้นไฟล์จะหายไปจริงๆ

ในเทอร์มินัลแรก คุณสามารถเรียกใช้ทั้งสองขั้นตอนข้างต้น (การช้า lsof แล้วส่วนการจัดรูปแบบ) และตราบใดที่กระบวนการงูหลามด้านบนยังมีชีวิตอยู่ บรรทัดนี้จะถูกรายงาน:

ขนาด UID PID ชื่อกระบวนการ ชื่องาน INODE PATH
13 1000 1387343 "python3" "gdbus" 1308894 /tmp/whatever_file_name_you_want (ลบแล้ว)
ขนาด UID PID ชื่อกระบวนการ ชื่องาน INODE PATH

จากนั้นคุณสามารถออกจากตัวแปลภาษาไพ ธ อนด้านบน (กด คอนโทรล-ดี หรือพิมพ์ ทางออก (0)). หากคุณเรียกใช้ทั้งสองส่วน (ส่วน lsof ที่ช้าและส่วนการจัดรูปแบบ) คุณจะสังเกตเห็นว่าไฟล์ทดสอบไม่ปรากฏขึ้นอีกต่อไป

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

กลับไปที่กรณีของคุณ

เมื่อเรียกใช้สิ่งนี้ คุณอาจเห็นชื่อกระบวนการ ชื่องาน และไฟล์เป็นส่วนใหญ่ ไม่ว่าจะเป็นไฟล์ขนาดใหญ่สองสามไฟล์ เช่น รูปภาพที่ Docker ดึงมาจากเครือข่าย หรือไฟล์ขนาดเล็กจำนวนมากจาก Docker อีกครั้ง

หรืออย่างอื่น.

โปรดบอกว่าสิ่งนี้ช่วยคุณได้หรือไม่

Robert Riedl avatar
us flag
การรีบูตอย่างง่ายจะไม่กำจัดไฟล์ที่เปิดอยู่ซึ่งถูกลบจริงหรือไม่ หรือสิ่งนี้ทำงานแตกต่างกับ docker ?
mike mcleod avatar
cn flag
ฉันได้รับ: **lsof: WARNING: can't stat() nsfs file system /run/docker/netns/f91a371e0e9d** ดังนั้นนี่จึงไม่ได้ให้คำตอบจริงๆ แต่ดูเหมือนปัญหานักเทียบท่า ลองใช้เว็บไซต์นักเทียบท่า นอกจากนี้ ฉันมีไฟล์ในสถานะนี้ต้องมีวิธีจากพวก Ubuntu เพื่อล้างไฟล์เหล่านี้หรือไม่
mike mcleod avatar
cn flag
ฉันพบ **/tmp/.org.chromium.Chromium.XXXXX** แต่เมื่อฉันปิด Chrome มันก็หายไป! ระวัง!
trever avatar
ae flag
ขอบคุณสำหรับข้อมูลทั้งหมด! ดังนั้นฉันจึงเรียกใช้ `lsof` และในขณะที่ฉันได้ระบบไฟล์ 'can't stat() nsfs' จำนวนมาก ฉันได้รับไฟล์จริงอีก 2 ไฟล์เท่านั้น: `/home/trever/.local/share/gvfs-metadata/root (ลบแล้ว)` และ `/home/trever/.local/share/gvfs-metadata/root-5f2ee275.log (ถูกลบ)` ซึ่งมีขนาดเล็กทั้งคู่ คุณคาดหวังว่าจะมีมากกว่านี้หรือคุณคิดว่าปัญหานักเทียบท่าเป็นตัวการที่นี่?
in flag
`gvfs-metadata` ไม่เกี่ยวข้องกัน ข้อความ `ไม่สามารถ stat() nsfs file system` หมายความว่าคุณไม่มีข้อมูล คุณทำ `lsof` เป็น root หรือไม่?
trever avatar
ae flag
อาฉันไม่ได้ ฉันทำใหม่ทั้งหมดและนี่คือสิ่งที่ฉันได้รับ: https://gist.github.com/Treverr/98137ab1cdc754dcef1b7d6dad6c937c
trever avatar
ae flag
@StéphaneGourichon คุณมีความคิดอื่นอีกไหม? ตอนนี้ฉันมีพื้นที่ว่างหายไปเกือบ 1TB มีบางอย่างกำลังกิน "พื้นที่" อย่างบ้าคลั่ง
in flag
ตามส่วนสำคัญที่คุณเผยแพร่ ขนาดของไฟล์ที่ถูกลบนั้นค่อนข้างเล็ก ดังนั้นฉันจะบอกว่าสมมติฐานไม่ได้รับการยืนยัน คุณสามารถที่จะหยุดและเริ่มบริการ Docker และดูว่ามีการเรียกคืนพื้นที่หรือไม่ หากต้องการรีบูตเครื่องและดูว่ามีการเรียกคืนพื้นที่หรือไม่ ระบบไฟล์นี้คืออะไร (เช่น cat `/proc/mounts`) -- cf ความคิดเห็นของ matigo อาจเป็นสาเหตุอื่น
trever avatar
ae flag
@StéphaneGourichon- ขอบคุณที่ติดต่อกลับมาหาฉัน! ดังนั้นฉันจึงลองทำตามนั้น ฉันหยุดและปิดใช้งานระบบนักเทียบท่าและรีบูต และมันไม่ได้ให้พื้นที่ว่างแก่ฉันเลย ฉันไปไกลถึงการถอนการติดตั้ง Docker ทั้งหมดและรีบูตสิ่งเดียวกัน นี่คือสิ่งที่ฉันได้รับจาก `cat /proc/mounts` ขอบคุณอีกครั้ง! https://gist.github.com/Treverr/a250ebe9041b2939c873b1c167749b4f

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา