Selectelクラウドのシステムドライブでのパーティション分割

abstract :この投稿では、クラウド内のマシンでシステムドライブを整理する方法と、その理由を説明しています。



序文 :ここに書かれているすべては、仮想マシンのインストール中に作成されたシステムディスクに関するものです。 ユーザーは、これらのディスクで必要なことを行うすべての権利を持ち、さらに、追加のディスク上のスペースを整理する方法を独自に決定します。



やる気



システムディスクは、ユーザーが望むことを実行するのに十分な自由を与える形式で提供する必要があり、同時に、「ただ作業する」必要があるユーザーに十分なシンプルさと利便性を提供する必要があります。 問題はもう少し複雑ですが、これは便利なテレビのリモコンに関するものではなく、作業中のツールに関するものです。したがって、典型的なシナリオの利便性と独自の実装機能について話す方が正しいでしょう。



これに関連して発生する問題は次のとおりです。



最も原始的な解決策は ディスク全体のファイルシステム(/ dev / xvdaは「/」としてマウントされます)。 ブロックデバイスのサイズを変更した後、ファイルシステムに対して「サイズ変更」コマンドを実行するだけで、サイズを変更するのは非常に簡単です。 他の仮想マシンにも簡単に接続できます。 ただし、パーティションテーブルがないため、追加のパーティションを作成することはできません-通常の集合ファーム:ルート、ホーム、/ var / www(一部の場合は/ srv / www、誰かの場合は/ home / websitenameなど) )/ var / logおよび他のユーティリティファイルと同じパーティションに配置されます。 簡単でシンプルですが、高度なツールの役割をまったく引き出せません。 そして最も重要なことは、追加のドライブを接続することによってのみ新しいパーティションを作成できることです。 さらに、スワップパーティションを作成することもできません。ページファイルを作成するには、fallocateまたはddを使用する必要があります。



2番目のオプションは、古き良きパーティションテーブルです。 / dev / xvda1、/ dev / xvda5、/ dev / xvda6など 長所:シンプルでわかりやすく、他のマシンに簡単に接続できますが、たとえばルートのサイズを変更することは非常に困難です。 スワップパーティションを削除し、パーティションテーブルのパーティションのサイズを変更し、ファイルシステムのサイズを変更し、スワップファイルで何かを行う必要があります。 ディスク上にデータがあるパーティションがある場合、パーティションテーブルを移動するための気味が悪い危険な手順を開始する必要があります(そして、有料のディスク操作を考慮すると、これはまったく選択肢ではありません)。



最後に、3番目のオプションはLVMです。 良い点:ファイルシステムのサイズ変更は可能であり、非常に簡単です。 セクションの追加/削除が簡単。 同時に、ドライブを他のマシンに接続することで解決可能な問題がいくつかあります(また、どのような問題があります-以下を参照)。 ただし、小さな問題があります。 lvmでは、ブート方法がわかりません。 絶対に。



そのため、あまり便利ではないが、4番目のオプションを使用する必要がありました。



私たちの決定



パーティションテーブルは、2つのプライマリ(プライマリ)パーティションを持つシステムディスク上に作成されます:/ dev / xvda1-/ bootおよび/ dev / xvda2-LVMの物理ボリューム。 カーネルは/ dev / xvda1でロードされます。これは小さく、(良い意味で)サイズを変更すべきではありません。ファイルシステムとページファイルは2番目のパーティション内のLVM上にあります。



長所? パーティションのサイズ変更、他のマシンへの接続、ロード、無制限のパーティションの作成など、すべての問題を解決できます。

マイナス:サイズ変更はもはや「簡単で簡単」ではありません-少し緊張する必要があります。 しかし、それにもかかわらず、それは合理的な努力で可能です。



このオプションには未解決の問題がないため、解決しました。 もちろん、「純粋なLVM」を使用したいと思いますが、特に高いLVMの存在を考慮すると、pygrubからの解析は複雑すぎます(iSCSIを介したLVMを使用してクライアントディスクを格納します)。



