web-dev-qa-db-ja.com

再起動せずに/パーティションを拡大することは可能ですか?

ルートを拡大できます(/)再起動せずにfdiskでパーティションを作成します(同じ最初のセクターで再作成を削除しますが、最後のセクターが大きくなります)。

ただし、カーネルで パーティションテーブルを再読み取り することはできません。

# partx -va /dev/vda
partx: /dev/vda: adding partition #5 failed: Device or resource busy
partx: /dev/vda: error adding partition 5

# kpartx -va /dev/vda
device-mapper: reload ioctl on vda5 failed: Invalid argument
add map vda5 : 0 41492480 linear 0:0 2048

# hdparm -z /dev/vda
/dev/vda:
 re-reading partition table
 BLKRRPART failed: Device or resource busy

# sfdisk -R /dev/vda
BLKRRPART: Device or resource busy
This disk is currently in use.

私は何をしているのか知っており、パーティション内のextファイルシステムはオンライン拡張をサポートしています。

カーネルにパーティションテーブルの更新を強制する方法はありますか?

[〜#〜] edit [〜#〜]:LVMについては知っていますが、ではありませんこの質問への回答。

8
Totor

影響を受けるディスク上のすべてのパーティションをアンマウントするまで、カーネルは古い(キャッシュされた)パーティションテーブルを使用します。

システムの実行中は/パーティションをアンマウントおよびマウントできないため、再起動するしかありません。

次回はLVMを使用してみてください。これにより、パーティションテーブルを変更しなくても、ボリューム(ルートボリュームでも)のサイズを変更できます。

3
asdmin

ファイルシステム、特に/のサイズをオンラインで変更するには、物理​​層と仮想層の間に何らかの形の抽象化が必要です。 LVM。

LVMでサイズ変更をライブで実行するには:

pvcreate /dev/sdX
vgcreate vg1 /dev/sdX
lvcreate Root -L10G

次に、ディスクがいっぱいになりそうになったときに、lvextend /dev/mapper/vg1-Root -L+10G --resizefsを使用して、より多くのスペースを確保します。

http://linux.die.net/man/8/lvm のLVMについて読む

[〜#〜]編集[〜#〜]

キャッシュされているパーティションテーブルを更新するようカーネルに丁寧に依頼するには、partprobeを試すことができますが、前述のように、すべてのファイルシステムを再マウントする必要があるため、動作するとは思いません。これは、起動しない限り困難です。ライブVMに。

[〜#〜]編集[〜#〜]

パーティションのサイズを変更することはできますが、fdiskに表示されるサイズを記憶/書き留める必要があります。これは、誰にとっても非常に高度な手順です。これらの番号を取得したら、最初のサイズからパーティションを再作成してから、ディスクをいっぱいにします。 これは、パーティションがディスクの最後のパーティションである場合は簡単です。中間のパーティションのサイズを変更する必要がある場合は、確かに運が悪いです

私は顧客のために何度かそれをしましたが、それはやっかいで神経質な破壊作業です。 安全性とデータ保持のためにこの方法はお勧めしません。

0
OMG-1