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


14

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

  1. パーティションを拡張します:削除してより大きなパーティションを作成します fdisk
  2. PVサイズを拡張する pvresize
  3. lvresize操作に空きエクステントを使用する
  4. そして、resize2fsファイルシステム用

しかし、私は最初のステップにこだわっています:fdiskそして、sfdiskまだディスクの古いサイズを表示しています。

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

Linuxカーネルで利用可能な仮想ディスクサイズとパーティションテーブル情報を再起動せずに更新するにはどうすればよいですか?

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

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

回答:


9

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

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


同意しますが、SCSIドライブを再スキャンするために何をしたとしても、fdiskで新しいディスクサイズが表示されることはなかったため、最初の再起動までスタックしました。そして、「partprobe」は私にとって新しいコマンドです。間違いなくこの手順をテストする必要があります...ありがとうございます。
イヴマーティン

情報partprobepartedプロジェクトからのコマンドです。
イヴマーティン

新しいディスクサイズが表示されない場合fdiskは、LVMに問題はありません。通常、新しいディスクサイズが取得されるため、スキャンの方法を尋ねる必要があります。また、できる限りLVMを使用するディスクをパーティション分割しません。あなたの場合はpvcreate、パーティションテーブルを更新するディスク全体を使用すると、サイズを変更するために行くとき、あなたがしなければならないただ一つ少ないものです。
ブラチリー

14

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

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

ls /sys/class/scsi_disk/

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

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

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


完全に機能しました!
エミールStyrke

また、「/ dev /」という名前でディスクを見つけることができる/sys/block/ので、例えばを使用できます/sys/block/sda/device/rescan
mwfearnley

4

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

新しいカーネルバージョンですぐに良くなることを本当に期待しています。

だから私はしなければなりませんでした:

  • 初めて再起動して、新しいディスクサイズを確認します fdisk
  • 古いプライマリPVパーティションを削除します fdisk
  • 同じ番号のパーティションエントリを作成し、ディスクの最後までセクターを開始します
  • 2回再起動するかpartprobepartedパッケージから/マウントされていない場合にのみパッケージから実行する
  • 今、私は実行することができpvresize、新たな空き容量を取得するために、lvextendおよびresize2fsファイルシステムにいくつかのより多くのスペースを割り当てること

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

更新:カーネル3.16およびparted3.2を実行しているDebian GNU / Linux Jessie 8.2で確認したpartprobeところ、パーティションテーブルの編集後にcfdisk再起動なしで成功しました。pvresizeすぐに動作します。

あなたは、インスタンスのための論理的なPCのパーティションとして保存されたPVを、延長したい場合は/dev/sda5、拡張プライマリパーティションに/dev/sda2、使用していないfdiskが、好みますparted

parted /dev/sda2 -1
parted /dev/sda5 -1
pvresize /dev/sda5

最後のコマンドが機能しない#parted / dev / sda2 -1-> parted:invalid option-
'1

3

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

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

ls /sys/class/scsi_host

その後、各ホストに対して

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

(#を数字に置き換えます)

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

いつかそのパーティションをアンマウントする必要があります。私たちがやろうとしているのは、2番目のvmwareディスクを追加し、lvmを使用して新しいディスクに拡張することです(交換の場合は古いディスクを減らします)。


私のシステムはDebianであり、scsitoolsからrescan-scsi-bus.shを実行しています。私はそれはあなたが/ SYS /クラス/ scsi_hostが、「FDISK」まだ...私のディスク上の古いサイズを表示するに提案するコマンドと同じだと思う
イヴ・マーティン

再スキャン時に新しいvmwareディスクを認識しますか?
ジェームズライアン

いいえ。このディスクはすでに存在しますが、新しいものではありません。vSphereクライアントでディスクサイズが増加しました。
イヴマーティン

私はそれを理解していますが、問題を絞り込むためにスキャンがそれを拾うかどうかを確認するために新しいものを追加してみてください
JamesRyan

私はあなたに同意します。Linuxマシンに新しいSCSIディスクを追加することは、リストされているすべてのステップでオンラインで実行できることを実践によりすでに知っています。VMは、10年のために実行可能として...私は...近い将来にディスクの合計数を恐れる
イヴ・マーティン

2

更新された回答として、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必要ありません、スペースはすぐに利用できました。


3
あなたはラッキーです。理由は、パーティションテーブルがなく、PVが直接オン/dev/sdbになっているためです。これは、おそらくアプリケーションデータのみのセカンダリディスクであり、システムを備えた最初のディスクではありません(システムを同じように構成します!)。私の質問は、Linuxディストリビューションが直接PVでのインストールをサポートしない限り、そのような「システムディスク」の最後のPV /パーティション(テンプレートから複製)を拡張することでした。パーティションテーブルはまったくありません。
イヴマーティン

公正なポイント。Googleでこれを見つけた人のために:それを覚えておいてください。
ピールマン

1

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


他のステップのコマンドはすべて知っています。私の質問は、再起動せずにPVとして使用されるプライマリパーティションをどのように拡張するかです。
イヴマーティン

申し訳ありませんが、単にpvresizeを意味しますか?
Chopper3

私の質問が十分に明確ではなかったことに同意します(太字部分でも)。pvresizeはステップ2として言及されています。ステップ1で行き詰まっています。「PCAT」パーティションサイズを増やしてください。
イヴマーティン

VSClientを介して.vmdkサイズをまだ増やしましたか?
Chopper3

3
/sbin/rescan-scsi-busドゥーを確認するには、既存のディスクサイズを変更しないでください。しかし、echo "1" > '/sys/class/scsi_disk/0:0:1:0/device/rescan'ありません
イヴ・マーティン

0

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

# 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

distrubで申し訳ありませんが、ディスクの成長ごとにディスク、パーティション、およびPVを追加するのは「lyい」ものであり、スケーリングしません。私の質問は、ディスクまたはパーティションまたはPVを追加せずに、ディスク上の既存のプライマリパーティションを拡張することでした。
イヴマーティン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.