ルートドライブのディスク領域が不足しています。空き領域を増やすにはどうすればよいですか?


35

Ubuntu 11.04を使用していますが、ルートディレクトリの空き領域を増やしたいのですが、これはオーバーロードされています。特に、アプリケーションのインストールに使用するパスを変更したい(それらはルートドライブに直接インストールされます)。

もう1つの考慮事項は、MySQLデータベースサーバーで作業していることです。サーバーはルートディレクトリ自体にインストールされるため、データを失うリスクはありません。

この問題を解決するためのヒントを教えてください。

回答:


36

最近、私は同様の状況に直面しました。インストールされたアプリケーションが多すぎて、ルートマウントスペースを使用し始めました。私が従ったいくつかの手順をリストし、同じ手順を使用できることを期待しています。

  1. apt-getキャッシュを消去します。次のコマンドは、ダウンロードされたすべてのdebファイルをapt-getキャッシュディレクトリから削除します。

    次のコマンドを実行します: sudo apt-get clean

  2. / homeマウントポイントを別のドライブに移動します。以前は、ホームフォルダーはルートドライブにありました。そこで、ホームフォルダを別のドライブに移動しました。ほとんどのアプリケーションはデータを/ home / user_name /フォルダーに保存するため、これによりルートマウントから多くのストレスを解放できました。ホームフォルダーを別のドライブに移動する方法をお読みください

  3. ルートパーティションのサイズを大きくするそれは非常に明白な答えだと知っています。しかし、信じてください。データは時間とともに変化する必要があります。20 GBの/ rootマウントで十分だと思いましたが、1年でルートマウントのサイズを変更し、50 GBに増やしました。


8
sudo apt-get cleanは予想よりも多くのスペースを解放しました。+ 1
btk 14年

apt-get cleanインストール済みのパッケージも削除することに注意してください。アップグレードが失敗した場合に備えて、これらを保持することができます。
タイミング

キャッシュを消去し、10 Gbをクリアしました!+1
ヌメリはモニカ

28

次のコマンドを使用して、古いヘッダーと画像を削除して3.5 GBを正常にクリアしました。

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

コマンドの最初の部分を実行して、どのパッケージがパージされるかを確認できます。

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

参照


他のヒントは役に立ちませんでしたが、これにより5Gを節約できました。ありがとう。
バルタスベハ

-yapt-getコマンドのオプションは実際には必要ありません。省略すると、apt-getは(一度だけ)パイプされたパッケージをすべて削除するかどうかを尋ねます。を使用しない方が良いと-y思います(上記の2番目のコマンドに加えて)確認する可能性がもう1つあります。私にとって、これはルートパーティションで15GBを解放しました!
ボリスデッペン

2
コマンドdpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge は、システムに現在インストールされているカーネルバージョンを削除しようとしました。システムを起動不能にしないように注意してください。
アントニー

@Antony yaikes!私はこれをしようとしていました。削除してもよいかどうかを確認するにはどうすればよいですか?
ソニックソウル

2
@SonicSoul私は最終的に、以下の回答のいずれか(askubuntu.com/a/778442/333806)が示唆することを実行しました。基本的に、uname -r現在のカーネルを見つけるために実行し、削除しないように注意しました。homebrandどのパッケージがパージされるかを確認するために提供されるコマンドが現在のカーネルを表示しない場合、彼が言及したパージコマンドを安全に実行する必要があります。
アントニー

22

を使用dpkg-queryして最大のパッケージを見つけ、不要になったパッケージを削除します(ソース):

dpkg-query --show --showformat='${Package;-50}\t${Installed-Size}\n' | sort -k 2 -n | grep -v deinstall | awk '{printf "%.3f MB \t %s\n", $2/(1024), $1}'

1
今、これは本当に便利なワンライナーです。最大のインストールパッケージの簡単な要約に最適です。私のドットファイルに来てください!
-arainone

これを入手するにはwajig sizes
Pablo A

13
sudo apt autoclean  # clean /var/cache/apt/archives folder which save packages while install.
sudo apt autoremove # this command remove unused packages.

sudo shutdown -rf   # it will restart your PC immediately and check filesystem in next boot.

