Wenn ich es starte df
, zeigt es, dass das Root-Gerät voll ist.
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.9G 9.4G 0 100% /
Ich habe mir die inode
Verwendung angesehen und es ist ziemlich viel Platz für das Root-Gerät verfügbar
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 640K 103K 538K 16% /
Wenn ich den du
Befehl ausführe, wird jedoch angezeigt, dass ich nur 2G
aus verwendet habe 9.9G
.
ip-XXX-XXX-XXX-XXX:/$ du -xh --max-depth=1
14M ./etc
4.0K ./mnt
96K ./tmp
3.5M ./bin
0 ./sys
964K ./boot
4.0K ./srv
0 ./dev
55M ./lib
25M ./root
1.1G ./usr
4.0K ./opt
846M ./var
4.3M ./sbin
23M ./home
16K ./lost+found
0 ./proc
2.0G .
Es macht mich einfach verrückt und interessant. Dies ist ein großes Problem für uns, da die Root-Festplatte /
voll ist und einige Funktionen auf unserer Website fehlschlagen.
Bitte helfen Sie mir, dieses Problem zu lösen (auch zu verstehen).
Vielen Dank.
linux
debian
filesystems
disk-space
Rakesh Sankar
quelle
quelle
+df +du
Fragen unter Unix und Linux .du -x /
und ich sehe, dass nur 2G verwendet wird und ich habe die Inode-Größe berechnet, die ist160M
. Es hat mir geholfen, das Zeug zu verstehen, aber ich möchte dieses Problem nur lösen.du
als root gelaufen ? Andernfalls kann nur über die Dateien berichtet werden, auf die Sie zugreifen können.root
ncdu
Programm, das zur Visualisierung der Festplattennutzung beiträgt, nicht viel hinzuzufügen .Antworten:
Wenn Dateien in * nix gelöscht werden, bleiben sie auf der Festplatte (und belegen Speicherplatz), solange sie von einem Prozess geöffnet werden. Es ist ziemlich üblich, dies zu nutzen, um temporäre Dateien zu "sichern", indem sie mit einer kleinen Größe erstellt, gelöscht und dann die gelöschte Datei zum Speichern von Daten verwendet werden, ohne dass andere Prozesse (leicht) darauf zugreifen müssen Der Speicherplatz in gelöschten Dateien kann sehr groß werden, wenn beispielsweise eine temporäre Datenbank oder eine Multimedia-Bearbeitungssitzung auf diese Weise behandelt wird. Eine andere Möglichkeit, wie Sie so viel "verlorenen" Speicherplatz haben könnten, wäre, wenn das System (mehrmals) aktualisiert wurde, ohne Programme neu zu starten oder neu zu starten, was dazu führt, dass alle Ihre alten .so-Bibliotheken von Programmen geöffnet werden, die vor dem gestartet wurden Upgrade und laufen noch.
df
Der von diesen Dateien verwendete Speicherplatz wird angezeigt, da nur angezeigt wird, wie viel Speicherplatz auf dem Gerät zugewiesen ist. Er wirddu
jedoch nicht angezeigt, da keine entsprechenden Verzeichniseinträge vorhanden sind.Ein solcher "versteckter" verwendeter Speicherplatz kann nur freigegeben werden, wenn Prozesse, die gelöschte Dateien geöffnet haben, diese schließen. Sie können diese Prozesse mit dem
fuser
Befehl finden und beenden (oder für viele Daemons ein Signal senden, das sie auffordert, geöffnete Dateien zu schließen und erneut zu öffnen).quelle
hidden
verwendeten Speicherplatz zu finden , versuche ich, denfuser
Befehl auszuführen , um alle Dateien anzuzeigen , die von einem Prozess verwendet werden, aber nicht verknüpft sind - ich konnte keinen finden. Haben Sie einen Befehl oder eine Anweisung, die mich dazu bringt, ihn zu finden? Dies ist der Befehl, den ich benutzefuser -v -a /
Es gab Zeiten, in denen, wenn die Festplatte voll wird, bis zum Neustart / erneuten Bereitstellen verwirrt werden kann, dass die Festplatte noch voll ist, selbst wenn Sie eine Menge Dateien gelöscht haben.
quelle
Auf meiner Seite habe ich syslogd einfach neu gestartet, um den Speicherplatz zurückzugewinnen. Ich hatte 3 GB vermisst! Mein Server war 250 Tage alt.
quelle
Es gibt eine Möglichkeit, Speicherplatz zu bereinigen, ohne die Anwendung neu zu starten. Hier sind die Details:
foo
Angenommen , Sie führen einen Prozess aus und erstellen eine 2-GB-Datei mit dem Namen abc.log. Angenommen, dieses abc.log wird von einer anderen Person gelöscht.Holen Sie sich
foo
die PID (sagen wir 123). Es/proc/123/fd
wird also eine Liste der Dateideskriptoren angezeigt, die von geöffnet wurdenfoo
. Eine mit abc.log wird als gelöscht angezeigt. Sagen wirfd
von abs.log ist 111. Wenn Sie laufenless /proc/123/fd/111
, es wird Ihnen immer noch alles , was 2 GB Daten zeigen.Ausführen
echo " " > /proc/123/fd/111
. Dadurch wird der Inhalt mit einer leeren Zeichenfolge überschrieben. Wenn Sie nach diesem Befehl versuchendf
, werden weitere 2 GB angezeigt, die durch Bereinigen von abc.log wiederhergestellt wurden.Das ist es. Ich habe dies unter CentOS versucht und es funktioniert.
quelle