非 LVM ext4 パーティションのサイズを変更 / 拡大 / 拡張する方法

非 LVM ext4 パーティションのサイズを変更 / 拡大 / 拡張する方法

すでにフォーラムを検索しましたが、適切な回答が見つかりませんでした。

私は KVM ホストとして Ubuntu Server 10.04 を所有しており、ゲスト システムも 10.04 を実行しています。ホスト システムは LVM を使用しており、3 つの論理ボリュームが仮想ブロック デバイスとしてゲストに提供されています。1 つは / 用、1 つは /home 用、もう 1 つは swap 用です。ゲストは LVM なしでパーティション分割されていました。

ホスト システムの論理ボリュームはすでに拡大されており、ゲストはより大きな仮想ディスクを正常に認識しています。ただし、この仮想ディスクには、サイズが小さいままの「古き良き」パーティションが 1 つ含まれています。

fdisk -lの出力は次の通りです

me@produktion:/$ LC_ALL=en_US sudo fdisk -l

Disk /dev/vda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c8ce7

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        3917    31455232   83  Linux

Disk /dev/vdb: 2147 MB, 2147483648 bytes
244 heads, 47 sectors/track, 365 cylinders
Units = cylinders of 11468 * 512 = 5871616 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000f2bf7

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1               1         366     2095104   82  Linux swap / Solaris
Partition 1 has different physical/logical beginnings (non-Linux?):
     phys=(0, 32, 33) logical=(0, 43, 28)
Partition 1 has different physical/logical endings:
     phys=(260, 243, 47) logical=(365, 136, 44)

Disk /dev/vdc: 225.5 GB, 225485783040 bytes
255 heads, 63 sectors/track, 27413 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00027f25

   Device Boot      Start         End      Blocks   Id  System
/dev/vdc1               1        9138    73398272   83  Linux

parted print allの出力は次のようになります。

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  32.2GB  32.2GB  primary  ext4         boot


Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  2146MB  2145MB  primary  linux-swap(v1)


Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 225GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  75.2GB  75.2GB  primary  ext4

私が実現したいのは、仮想ブロック デバイス /dev/vdc によって提供されるスペース全体を使用するように、パーティション /dev/vdc1 を単純に拡張またはサイズ変更することです。問題は、parted でこれを実行しようとすると、次のようなエラーが表示されることです。

(parted) select /dev/vdc                                                  
Using /dev/vdc
(parted) print                                                            
Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 225GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  75.2GB  75.2GB  primary  ext4

(parted) resize 1                                                         
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs.  We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Start?  [1049kB]?                                                         
End?  [75.2GB]? 224GB                                                     
Error: File system has an incompatible feature enabled.  Compatible features are has_journal, dir_index, filetype, sparse_super and large_file.  Use tune2fs
or debugfs to remove features.

それで、どうすればいいのでしょうか? これはヘッドレスの本番システムです。このパーティションを安全に拡張する方法は何でしょうか? ただし、アンマウントすることはできます。つまり、これは問題ではありません。

編集: cfdisk は、パーティション化されていない小さな空き領域、次にパーティション (「boot」および Linux/ext3 としてフラグ付け)、そして残りのパーティション化されていない領域を表示しました。パーティションを削除し、cfdisk を使用して再度作成すると、cfdisk は 1 つの大きなパーティション化された領域 (私にとっては問題ありません) と、ファイルシステム タイプとして「Linux」のみを表示します。

Resize2fsはこのエラーを返します resize2fs 1.41.11 (14-Mar-2010) resize2fs: Bad magic number in super-block while trying to open /dev/vdc1 Couldn't find valid filesystem superblock

答え1

これページには、パーティションをアンマウントし、削除し、希望のサイズで再作成し、resize2fs を使用してパーティションを拡張する方法が示されています。resize2fs のマニュアル ページもこれに同意しています。

「パーティションを削除する」というのは恐ろしいことのように聞こえますが、データはまったく変更されません。コンテナを参照するものが変更されるだけです。削除しない限りは、mkfs.ext4問題はありません。

パーティションの開始点は以前と同じである必要があります。そうでないと、OS はパーティションの背後にあるものを解釈できません。終了点をさらに先へ進めて、より大きなパーティションを作成できます。

コメント内のエラーは、開始点の移動に関連していると思います。開始したときとまったく同じ点から開始する必要があります。終了点は移動できます。

クレジットプシcfdisk の代わりに fdisk を提案し、開始点の問題を確認してくれたことに感謝します。

答え2

例:

/dev/sdb2 は /boot パーティションです。これは 100 MB とかなり小さいです。実行中のシステムでこの ext4 パーティションを増やすには、(root または sudo として) 次のようにします。

アンマウント /boot

分割された /dev/sdb

(別れた)印刷

モデル: ATA Patriot Torqx 2 (scsi)
ディスク /dev/sdb: 32.0GB
セクターサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos

番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 1049kB 12.9GB 12.9GB プライマリタイプ=83
2 12.9GB 13.0GB 107MB プライマリext4タイプ=83

(別れた)rm 2

(別れた) mkpart

パーティションタイプ? プライマリ/拡張? プライマリ
ファイルシステムタイプ? [ext2]?
開始? 12.9GB
終了? 13.4GB

(別れて)辞める

resize2fs /dev/sdb2

resize2fs 1.42.6 (2012 年 9 月 21 日)
/dev/sdb2 のファイルシステムが /boot にマウントされています。オンラインでのサイズ変更が必要です。old_desc_blocks
= 1、new_desc_blocks = 2
/dev/sdb2 のファイルシステムの長さは現在 498688 ブロックです。

終わり!

すべてのデータはそのまま残っています。/boot は使用可能で、472MB の大きさです (parted はサイズに関してそれほど安全ではありません。理由についてはマニュアルをお読みください)

以前にすべてのデータをバックアップしましたが、それは予防措置としてのみでした。同じことをすることをお勧めします。

失敗した場合に /boot のアンマウントを停止しているプロセスを見つけるには、次のコマンドを使用します。

lsof /ブート

幸運を!

答え3

パーティションを削除して再作成しようとすると、パーティションが 2048 未満で始まる場合、私の場合のように問題が発生する可能性がありますresize2fs

Couldn't find valid filesystem superblock.

からfdisk バージョン 2.17.2、私の記憶では、fdisk はハード ドライブが「正しく整列」されていることを確認するために、2048 から開始するように強制します。したがって、元のパーティションが 2048 より前に開始されている場合、パーティションを再作成しようとすると、困難な状況に陥ることになります。

最善のアプローチはディスクのクローン作成時のrsync

関連情報