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


45

ターミナル経由でサーバーにアクセスするだけで、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

回答:


37

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

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

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

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

    fallocate -l 512M /swapfile  
    

    または

    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をご覧ください。


これが最も簡単で効率的な答えだと思います=)!ただし、パーティションの代わりにファイルを使用することに意味はありますか?
アラーアリ

2
ファイルが断片化されている場合、パフォーマンスがわずかに低下します。連続したスワップファイルまたはパーティションのどちらにもパフォーマンス上の利点はありません。どちらも同じように扱われます。
トッティ14

1
これが最善の解決策だと思います。パーティション(テーブル)のフォーマット、縮小、またはその他の変更を行っていないため、データ損失のリスクはありません。
R110

28

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

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

サイズを変更できるパーティションには、LVMパーティションと、大部分の私たちが使用するgalaxyと標準パーティションの作成以降のオンラインサイズ変更(縮小/拡大)をサポートするLogical Volume Managerパーティションの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でさえオンライン縮小をサポートしていません。実行しようとすると、次のものが得られます。

ここに画像の説明を入力してください

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

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

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

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

    ここに画像の説明を入力してください

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

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


私は興味があります、オンライン縮小をサポートする他のファイルシステムはありますか?多分zfsかbtrfs?
セス14

下部にリンクを追加しました。ファイルシステムがオンラインで正しくサイズ変更される場合、カーネルもこれをサポートする必要があります。
ルイスアルバラード14

VMwareマシンにUbuntuサーバーがあり、そのディスクサイズは120Gです。しかし、最初の解決策を使用した後、このエラーが発生します。ファイルシステムはすでに27262720ブロックの長さです。何もしません!
Dr.jacky

1
@ Mr.Hyde、ありがとうございます。Workstation 10および11にもいくつかの問題がありました。12をお勧めします。Ubuntuの場合は、いくつかの問題もあったため、最新または新しいLTSに更新します。私の場合、VMwareワークステーション12.0.1とUbuntu 15.10 64ビットがあります。
ルイスアルバラード

3
resize2fsマンページから:The resize2fs program does not manipulate the size of partitions.
ACK_stoverflow

6

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

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

/dev/sda4マウントされた200GB ext4パーティションを縮小したいと仮定しましょう/data。現在、音楽や映画などが含まれているため、一時的にアンマウントできます。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に設定するために使用します。次に、末尾の空きスペースに移動し、typeで4GBのスワップパーティションを作成しますswap注:/現時点では自分で操作できないため、これらのコマンドはテストしませんでした。

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.