Parted コマンドライン ツールを使用して GPT のパーティションのサイズを変更する方法。(SSH Rescue Env を使用)

Parted コマンドライン ツールを使用して GPT のパーティションのサイズを変更する方法。(SSH Rescue Env を使用)

初期 OS インストール後にパーティションのサイズを変更するためのオンライン コントロール パネルがないリモート専用サーバーを所有しているため、マウントされていないパーティションを操作するために Debian ベースのレスキュー環境を使用しています。問題は、リモート ドライブのパーティション操作に関しては私が少し愚かだということです。GParted はオプションではないため、GNU Parted コマンド ライン ツールを使用しようとしましたが、ドライブが GPT でフォーマットされているため fdisk は役に立ちませんでした。バージョン 2.4 では resize コマンドが削除されていることがわかりました。そのため、parted の print コマンドから取得したパーティションのリストを以下に示します。

Number  Start   End     Size    File system     Name     Flags
1      20.5kB  1049kB  1029kB                  primary  bios_grub
2      2097kB  21.0GB  21.0GB  ext4            primary
3      21.0GB  2000GB  1979GB  ext4            primary
4      2000GB  2000GB  536MB   linux-swap(v1)  primary

私が理解する必要があるのは、#3 を約 1.2 TB に縮小し、#3 が縮小されたときに移動された分を埋めるために #2 を拡張する方法です。私の #2 パーティションはいっぱいで、#3 パーティションには余裕があります。

答え1

現在マウントされているもの(およびマウントする必要があるもの)と、マウントの問題を回避するために他のメディアから起動できるかどうかによって、必要な操作が実行できるかどうかが決まります。ここで考慮すべき要素は次のとおりです。

  • 常に次の違いを念頭に置いてください。パーティション(ディスク領域の開始点と終了点を定義する単純なデータ構造で、通常はタイプコードなどの他の要素も含まれる)とファイルシステム(パーティションまたは LVM の論理ボリュームなどの別のコンテナー内に保持される、より複雑なデータ構造)。この違いをまだ完全に理解していない場合は、今すぐに調べてください。
  • マウントされた ext2/3/4 ファイルシステムのサイズを増やすことはできますが、私の知る限り、マウントされた ext2/3/4 ファイルシステムのサイズを減らすことはできません。このresize2fsユーティリティは、コマンド ラインからこの作業を実行します。
  • パーティションのサイズを変更するには、パーティションを削除して、その場所に新しいパーティションを作成する必要があります。開始点と終了点はセクター レベルの精度で指定する必要がある場合がありますが、partedデフォルトでは は提供しません。これを実現するには を設定する必要があります。または、セクター レベルの精度をデフォルトで提供する をunit s使用することもできます。(ただし、 はデフォルトでパーティションを 2048 セクター値に自動的に揃えるため、エキスパート メニューの オプションを使用して揃えを調整する必要がある場合があります。)gdiskgdiskd
  • ファイルシステムのサイズ変更操作では、通常、ファイルシステムの開始点は変更されません。したがって、パーティションの開始点を移動する必要がある場合は、ddまたは他のツールを使用してファイルシステムの内容全体を移動する必要があります。移動の方向によっては、元のパーティションを削除する前または後にこれを行う必要があり、移動の前または後に新しいパーティションを作成する必要がある場合があります。移動操作が元の位置と重なる場合は、とてもパーティション データが破壊されないように、この操作を実行する際には注意してください。
  • パーティションとファイルシステムのエンドポイントには十分注意してください。ファイルシステムを縮小して、少し小さすぎる新しいパーティションを再作成すると、重要なデータが破壊される可能性があります。ファイルシステムを意図したよりも小さく縮小し、新しいパーティションを作成してから、 を使用してresize2fsファイルシステムを新しい周囲のパーティションのサイズまで拡大することをお勧めします。この手順により、サイズの不一致が発生する可能性が最小限に抑えられます。
  • パーティション テーブルを変更した後、カーネルが新しいテーブルを使用するようにするには、再起動が必要になる場合があることに注意してください。

これらの問題のため、GPartedやパーティションとファイルシステムの変更を調整するように設計された他のツールの助けを借りずに、やりたいことをやろうとすることは非常に危険です。できる実行可能ですが、セクター値の指定を 1 つ間違えると、ディスクがまったく役に立たなくなる可能性があります。この件について助けを求めているという事実から、私はあなたにこの試みを勧めることさえ躊躇しています。この種のことを一度も行ったことがない人にとって、実稼働システムを台無しにするリスクは大きすぎます。他に選択肢がない場合は、リモート サーバーで試す前に、ローカルでサーバーを再作成し、コピーで練習することを強くお勧めします。

いくつかの代替案を検討する必要があるかもしれません:

  • GPartedを使用する-- 外部メディアから起動できる場合は、GParted を使用できます。これはリモート サーバーであるとおっしゃっています。このようなシステムの多くは、仮想 USB ドライブを接続して Java アプレット経由で仮想コンソールを表示できる BMC を提供しています。この機能を使用すると非常に遅くなりますが、GParted を実行して変更をはるかに簡単かつ安全に行うことができます。
  • 追加のパーティションを作成する-- 1 つのパーティションを縮小してから、もう 1 つのパーティションを移動して拡張するのではなく、新しいパーティションを作成できる場合があります。次に、サブディレクトリから新しいパーティションにデータを移動し、そのサブディレクトリの代わりにマウントします。このアプローチは、基本的に中間的なアプローチです。つまり、1 つのパーティションを縮小する必要がありますが、より危険で困難な移動操作を行う必要がなくなります。
  • シンボリックリンクを使用する-- いっぱいになったパーティションから、それほどいっぱいでないパーティションにいくつかのファイルを分割し、シンボリック リンクを使用して、目的のパスでアクセスできるようにすることで、目的を達成できる可能性があります。これが最も安全なアプローチであると考えられます。
  • 再インストール-- 適切なバックアップがある場合は、システムをバックアップし、より良い設定で再インストールして、元のデータを復元できます。
  • 現地で行う-- サーバーに物理的にアクセスできる場合、またはオンサイトでヘルプを受けられる場合は、Ubuntu インストール USB フラッシュ ドライブを使用して、デスクトップ システムの場合と同じように、直接 (またはヘルプの人が) 実行できます。この作業の重要度とサーバーの位置によっては、作業のために出張する価値がある場合もあります。
  • ディスクを追加する-- 可能であればディスクを追加し、データの一部をそこへ移動することを検討してください。

将来的には、論理ボリューム管理 (LVM)これにより、このような操作がはるかに簡単かつ安全になります。LVM の習得にはかなりの時間がかかりますが、基本を習得してしまえば、パーティションの移動を気にする必要がないので非常に便利です。ファイルシステムはファイルシステム内のファイルのように保存されるため、1 つを縮小すると、開始点を変更せずに空き領域に別のファイルシステムを拡張できます。LVM は、新しいディスクの形で領域を追加するのにも役立ちます。

答え2

一時的な修正として、私が読んだ記事によると、使用されているスペースの 70% は Web サーバー、具体的には /var/www から来ているようでした。そこで、次の操作を実行しました。

cd /var
mv www /home
ln -s /home/www www
ll
lrwxrwxrwx  1 root root      9 Oct 18 12:33 www -> /home/www/

前に言ったように、一時的な修正ですが、ルート ディレクトリは現在 %100 ではなく %30 しか使用されていません。そのため、パーティションのサイズを変更できるまで、これで問題ありません。

関連情報