web-dev-qa-db-ja.com

debianでext4パーティションサイズを拡張するにはどうすればよいですか

この構成のドライブがあります。

fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x000f1b8b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        2612    20971520   83  Linux
/dev/sda3           60736       60801      525312   82  Linux swap / Solaris

478GBの未割り当てスペースがありますが、現在/ dev/sda1にあるデータを失うことなく、このスペースを/ dev/sda1に追加するにはどうすればよいですか? (ファイルシステムはext4です)。

注:これはSSHのみのサーバーであり、gpartedなどを実行するためのGUIはありません。

29
Seb

パーティションを拡大します:fdisk -u /dev/sda

pパーティションテーブルを印刷するには、sda1の番号、開始、終了、タイプをメモします。

削除してください:d

同じ番号(1)で再作成し、開始して入力しますが、endを大きくします(他のパーティションと重複しないように注意してください)。 endのメガバイト境界に合わせて、2048-1の倍​​数にします。必要に応じて、tを使用してタイプを変更します(extXまたはbtrfsファイルシステム、デフォルトの83 結構です)。

次に、wで書き込み、qで終了します。

パーティションテーブルは変更されていますが、一部のパーティションがマウントされているため、カーネルはそれを考慮できません。

ただし、使用中のパーティションが拡大されただけの場合は、カーネルに次のコマンドで新しいレイアウトを強制することができます。

partx /dev/sda

それが失敗した場合は、再起動する必要があります。システムは問題なく起動するはずです。

次に、ファイルシステムのサイズを変更して、拡大されたパーティションの範囲まで拡大します。

resize2fs /dev/sda1

ext4はライブFSでも問題なく機能します。

45

パーティションがマウントされている間は安全に実行できません。つまり、他のパーティションを起動してそこから実行する必要があります。

gpartedは、この目的のための素敵で簡単なGUIです。削除されたコメント交換で、「表示にアクセスできない」ため開始しないと述べましたが、これはXに参加していないことを意味します。 GUIなので、それなしでは機能しません。

もちろん、使用する別のパーティションがない場合は、ライブCDまたは何かが必要になります-Ithink通常、gpartedが付属しています。あなたの最善の策はおそらく実際の gparted live CD であり、これはかなり最近の最新の安定バージョンを持っているように見えます(そしてに適合します)[〜#〜] cd [ 〜#〜]、「ライブCD」が急速に「ライブDVD」になりつつあるため、これは素晴らしいことです)。

私は問題を引き起こしたわけではありませんが、もちろん最初にあなたの重要な気分を元に戻します。

7
goldilocks

私はこれが非常に古い問題であることを知っていますが、多くの人がその解決策を探しています。

この例では、次の典型的な状況があります。最初に単一のパーティションがあり、最後にスワップパーティションがあります。スワップに大きな負荷がかかる可能性があり、回転したディスクの最後が最も遅い部分であるため、これは良くありません。私が提案することは?

  1. 最初にブートパーティションを作成します。なぜ初めに?多くのツールは、2TBの境界を超える大きなディスクの終わりに問題を抱えているためです。ブートパーティションはスワップパーティションにする必要があります。これはパフォーマンスのためです。ディスクの残りの部分は他のパーティションに使用する必要があります。

しかし、この状況ではどうでしょうか? sda1の拡張はお勧めしません。 /homeおよび/usrとしてマウントされたsda1およびsda2の後に他のパーティションを作成することをお勧めします。そのディレクトリには、ほとんどのユーザーデータとシステムデータが格納され、そのディレクトリから新しいパーティションにデータを安全に移動できます。

  1. だが。 (2番目の「しかし」)現在の構造を維持したい場合は、まずスワップパーティションを削除する必要があります。スワップオフを行う必要があります。これを/etc/fstabでコメントします。 swaponが(manを参照してください)スワップが使用されていないことを通知した場合は、パーティションツール(fdiskなど)を使用してスワップを削除できます。

    このパーティションがない場合は、sda1を拡張できます。 fdiskを使用して、最初にパーティションを印刷する必要があります。それがどこから始まるのかを思い出すためです。次に、「d」キーを使用してパーティションを削除します。パニックにならないでください、ハードドライブに何も書き込まれません:)。印刷後、ディスクにパーティションはありません。

    次に新しいパーティションを作成しますが、注意してください。元のパーティションが開始したセクターを確認します。同じ番号を書いてください。その後、最後を見てください。 fdiskは、最後に利用可能なセクターの入力を求めます。電卓を使用して、必要なスワップ量をキロバイト単位で割り当てます。それを2で乗算し、fdiskによってプロンプトされた最後のセクター番号からこの数を引きます。パーティションを作成します。これを印刷し(それはまだfdisk一時メモリーにあります)、見た目はすべて問題ありません。

    この「w」キーを押すと、ドライブに新しいパーティションが書き込まれます。すべてが同期されているか、同期に失敗した情報が表示されます。失敗した場合、同期を実行するためにコマンドpartx/dev/sdaを呼び出すことができます。それでも失敗する場合は、システムを再起動する必要があります。再起動後、大きなパーティションを準備しましたが、その上のファイルシステムはまだ小さくなっています。あなたはそれを成長させるべきです。 EXT4はその場で拡張可能です:)、それを行うにはresize2fs /dev/sda1を使用します。

    再起動などの再マウントは必要ありません。最後に、スワップパーティションを復元する必要があります。もう一度fdiskを使用して、新しいパーティションをスワップとして作成します。 「w」を書き込んだ後、デバイスsda2が復元されます。 mkswap /dev/sda2を使用してスワップ構造を準備し、/etc/fstabのスワップに関する注釈を削除して、最後にswapon -aを実行します。 swaponまたはtopコマンドを使用して見て、スワップがアクティブ化されています。

私は知っています、それは非常に長い説明です。どなたでもご利用いただければ幸いです。私の意見では、xfsファイルシステムの方がはるかに優れていることに注意してください。残念ながら、このfsは一時的な別の場所へのコピーなしでは圧縮をサポートしていませんが、圧縮はめったに使用されません。それは素晴らしいです、xfsは彼自身のメタデータの場所をほとんど取らず、ext4と比較して多くの点で高速です。

もう1つのヒントは、一部のLVMをパーティション化の中間層として使用することです。その後、サイズ変更ははるかに簡単です。もちろんパフォーマンスは同等ですが、HDD管理を組み合わせて使用​​できます。一般的なrawパーティションとLVMで使用できます。

2
Znik