OSがCentOS7
である私のマシンは、50GデータをMySQLにバックアップする必要があります。しかし、デバイスにはスペースが残っていません。しかし、/home
には多くのスペースがあります。 MySQLがデータを保存するのに十分なスペースがあることをユーザーにどのようにして知らせることができますか/dev/mapper/centos-root
にスペースがないと思います。スペースを/home
から/
に移動するにはどうすればよいですか。
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 50G 50G 20K 100% /
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 84K 7.8G 1% /dev/shm
tmpfs 7.8G 2.6G 5.2G 34% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/mapper/centos-home 500G 20G 480G 4% /home
/dev/sda1 497M 241M 257M 49% /boot
tmpfs 1.6G 16K 1.6G 1% /run/user/42
tmpfs 1.6G 0 1.6G 0% /run/user/0
tmpfs 1.6G 4.0K 1.6G 1% /run/user/1000
そしてg++
コンパイルコードが失敗しました。
$ g++ test.cpp
Cannot create temporary file in /tmp/: No space left on device
[1] 6642 abort (core dumped) g++ test.cpp
最初に、ルートパーティション( "/")がいっぱいにならないようにする必要があります。そうしないと、システムで多くの問題が発生します。多くのシステムおよびユーザータスクで書き込み可能な/ tmpが必要です。
ルートパーティションは50 GBしかないため、現在のパーティション構造で必要なスペースを確保することはできません。
オプションは、MySQLデータファイル用のスペースを確保するために、別の/ var(/ homeのスペースが足りない)を再パーティション化することです。ユーティリティpartedがそれを行います。それがホストされているマシンであり、簡単ではない、または実行できない可能性がある場合、何をしているかわからない場合は、そのユーティリティをいじることはお勧めしません。
それが失敗した場合、それは少しハックですが、シンボリックリンクでそれを回避することができます。繰り返しますが、通常はお勧めできません。実行中のデーモンにはファイルロックがあり、移動を停止するため、おそらくマシンをシングルユーザーモードにする必要があります。本質は次のとおりです。
mv /var /home
ln -s /home/var /var
その場合、おそらくマシンを再起動してきれいに起動する必要があります。
shutdown -r now
明確な計画がないと、ディスクパーティションをいじるのが非常に面倒になる可能性があるため、何をしたいかを調べてください。
CentOs 7を使用して2つのIDEを試しましたが、約16000ファイルのプロジェクトを処理するのと同じ問題がありました。
「デバイスにスペースが残っていません」がIDEによって記録されました。
両方のIDEがハングしているか、応答していなかったか、デバッグアクションが停止または一時停止すると、システム全体がクラッシュするか、デスクトップセッションが終了します。
そしてそれは言ったメッセージログで:
Oct 2 10:44:08 localhost gnome-session: inotify_add_watch("/home/tools/trunk/ext/boost/libs/hana/example/functional") failed: "No space left on device"
Centosカーネルには、フォルダー監視などのためのバッファーがあることがわかります。
私はsfuser0000によるソリューションを this site。 で見つけました。これはソリューションのコピーです:
一般的な問題、一時的な解決策、監視制限を(たとえば、512Kに)増やします。
Sudo sysctl fs.inotify.max_user_watches = 524288
(私のために働いたが、私はおそらく永続的でおそらくもっと大きくなるだろう、以下の情報)
変更を永続的にするには、ファイル/ etc/sysctl.confを編集し、ファイルの最後に次の行を追加します。
fs.inotify.max_user_watches = 524288
以下のサイズ情報:
「あなたは時計を増やすことができますか?どれだけ?トレードオフはありますか?短い答え:確かに、汗はありません。必要に応じて、50万(524288)までまっすぐに進んでください...使用される追加のメモリは、現代のシステムでは無視できるはずです。 4GB +のメモリを搭載。
使用される各inotifyウォッチは、540バイト(32ビットシステム)、または1 kB(ダブル-64ビット)を消費します。これは、スワップできないカーネルメモリから発生します。したがって、最大値を524288に設定し、すべてが使用された(ありそうにない)とすると、約を使用します。 256 MB/512 MBの32ビット/ 64ビットカーネルメモリ
また、アプリケーションはinotifyハンドル、ファイル/ディレクトリパスなどを追跡するために追加のメモリを使用することに注意してください。その程度はデザインに依存します。」
ハードリンクが後の段階で問題を引き起こす可能性があるため、acronisなどの専門的なツールを使用してオペレーティングシステムをクローンし、より大きなパーティションを持つより大きなディスクにクローンします。新しいディスクレイアウトに移動した後、centosが起動しない可能性があるため、boot rescueを使用してgrubを再構築します。
永続的なソリューション:
fs.inotify.max_user_watches = 1048576#この行に追加するだけ
に
/ etc/sysctl.conf
制限値を永久に修正しました
それから
sysctl -p
MySQLのバックアップonlyを/
パーティションに保存すると、データを簡単に移動できます。
データを/opt/backup/
に保存するとします。
バックアップがそのディレクトリに書き込むことを停止します(バックアッププログラムを使用している場合)
/
のバックアップフォルダーを/home/
(または/home
の任意のフォルダー)に移動します
#mv/opt/backup// home /
古いディレクトリへのシンボリックリンクを作成します。
#ln -s/home/backup// opt/backup
バックアッププログラムがchmod
を使用した/home/backup
への書き込み権限を持っていることを確認するための適切な権限を付与します。
バックアッププログラムを開始します