web-dev-qa-db-ja.com

仮想ディスクの拡張後にLinux PVパーティションをオンラインで拡張する方法

VMwareでは、オンラインで仮想ディスクのサイズを拡張できます-VMが実行されている場合。Linuxシステムで次に期待される手順は次のとおりです。

  1. パーティションを拡張します。fdiskを使用して、大きなパーティションを削除して作成します
  2. pVサイズをpvresizeで拡張します
  3. lvresize操作に空きエクステントを使用する
  4. その後 resize2fs(ファイルシステムの場合)

しかし、私は最初のステップで立ち往生しています:fdisksfdiskはまだディスクの古いサイズを表示しています。

私のディスクは、仮想LSI Logicコントローラーのおかげで接続されたSCSI仮想ディスクです。

Linuxカーネルで利用可能な仮想ディスクサイズとパーティションテーブル情報を更新する方法再起動なし

私の知る限り、VMWareツールのおかげで、再起動することなく、さらにはユーザーの操作なしに、実行中のWindowsでこの手順を実行できます。 Linuxでは、すべてのステップをオンラインでも実行することを期待しており、ステップ2、3、および4がオンラインで機能することをすでに知っています。しかし、最初の1つ-パーティションテーブルで宣言されたパーティションサイズの変更(まだ)には、再起動が必要なようです。

更新:私のシステムはカーネル2.6.26のDebian Lennyであり、拡張したディスクは「/」の「ルート」LVを含む大きなPVのメインディスクです。

15
Yves Martin

再起動せずにこれを行うことができます。追加されたスペースでパーティションが更新されるまで、pvresizeは物理ボリュームのサイズを変更しません。パーティションをfdiskし、新しいフルサイズのディスクで再作成する必要があります。ドライブを再スキャンして、最初の場所に余分なスペースがあることを確認できます。

詳細: http://theducks.org/2009/11/expanding-lvm-partitions-in-vmware-on-the-fly/

11
GRegg

他の回答はあなたの質問に対応していません。すでに接続されているディスクを再スキャンする正しいコマンドを特定しました。

すでに接続されているディスクを再スキャンする必要があります。まず、再スキャンするディスクを特定します。

ls /sys/class/scsi_disk/

私の例では、0:0:0:0という名前のシンボリックリンクが表示されるので、このscsi-diskを再スキャンします。

echo '1' > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan

私はVMwareディスクも拡張したばかりで、正しいコマンドを見つけるために他の答えを探す必要がありました。うまくいけば、これは無駄な試みから将来の検索者を救うでしょう。

14
J. M. Becker

ルートファイルシステム/がサイズ変更されたディスクにマウントされている限り、パーティションテーブルとディスクサイズは、Linux 2.6.26でのSCSI再スキャンでは更新されません。

新しいカーネルのバージョンですぐに良くなることを願っています。

だから私はしなければならなかった:

  • 初めて再起動すると、fdiskに新しいディスクサイズが表示されます
  • fdiskの古いプライマリPVパーティションを削除します
  • 同じ番号のパーティションエントリを作成し、ディスクの終わりまでセクターを開始する
  • もう一度再起動OR partprobeパッケージからpartedを実行します_/がそこにマウントされていない場合のみ
  • ここで、pvresizeを実行して新しい空き領域を取得し、lvextendおよびresize2fsを実行して、ファイルシステムにさらに領域を割り当てることができます。

Grub2はカーネルイメージをLVMパーティション上のファイルシステムから直接ロードできるため、その愚かな古いパーティションテーブルを単に破棄して、デバイスで直接pvcreateを実行することをお勧めします。しかし、そのようなセットアップは、ディストリビューションのインストーラーではまったく明白ではありません。

更新:カーネル3.16およびparted 3.2を実行しているDebian GNU/Linux Jessie 8.2で確認したところ、partprobecfdisk再起動なし。 pvresizeは直後に機能します。

論理PCパーティションとして保存されているPVを拡張する場合、たとえば、拡張プライマリパーティション/dev/sda5/dev/sda2は、fdiskを使用せず、partedを使用してください。

parted /dev/sda2 -1
parted /dev/sda5 -1
pvresize /dev/sda5
4
Yves Martin

より大きなパーティションを作成する前に、ディスクを再スキャンする必要があります。

Centosではこれを行うことができます

ls /sys/class/scsi_Host

その後、各ホスト

echo "- - -" > /sys/class/scsi_Host/host#/scan

(#を番号に置き換えます)

パーティションのサイズを変更したら、extまたは使用しているファイルシステムを拡張する上記の手順がもう1つあります。

ただし、いつかはそのパーティションをアンマウントする必要があります。 2番目のvmwareディスクを追加し、lvmを使用して新しいディスクに拡張する(そして古いディスクを置き換える場合は削減する)ことで、プロセス全体をライブで実行できます。

3
JamesRyan

私のPVはパーティションにありませんでしたが、/ dev/sdbに直接存在していました。

Ubuntu 16.04.1では、ボリュームを1024GBから1.4TBにサイズ変更するために次のことができました。

echo '1' > /sys/class/scsi_disk/32\:0\:1\:0/device/rescan
pvresize /dev/sdb
lvextend -l +100%FREE /dev/nvr01-opt/opt
resize2fs /dev/nvr01-opt/opt

fdiskは不要で、スペースはすぐに使用可能になりました。

2
peelman

必要な正確なコマンドを説明するのに十分な詳細情報を提供していませんが、基本的にはlvextendコマンドを使用して論理ボリュームを拡張し、次にe2fsckコマンドを使用する必要があります。実際にファイルシステムを拡張するresize2fsコマンド。これらの各コマンドには、追加のパラメーター、具体的には提供できないデバイスとファイルシステムの情報が必要になりますが、これらを知る必要があります。各コマンドの--helpオプションを使用して、具体的な使用方法を説明するだけでなく、おそらく、これらのパラメータの入力に役立つpvdisplaylvdisplaymountコマンドを使用することになります。

1
Chopper3

コマンドの完全なセットを誰も投稿していないので、ここに行きます:

# the following steps are for adding a new HDD
apt install scsitools
rescan-scsi-bus
pvcreate /dev/sdX
vgextend /dev/vgname /dev/sdx
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root

#if resizing existing HDD
fdisk /dev/sdX
create new partition
pvcreate /dev/sdXn
vgextend /dev/vgname /dev/sdXn
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root
0
mzhaase