web-dev-qa-db-ja.com

resize2fsはパーティションをフル容量にリサイズできませんか?

以前の1 TBディスクの既存のデータを使用して、2 TBの新しいディスク(/dev/vdb)を追加しました。

fdisk /dev/vdbを使用して、その唯一のパーティション/dev/vdb1を以前の1TBから2TBのフル容量まで拡張しました。そして私はしました:

[root - /]$ fsck -n /dev/vdb1
fsck from util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
/dev/vdb1: clean, 46859496/65536000 files, 249032462/262143744 blocks

[root - /]$ e2fsck -f /dev/vdb1
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vdb1: 46859496/65536000 files (0.4% non-contiguous), 249032462/262143744 blocks

[root - ~]$ resize2fs /dev/vdb1
resize2fs 1.42.9 (28-Dec-2013)
The filesystem is already 262143744 blocks long.  Nothing to do!

そしてfdisk -lは次のようになります:

Disk /dev/vdb: 2147.5 GB, 2147483648000 bytes, 4194304000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x4eb4fbf8

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048  4194303999  2097150976   83  Linux

しかし、それをマウントすると:

mount /dev/vdb1 /mnt

これはdf -hから取得したものです。

/dev/vdb1       985G  935G     0 100% /mnt

これはまだ前のパーティションのサイズです。

ここで何が悪いのですか?

更新

partprobeを実行すると、再起動するように勧められました。

Error: Error informing the kernel about modifications to partition /dev/vdb1 -- Device or resource busy.  This means Linux won't know about any changes you made to /dev/vdb1 until you reboot -- so you shouldn't mount it or use it in any way before rebooting.
Error: Failed to add partition 1 (Device or resource busy)

だから私は再起動してから再び走った:

mount /dev/vdb1 /mnt

ただし、追加されたファイルシステムは次のとおりです。

/dev/vdb1       985G  935G     0 100% /mnt

何か案が? fscke2fsckresize2fsのすべてをもう一度実行する必要がありますか?

本当に変。再起動後、再度partprobeを実行しましたが、それでもこのエラーでした:

Error: Error informing the kernel about modifications to partition /dev/vdb1 -- Device or resource busy.  This means Linux won't know about any changes you made to /dev/vdb1 until you reboot -- so you shouldn't mount it or use it in any way before rebooting.
Error: Failed to add partition 1 (Device or resource busy)

デバイスまたはリソースがビジーなのはなぜですか?再起動後もそうですか?

2
datasn.io

resize2fsは、カーネルからパーティションサイズを読み取ります。これは その他のファイル のサイズを読み取るのと同じです。 fdisktriesパーティションテーブルの書き込み時にカーネルを更新しますが、ディスクが使用中の場合は失敗します。そのパーティションの1つをマウントした場合。これが理由です resize2fs「何もしない」というメッセージが表示されました。余分なパーティションスペースは表示されませんでした。

カーネルは起動時にパーティションテーブルを読み取ります。したがって、コンピュータを再起動するだけです。次に、resize2fs、追加のパーティションスペースが表示され、ファイルシステムを拡張してフィットします。


私はfdiskこの(そうでなければ古くなった)ドキュメント でスクリーンショットされたように、これに関する目立つメッセージを記録すると信じています。

あまり親しみがありませんが、実際には最新のドキュメントがあります。

https://access.redhat.com/solutions/57542

再起動せずにRHEL6で新しいパーティションを使用するにはどうすればよいですか?

partprobeは、ディスク上のパーティションテーブルの変更をOSに通知するためにRHEL 5で一般的に使用されていました。 RHEL 6では、OSをトリガーして、パーティションが使用されていない(マウントされているなど)ディスク上のパーティションを更新するだけです。ディスク上のパーティションが使用中の場合、partprobeは、状況によっては安全でないと見なされるため、システムのパーティションを更新するようにOSをトリガーしません。

したがって、一般的には次のことをお勧めします。

  1. ディスクのパーティションテーブルを変更する前に、ディスクのすべてのパーティションをアンマウントしてから、partprobeを実行してシステムのパーティションを更新します。
  2. これが不可能な場合(たとえば、マウントされたパーティションがシステムパーティションである場合)、パーティションテーブルを変更した後、システムを再起動します。パーティション情報は再起動後に再度読み込まれます。新しいパーティションが追加され、既存のパーティションが変更されていない場合は、partxコマンドを使用してシステムパーティションテーブルを更新することを検討してください。 partxコマンドは、システム内の新しいパーティションテーブルと既存のパーティションテーブルの間のチェックをあまり行わず、ユーザーが何をしているのかをユーザーが知っていると想定していることに注意してください。そのため、既存のパーティションが変更されたり、パーティションテーブルが正しく設定されていなかったりすると、ディスク上のデータが破損する可能性があります。自分の責任で使用してください。
1
sourcejedi