30GB ドライブを搭載した小型の Intel NUC を持っています。問題は、このドライブがいっぱいになっていることですが、原因がわかりません。
df
以下を報告する
Filesystem 1K-blocks Used Available Use% Mounted on
udev 899412 0 899412 0% /dev
tmpfs 189284 2676 186608 2% /run
/dev/sda2 28414508 27751116 0 100% /
tmpfs 946404 0 946404 0% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 946404 0 946404 0% /sys/fs/cgroup
/dev/loop0 128 128 0 100% /snap/bare/5
/dev/loop1 56832 56832 0 100% /snap/core18/2128
/dev/loop2 56832 56832 0 100% /snap/core18/2246
tmpfs 946404 0 946404 0% /tmp
/dev/loop3 314880 314880 0 100% /snap/makemkv/381
/dev/loop4 66688 66688 0 100% /snap/gtk-common-themes/1515
/dev/loop5 63360 63360 0 100% /snap/core20/1169
/dev/loop6 63360 63360 0 100% /snap/core20/1081
/dev/loop7 33280 33280 0 100% /snap/snapd/13270
/dev/loop8 317184 317184 0 100% /snap/makemkv/385
/dev/loop9 33280 33280 0 100% /snap/snapd/13640
/dev/loop10 66816 66816 0 100% /snap/gtk-common-themes/1519
/dev/sda1 306584 5356 301228 2% /boot/efi
tmpfs 189280 4 189276 1% /run/user/1000
これを計算すると、使用済みディスク容量は約 14 GB になります。
ランニングsudo lsof | grep REG | grep -v "stat: No such file or directory" | grep -v DEL | awk '{if ($NF=="(deleted)") {x=3;y=1} else {x=2;y=0}; {print $(NF-x) " " $(NF-y) } }' | sort -n -u | numfmt --field=1 --to=iec | tail -10
重要なプロセスがいくつか記載されたリストが表示されます。
5,5M /usr/lib/php/20190902/fileinfo.so
6,8M /usr/lib/jellyfin/bin/libcoreclr.so
8,0M /var/log/journal/6296b00d07874d0a9533eed0efb81840/user-1000.journal
8,2M /usr/lib/jellyfin/bin/System.Private.Xml.dll
8,3M /usr/lib/locale/locale-archive
8,9M /usr/lib/jellyfin/bin/System.Private.CoreLib.dll
10M /usr/lib/udev/hwdb.bin
24M /snap/snapd/13640/usr/lib/snapd/snapd
27M /usr/lib/x86_64-linux-gnu/libicudata.so.66.1
64M /memfd:pulseaudio
実行するとsudo du -sh / --exclude=disks --total
合計 13GB になります。
つまり、基本的に、システムがドライブのどこかにあると報告している不足している約 16 GB がどこにあるのかを調べる方法がわかりません。
レポートは実際にはそのように動作し、実行されています
cd ~/ && touch example && echo "FooBar" > example
-bash: echo: write error: No space left on device
よろしくお願いします。どんなアイデアでも良いのですが、基本的に、現時点では使用できないデバイスがあり、選択肢がほとんどありません (基本的に、クリーン再インストール/20 GB 以上使用しないデバイス用のより大きな SSD を購入する)
答え1
「/」パーティションを埋めているものを見つけるためのいくつかの可能性:
lsof -nP +L1
# 削除された(リンク解除された)が、プロセスによってまだ開かれているため、dist を占有しているすべてのファイルをリストする必要があります。- 次の回答も参照してください:https://unix.stackexchange.com/a/68532/27616いくつかの追加情報と試してみるべきことが記載されています
- 別の可能性:
df -ih /
そのファイルシステムに「数百万」の小さなファイルがないかどうか ( )を確認してください/
。各ファイルは少なくとも「少量」のディスク容量を占有します (通常、少なくとも 1 つの inode を占有するためで、そのサイズはファイル サイズとファイルシステムによって異なります)。これは積み重なる可能性があります... 占有される最小ディスク容量が 512 バイトの場合、1 バイトのファイルが 100 万個あると、100 万バイトではなく 512 百万バイトを占有することになります。 は占有されdf
ているディスク容量 (完全な inode 容量がカウントされます) を表示しますが、du
は追加されたファイル サイズ (つまり、それらのファイルの内容のみで、この内容を含む inode が占有する容量ではありません) を表示します。 - もう一つの可能性は、マウントされたファイルシステムに隠された大きなファイルが存在する可能性があるということです。つまり、マウントされたファイルシステムの「下」にいくつかのファイルが存在する可能性があります(おそらく、マウントされたファイルシステムに大量の大きなファイルを置いたのでしょう)。
/tmp
ディレクトリ(ファイルシステム内にあり/
、/tmp
ファイルシステムをマウントするためのマウント ポイントとして使用されるもの) ですか? これは/tmp
、ファイルシステムがマウントされていないときにそこに何かを置いた場合に発生する可能性があります。 これを確認するには、Linux で、/
(空きループ デバイスを使用して) 読み取り専用としてどこかに再マウントし (マウント ポイントの下にマウントするなど/mnt/readonlyroot/
)、 を使用してそれを参照し、#du -hs /mnt/readonlyroot
と比較します。これにより、du が の下にマウントされた別のファイルシステム (たとえば、ファイルシステム)に降りるのを防ぐことができます。du -hxs /
-x
/
/tmp
- あるマウント ポイントの下に読み取り専用としてマウントする (2 回目) コマンド
/
: 次のように実行できます (記憶が正しければ... 現時点では Linux で確認できません):mkdir -p /mnt/rootreadonly/
ディレクトリのマウント ポイントを作成します (皮肉なことに、これは "/" ファイルシステム内にあります...)mount -o loop -o ro /dev/sda2 /mnt/rootreadonly
(「/」ファイルシステムを読み取り専用として表示するためです。質問では「/」ファイルシステムが「/dev/sda2」にあると示されているため、ここでは sda2 を指定しています。この回答を読んでいる他の人は、まず の出力をチェックして、ファイルシステムmount
がどこから来ているのかを確認する必要があります/
...)
- あるマウント ポイントの下に読み取り専用としてマウントする (2 回目) コマンド