web-dev-qa-db-ja.com

サーバーでGUIを使用せずにコマンドラインを使用してパーティションのサイズを変更するにはどうすればよいですか?

ターミナル経由でのみサーバーにアクセスでき、GPartedなどのグラフィカルツールを使用できません。
ルートの一部(約768mb)からスワップ用の新しいパーティションを作成したい。

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         20G  1.3G   18G   7% /
udev             10M     0   10M   0% /dev
tmpfs           199M  4.9M  194M   3% /run
tmpfs           100M   12K  100M   1% /run/user
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
40
Hamid FzM

ストレージデバイス上のパーティションのいずれかがマウントされている場合、パーティションを縮小/編集することはできません。そのため、ルートファイルシステムをアンマウントして編集するには、OSをシャットダウンする必要があります。次に、稼働中のシステムを起動し、他の回答の説明に従ってパーティションを編集します。

代替ソリューション:スワップファイル

パーティション全体を作成する代わりに、スワップファイルはサイズをオンザフライで変更する機能を提供し、より簡単に完全に削除できます。 スワップファイルはホットプラグ可能です。つまり、OSをアンマウント/オフにすることなく追加および削除できます。

  1. /swapfileという512 MBのファイルを作成します。これがスワップファイルになります。

    fallocate -l 512M /swapfile  
    

    OR

    dd if=/dev/zero of=/swapfile bs=1M count=512
    
  2. 適切なアクセス許可を設定します(世界で読み取り可能なスワップファイルはローカルの大きな脆弱性であるため)。

    chmod 600 /swapfile
    
  3. 適切なサイズのファイルを作成した後、それをフォーマットしてスワップします:

    mkswap /swapfile
    
  4. スワップファイルをアクティブにします。

    swapon /swapfile
    
  5. /etc/fstabを編集して、スワップファイルのエントリを追加します。

    /swapfile none swap defaults 0 0
    

詳細は Arch Linux wiki をご覧ください。

34
totti

まず、使用している場合、ルートパーティションを縮小するためにサイズを変更できないことを知っておくことが重要です(これはオンライン縮小と呼ばれます)。オンラインでのみ成長できます。これはresize2fsコマンドでサポートされています。私は以下を想定します:

  • ルートパーティションの情報を失いたくありません。
  • LiveCDを使用するためにハードドライブに物理的にアクセスすることはできません。これは、仮想環境またはリモート環境に適用できます。仮想の場合、VMをLiveCDから起動するように設定すると、LiveCDから起動することができます。これは、VMがGpartedアプリの実行場所からデスクトップGUIの出力をサポートしており、簡単にサイズを変更できると想定しています。しかし、これはあまり起こりそうにないので、できないと思います。

サイズを変更できるパーティションには、LVMパーティションと、ほとんどの人が使用しているギャラクシーと標準パーティションの作成以来、オンラインサイズ変更(縮小/拡大)をサポートする論理ボリュームマネージャーパーティションの2種類があります。現在、完全なオンラインリサイズ(Shrink/Grow)をほぼ100%サポートしているのは、btrfsファイルシステムのみです(まだ開発中です)。私たちのほとんどがext4ファイルシステムで使用している通常のパーティションの作り方を説明します。

パーティションのサイズ変更(拡大)

パーティションを拡張するには、ルートをマウントして実行できます。これを行うには、次のようにします。

Sudo resize2fs /dev/sda1

マージする準備ができた空のスペースが既にある場合。その後、変更を正しく有効にするために再起動することをお勧めします。上記のコマンドは、許可されている最大サイズに変更されます。特定のサイズにサイズ変更する場合は、最後にサイズを追加するだけです。

Sudo resize2fs /dev/sda1 25G

25.4 GBを指定する場合は、「。」を使用できないことに注意してください。 1つの測定単位を下げる必要があります。この場合、GBからMBまでなので、次のようになります。

Sudo resize2fs /dev/sda1 25400M