19
説明はありません。誰かがあなたのコードを単にコピー/ペーストすると、システムは警告なしでシャットダウンし、データの損失を引き起こす可能性があります。コマンドの動作を説明せずにコマンドを提供しないでください。-1
ジョーエルレンドシンスタッド

9
なぜファイルシステムをチェックする必要があるのですか?
ネイサンオスマン

10

古いカーネルバージョン(homebrandで既に提案されている)を削除すると、まだ実行していない場合はかなりの容量を解放できます。

古いカーネルバージョンを削除するにはいくつかの方法があり、さまざまなオプションの範囲が投稿された回答にあります:古いカーネルバージョンを削除してブートメニューをクリーンアップするにはどうすればよいですか?

私が好む方法は、ペンリターンからのこの回答であり、かなり単純な理解可能なステップに分割されています:

ターミナルを開き、現在のカーネルを確認します。

uname -r

このカーネルを削除しないでください!

次に、以下のコマンドを入力して、システムにインストールされているすべてのカーネルを表示/一覧表示します。

dpkg --list | grep linux-image

現在のカーネルよりも低いすべてのカーネルを見つけます。削除するカーネルがわかったら、以下に進んで削除します。

以下のコマンドを実行して、選択したカーネルを削除します。

sudo apt-get purge linux-image-x.x.x.x-generic

パージが終了すると、答えは「update-grub2」になりますが、これは現在古くなっている可能性があります。Ubuntu14.04 sudo update-grub以降で十分です。また、彼らは「システムを再起動する」(これはクリーンアップされた起動メニューを見ることができるように思われる)とも言うので、この場合は必要ありません。

grubブートローダーメニューは、メインページにすべての古いカーネルバージョンを表示するために使用されていましたが、現在はサブメニューの後ろに隠れています。それはかなりすてきですが、Ubuntu / Linuxの初心者は、スペースを占有していることに気付いていないかもしれません。

提案されているように、現在のカーネルを削除しないでください。また、以前のカーネルバージョンも保持することをお勧めします。

これを行うにはより高速な方法がありますが、主に途中で各コマンドを理解できるため、この方法のシンプルさを好みます。

「使用しているカーネルのバージョンは何ですか?持っているカーネルのバージョンは何ですか?さて、それを削除してください。」

すすぎ、繰り返し、解放したスペースを賞賛します。

dpkg --list | grep linux-imageターミナルで表示される結果から削除する特定の古いカーネルの名前をコピーして、コピーした名前を使用sudo apt-get purgeして貼り付けるのはかなり簡単です。

通常、3つまたは4つの古いカーネルを削除すると、ルートドライブの空き容量が約1 GBになります。


1
linux-imageに加えて、linux-headersをgrepおよびパージすることもできます
kdopen

8

サーバーの空き容量を増やす必要がある場合、次のコマンドを使用します。

find / -type f -size +50M -exec du -h {} \; | sort -n

50 MBを超えるすべてのファイルを検索し、ファイルのdu -hリストを作成し、"sort -nパイプの後にファイルサイズで数値順にソートしたリストを作成します。


システムの大きさによっては、時間がかかる場合があります。HDDで約500 gbで15分かかった
Gabriel Fair

7

Ubuntuコミュニティのドキュメントの指示に従って、大量のゴミファイルを発見しました-/var/log/syslog.1のバックアップのように見えましたが、おそらく何かがsyslogに大量の出力を吐き出していました...

それを見つけたコマンドは:

sudo find / -size +1G

そして、というフォルダ内の大きなファイルは、.Trashおそらく削除するのが良いでしょう...


5

ルートパーティションの空き領域を確保するために実行するスクリプトを次に示します

