VPSにスワップスペースを追加するハックを展開しましたが、それ以外の場合はVPSを使用してswapon
ファイルを作成できませんでした。
スクリプトを追加して実行する前に、次の手順に従いました。ここで概要を確認してください。そして次のようにまとめました。
- まず、スワップファイルを作成します。
sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k
- 次に
sudo mkswap /swapfile
。 - 次のステップは通常
sudo swapon /swapfile
。この投稿。 回避策として、次のスクリプトが使用できると主張します。
以下を参照してください。
#!/bin/bash
SWAP="${1:-512}"
NEW="$[SWAP*1024]"; TEMP="${NEW//?/ }"; OLD="${TEMP:1}0"
umount /proc/meminfo 2> /dev/null
sed "/^Swap\(Total\|Free\):/s,$OLD,$NEW," /proc/meminfo > /etc/fake_meminfo
mount --bind /etc/fake_meminfo /proc/meminfo
詳細については、プロセスを詳しく説明してください。この回答では。 (これは主にbashスクリプトをプッシュすることです。)
すべてが問題ないようですが、htop(またはその問題について)を見ると、free -m
メモリ使用量はスクリプトを実行したときの値のままになり、使用されたスワップ領域はゼロになります。これはサーバーで実行されているプロセスとは関係ありません。メモリ割り当てで何が起こっているのか私の理解は非常に限られています。文字通り私がそれを台無しにしたのは今回が初めてです。私が実行しているスクリプトを考えると、これが意味があるのか、そしてその理由が何であるかを誰が教えてもらえますか?
ベストアンサー1
その投稿の「偽の交換」が何を意味するのかを誤解しました。いくつかのプログラムでは、さまざまな理由でシステムでスワップスペースを有効にする必要があると主張しています(咳信託咳)。そうでなければ、プログラム(または少なくともインストーラ)は文句を言うでしょう。もちろん、上記のデータベースには引き続き実行できる方法がありますが、人々はこれについて知らないことがよくあります。
見つけた「偽のスワップ」が回避策です。これは、これらのプログラムにうそをつき、スワップが有効になっているかのように偽装する方法です。交換は嘘です。実際の交換はありません。しかし、プログラムはそれが存在すると信じているので文句はありません。ソリューションにはetc。とfree
の他のすべての値も含まれます。/proc/meminfo
(正直に言うと、管理は、作業中のシステムでこの用語が使用されていることを発見した場合は、「解決方法」よりも厳しい用語を使用します。これらの用語は丁寧な会話には適していません。)
他の質問に対するTanteの答えおそらく正しいでしょう。 OpenVZは仮想マシンでのスワッピングをサポートしていません。他のオプションはありませんswapon
。一連のチェックを実行し、カーネルのswapon
システムコールを呼び出します。システムコールがサポートされていない場合は完了です。あなたはできません。申し訳ありません。
解決しようとしている実際の問題に基づいて動作できるいくつかの異なるアプローチがあります。
- 特定のプロセスで大量のデータを処理する必要がある場合でも、
mmap
有効です。または、よりスペース効率の良いアルゴリズムを使用してください。 - 仮想マシンにより多くのメモリを割り当てる(またはプロバイダに要求/支払い)。ホストでスワップを有効にすることもできます。
- 別の仮想化ソリューションに切り替えるか、ベアメタルで実行してください。
- OpenVZコンテナ内でユーザーモードLinuxを実行できます。このUMLインスタンスでは、交換を有効にできます。私はパフォーマンスがひどいと完全に期待していました。