これにより、25.4Gのパーティションができます。

パーティションのサイズ変更(縮小)

パーティションの縮小は、次の2段階のプロセスです。

  • 必要な量だけファイルシステムのサイズを縮小します。
  • 基礎となるブロックデバイスのサイズをファイルシステムのサイズに合わせて縮小します。

ファイルシステムの容量を削減する前に、ブロックデバイスのサイズを削減する必要があります(パーティションまたは論理ボリュームになります)。これはどのext *ファイルシステムでも利用できないため、20 GBから19.5 GBに縮小して500 MBのスワップシステムを作成することはできません。

Ext4でさえオンライン縮小をサポートしていません。実行しようとすると、次のものが得られます。

enter image description here

私の知る限り、あなたの唯一の賭けは次のいずれかです。

  • 元のUbuntuサーバーのルートパーティションを縮小するために使用できる別のUbuntuバージョンを同じサーバー(別のパーティション)にインストールします。

  • 実際に必要なサイズでUbuntuサーバーを最初からインストールする

  • Ubuntu Server Live Imageを使用して、パーティションのサイズを変更します。この場合、次の画面に到達する必要があります。

    enter image description here

    上の画像に示すように、[サイズ変更]オプションを選択します。そこからユニットをアンマウントし、必要に応じて縮小できるため、そこから新しいサイズを選択します。

追加のヘルプとして、gpartedファイルシステムのサポートがあります http://gparted.org/features.php これは、サポートされているものの非常に詳細なリストを提供し、完全なオンラインサイズ変更があるかどうかを含めます。 Btrfsはその中にあります。

27
Luis Alvarado

答えは、パーティションをアンマウントして縮小できるかどうかによって異なります。あなたの場合、おそらくパーティションをアンマウントすることはできません。 Linux(UNIX/MAC OS)では、mountingパーティションは、ファイルシステムを使用してマウントポイントにマッピングすることを意味します(場合によっては/)。 Unmountingは、ファイルシステムの使用を停止し、マウントポイントへのマッピングを削除することを意味します。実行中のOSを含むファイルシステムをアンマウントすることはできません。

パーティションをマウント解除できる場合

/dev/sda4にマウントされた/dataの200GB ext4パーティションを縮小したいとします。現在、音楽や映画などが含まれているため、一時的にアンマウントできます。 4GBのスワップを作成します。

Sudo umount /dev/sda4

パーティションをアンマウントします。

Sudo resize2fs /dev/sda4 196G

十分なスペースがあると仮定して、ext4ファイルシステムのサイズを196 GBに変更します。次に、パーティションを縮小する必要があります。現在、cfdiskを使用して既存のパーティションを削除し、その場所に小さなパーティションを再作成する必要があると信じています。その後、スワップ用の新しいパーティションを作成することもできます。

Sudo cfdisk /dev/sda 

パーティションテーブルを検査するためのテキストベースのGUIが表示されます。その時点でファイルまたは画面にパーティションテーブルをprintし、現在の構成をバックアップとして記録することをお勧めします。その後、/dev/sda4およびdeleteパーティションを選択できます。その場所に、free spaceが表示されます。 newを使用して、196 GBの場所に新しいパーティションを作成し、タイプをext4に設定します。次に、末尾の空き領域に移動し、swapタイプの4GBスワップパーティションを作成します。 注:現時点では/をいじることができないため、これらのコマンドはテストしませんでした。

パーティションをマウント解除できない場合

マウントされたext3/4パーティションを縮小することはできません(resize2fsのマンページを参照)。 OSを/から実行しているため、/をアンマウントできません。つまり、変更を行うには別のOSを起動する必要があります(USBキーなどから)。

あなたの場合、それはリモートサーバー(KVM上にある可能性が高い)であるため、USB /ライブOSイメージから起動できない可能性があります。管理GUIを介してvServerプロバイダーからパーティションを変更する他の方法があります。私はそれが現在あなたの最善策であると信じています。

6
noleti