function myclean {
    ## Show free space
    df -Th | grep -v fs
    # Will need English output for processing
    LANG=en_GB.UTF-8

    ## Clean apt cache
    apt-get update
    apt-get -f install
    apt-get -y autoremove
    apt-get clean

    ## Remove old versions of snap packages
    snap list --all | while read snapname ver rev trk pub notes; do
        if [[ $notes = *disabled* ]]; then
            snap remove "$snapname" --revision="$rev"
        fi
    done
    ## Set snap versions retain settings
    if [[ $(snap get system refresh.retain) -ne 2 ]]; then snap set system refresh.retain=2; fi
    rm -f /var/lib/snapd/cache/*

    ## Remove old versions of Linux Kernel
    # This one-liner is deprecated since 18.04
    # dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs apt-get -y purge
    # New 2 lines to remove old kernels
    dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs apt-get -y purge
    dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs apt-get -y purge

    ## Rotate and delete old logs
    /etc/cron.daily/logrotate
    find /var/log -type f -iname *.gz -delete
    sudo journalctl --rotate
    sudo journalctl --vacuum-time=1s

    ## Show free space
    df -Th | grep -v fs
}

編集:新しい2行古いカーネルクリーナー
cmak.fr

ありがとう!「古いログの回転と削除」により、ドライブのいくつかのギグをクリアします。
SaTa

いいね 開発者は、したいことがあり、その未使用のドッキングウィンドウの画像を削除docker system prune
パブロA

@Pablo A彼らも見ているかもしれ/var/crash/*.crashない
cmak.fr

sudo関数を呼び出す必要があるため、関数sudo内では冗長に見えます。また、vacuum-time=1s常に動作しない場合がありますが、私は代わりに真空サイズを使用するので、私はよく分からない:forum.manjaro.org/t/...
WinEunuuchs2Unix

2

Ubuntuでは、各フォルダーに独自のファイルシステムを設定できます。つまり、任意のフォルダーを独自のパーティション、別のディスク、さらにはリモートネットワークに移動できます。これは、ホームディレクトリで特に人気があります。これは、個人設定を変更したりファイルを失うことなくUbuntuを再インストールできることを意味します。また、ユーザーが別のマシンにログオンし、自分の個人設定とファイルを取得できるネットワークでも人気があります。しかし、それはあなたのような多くの異なる場合に役立ちます。

ご提案のように、アプリケーションは特定のフォルダーにインストールされません。アプリケーションのさまざまな部分は、ファイルシステムのさまざまな部分に配置されます。メインプログラムは通常/ usr / binに配置されますが、構成ファイルは/ etcに配置されます。MySQLの場合、データベース自体は/ varのどこかに配置されます。/ var / mysqlと思います。

/ usrと/ varは両方ともルートファイルシステムのディレクトリであるため、ルートファイルシステムスペースを使用します。しかし、私が言ったように、それらを異なるファイルシステムに移動できます。MySQLの場合、データベースの保存場所を構成できます。たとえば、データベースを/home/username/.mysql/databasesに簡単に移動できます。


1

パッケージマネージャーがアプリケーションをインストールするパスを変更することはできません。ほとんどのアプリケーションファイルはに保存され/usrます。ルートパーティションの領域を回復する場合/usrは、別のパーティションに移動することが解決策です。

コメントから:

  • コピーする際に権限を保持します。つまり、ファイルマネージャーが何をするかわからない場合は、コマンドラインを使用することをお勧めします。

  • これに対する正しい方法は、新しいファイルシステムを/ usrにマウントするか、を使用することmount --bindです。シンボリックリンクがどの程度うまく機能するかは明確ではありません。


/ usrの移動には注意してください。cpコマンドを使用して、同じ権限でusrフォルダーをコピーします。次に、元の/ usrフォルダーを削除し、/にusrフォルダーのリンクを作成します。
シャンタヌ

1
マウントポイントが必要です。リンクではありません。
ジョエルレンシンスタッド

小さなメモ:多くのアプリケーションは、バイナリとアプリケーションデータもにインストールし/optます。
ネイサンオスマン

@ george-edisonさて、いくつかのアプリケーションは/opt「ルール」に反するものをインストールします。
1

1

別のファイルシステムがたくさんある場合、次のトリックが便利かもしれません:Mount / another time、今回は/ mntの下。これで、間違ったファイルシステムを走査することなく、大規模または多数のファイルのすべての検索を実行できます。

また、別のマウントの下に隠されているファイルを見つけるのに役立ちます。



0

mssqlデータベースサーバーがインストールされている場合、メモリを使い果たす可能性があります。NCursesディスク使用量の実行

$ sudo ncdu / 

最大のストレージを使用しているフォルダーとファイルを確認する。mssqlデータは通常、次の場所に保存されます

/var/opt/mssql/backup/

質問は、データベースを残す必要があると述べています。
スティーブン

質問はMySqlデータベースに言及したので、もし彼がMsSQLデータベースのデータを削除するなら、それはかなり公平な答えだと思います。
ヨゲシュ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.