典型的な操作



最も頻度の高いシステムパーティションのサイズ変更から始めましょう。

  1. ブロックデバイスのサイズを大きくします(コントロールパネル)
  2. ptmax / dev / xvda2を実行します
  3. 再起動(Linuxがルートパーティションでロックされたディスクの再読み込みを拒否したため)
  4. pvresize / dev / xvda2を実行します
  5. VGの無料PEで表示:vgdisplay
  6. 論理ボリュームのサイズを増やします:lvresize /dev/../root -l +(空きエクステントの数)
  7. ファイルシステムのサイズ変更:resize2fs /dev/../root


難しいですか? はい 柔軟で機能的ですか? はい! なんで? LVMを使用すると、多くの「回避策」が開かれるためです。 たとえば、リストの最後ではないセクションのサイズを増やすことができます。 または、たとえば、必要な数の論理ボリュームを簡単に作成できます。



ptmaxについて少し。 そのため、私たち(I)はこのユーティリティをゼロから作成する必要がありました。 コード自体はそこにあります-ガルキンの鼻で、チェックのほとんどは「すべてを正しく行います」。 ユーティリティの本質は、パーティションの背後にあるパーティションテーブルに空き領域がある場合、パーティションを可能な最大サイズまで増やします。 仮想マシンのディスクサイズを増やすための典型的なシナリオ。



以前は、fdiskの「delete / recreate」パーティションを使用してこれを行う必要がありましたが、これは穏やかに言えば、あまり安全ではありませんでした。 GPLの下のユーティリティ、従来はgithubにあります: github.com/amarao/ptmax



省略について少し。 省略記号の代わりに、 タブを使用し、マシンで使用されているVGという名前使用する必要があります 。 VG名には、インストール時のホスト名が含まれます(%hostname%_system)。 なぜ使用するのですか? 同じ名前を使用すると、ディスクが別のマシンに接続されたときに衝突が発生するためです(そして、衝突はVGの名前を変更することで解決できますが、一方向のみ-システムの2番目のVGに同じ名前を設定することはできません) 。 したがって、すべての車のすべてのVGには独自の名前があります。 予想される質問:2つの異なる仮想マシン(Moveton)に同じサーバー名を使用します。



2番目の典型的なシナリオは、別のセクションの作成です。 概して、最初の手順とはほとんど異なりません。



  1. ブロックデバイスのサイズを大きくします(コントロールパネル)
  2. ptmax / dev / xvda2を実行します
  3. 再起動(Linuxがルートパーティションでロックされたディスクの再読み込みを拒否したため)
  4. pvresize / dev / xvda2を実行します
  5. VGの無料PEで表示:vgdisplay
  6. パーティションの作成:lvcreate / dev / VGNAME -n LVNAME -L XXXMb
  7. ファイルシステムを作成します:mkfs.ext4 / dev / VGNAME / LVNAME
  8. システムをマウントしてfstabに登録します




次のシナリオはもう少し複雑です-ディスクを「外部の」仮想マシンに接続します。



ドライブを接続したら、VGをアクティブにする必要があります。

  1. pvscan / dev / xvdb(または別のデバイス名)
  2. vgscan
  3. lvscan
  4. lvdisplay
  5. lvchange -ay / dev / VGNAME / LVNAME(前の段落の出力に表示)
  6. マウント/アンマウント


作業終了後、ドライブを切断する必要がある場合は、「非アクティブ化」を行う必要があります。

  1. lvchange -an / dev / VGNAME / LVNAME
  2. vgchange -an / dev / VGNAME
  3. pvchange -an / dev / xvdb


その後、ドライブを「外出先で」オフにすることができます。



PSもう一度繰り返しますが、仮想ディスクのインストール後に形成されるシステムディスク(/ dev / xvda)についてのみ話します。 追加のディスクを接続して、自分の都合に合わせてサイズを変更できます。



All Articles