LiveCDまたは再起動せずにFedoraでルートLVMパーティションのサイズを変更する方法


24

最近、ディスクイメージを20GBから50GBに増やした仮想マシンfdisk -lがあり、VMがこの新しいサイズを認識できることを確認しています。次に、ルートLVMパーティションのサイズを変更して、30GBを追加する必要があります。

LVMのサイズ変更に関する記事をいくつか 見つけましたが、ルートパーティションのサイズ変更をカバーする記事 すべて、LiveCDから起動する必要があると主張しています。サーバーを停止せずにこれを行う方法はありますか?サーバーは重要なので、ダウンタイムを最小限に抑えたいと思います。

編集:の出力fdisk -l

[root@fedora-host ~]# sudo fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 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 identifier: 0x00097c90

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    83886079    41430016   8e  Linux LVM

Disk /dev/mapper/VolGroup-lv_root: 36.1 GB, 36104568832 bytes
255 heads, 63 sectors/track, 4389 cylinders, total 70516736 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 identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_root doesn't contain a valid partition table

Disk /dev/mapper/VolGroup-lv_swap: 6308 MB, 6308233216 bytes
255 heads, 63 sectors/track, 766 cylinders, total 12320768 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 identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_swap doesn't contain a valid partition table

編集:物理パーティションのサイズを変更するにはどうすればよいですか?fdiskは空き領域を見ることができますが、プライマリLVMパーティションのサイズを変更して使用する方法がわかりません。LiveCDを起動してparted'd resizeコマンドを使用しようとしましたが、エラー「ファイルシステムを検出できません」のみが表示されます。このガイドを見つけました。パーティションを削除し、正しいサイズで新しいパーティションを作成する必要があると書かれていますが、それは非常に危険に思えます。

最終編集:Partedのresizeコマンドは、奇妙なことにLVMパーティションのサイズを変更できません。図を移動します。代わりに、上のリンクで説明したように、古いパーティションを削除し、新しい範囲で新しいパーティションを作成しただけで、LVMパーティションのサイズが正しく変更されました。次に、以下のアドバイスに従って、LVMパーティションのボリュームとファイルシステムのサイズを変更しました。


fdisk-lの出力を表示します。ボリュームだけでなくパーティションのサイズを変更しましたか?
ゾレダチェ

@Zoredache、その出力を質問に追加しました。
セリン

回答:


32

論理ボリュームをオンラインで拡大できます。縮小するにはマウントを解除する必要があります(LiveCD /レスキューモードが必要です)。

  1. pvresize /dev/sda2(LVMパーティションがであると仮定しますsda2。必要に応じて交換してください。)
  2. lvextend /dev/mapper/root -l+100%FREE (または、ルート論理ボリュームが呼び出されるものは何でも。)
  3. resize2fs /dev/mapper/root (ext2 / 3/4を想定)

1
私は個人的に好むlvextend -L [size][unit] /dev/group/volume私が指定することにより、10ギガバイトでボリュームを拡張することができる唯一のためならば、-L +10G
ヒューバートKario

はい、しかしOPは尋ねました。Now I need to resize my root LVM partition to fill the extra 30GB.(これは、使用可能な空きスペースによって論理ボリュームを増やすことです。)
アーロンコプリー

「新しいサイズ(1076エクステント)は既存のサイズ(1076エクステント)と一致します」
-Cerin

7
このトリックはすばらしいと思いました:に-rオプションを追加するlvextendfsadm、FSのサイズを変更するためにフックします。これにより、3番目のステップが冗長になります。
ジョディC

3
この回答は、パーティションがすでに空きスペースを埋めるために拡張されており、論理ボリュームのみを更新する必要があることを前提としています。pvresize /dev/sda2/ dev / sda2はパーティションがpartedのか、fdiskでリサイズされるまでコマンドは何も行いません。私のシステムでpartedが表示されないか、サイズ変更コマンドがないため、fdiskでサイズを変更する必要がありました。Fdiskのサイズ変更には、パーティションの削除と再作成が含まれます。
ジェイソン

2

システムは実際に20 GBから50 GBに変更されましたか?sda2デバイスは最大40GB、lv_rootは36GB、swapは6GBと表示されるため、これは本当に奇妙に思えます。

あなたの出力fdisk -lのショーの総セクタの/dev/sdaIS 104857600。が使用する最後のセクター/dev/sda283886079です。これは、ドライブの使用可能なすべてのスペースを使用するためにパーティションサイズを調整していないことを示しています。pvresizeコマンドは、パーティションテーブルを変更しません。最初にパーティションテーブルを変更する必要があります。


1

gpartedをインストールします。rootとして実行します(リモートの場合はssh -Xまたはx2goを使用します)。パーティションを選択します。末尾(右)を超える空き領域が表示されます。そうでない場合は、仮想マシンを再起動して、仮想デバイスの新しいサイズを確認する必要があります。systemdを使用すると、ダウンタイムを最小限に抑えることができます。

右クリックしてサイズ変更を選択します。ディスクの端まで端をドラッグします。最初に触れないようにしてください。gpartedは、サイズ変更中にパーティションを移動できますが、もちろん実行中のシステムを破壊します。しかし、終わりを動かすことは問題ありません。gpartedが実行する保留中の操作を確認して、パーティションを移動していないことを確認してください。適用をクリックします。gpartedはディスク上のパーティションを変更し、カーネルioctlを発行してパーティションテーブルを再読み取りし、ライブブロックデバイスのサイズも変更します。次に、LVM PVであることがわかるため、pvresizeが実行されます。gpartedを終了すると、vgsに新しいスペースが表示されます。

GUIのオーバーヘッドなしで、別れたという噂を聞いたことはありますが、ブードゥー教を理解することはできませんでした。Partedは、私が今まで使用した中で最悪のCLIインターフェイスの1つでなければなりません。

fdiskは使用しないでください。サイズを変更するには、パーティションを削除して再割り当てする必要があります。デフォルトでは、書き込み時にLVM2署名が消去されます。その破壊的な動作をオフにする「高度な」オプションを見たと思いますが、テストしたことはありません。

cfdisk(curses fdisk)を試すこともできます。使用可能なパーティションのサイズを変更できます。pvresizeを手動で実行するのは簡単で、カーネルにパーティションテーブルを再読み込みするように指示するコマンドがあります。しかし、fdiskのようなLVM署名を消去しないようにテストする必要があります。


0

LVM物理ボリュームがパーティション上にある場合、再起動せずにサイズを変更することはできません。

ドライブのパーティションテーブルは編集できますが、Linuxは再起動するまで使用を拒否します。

あなたはXFSを使用している場合は、スイッチresize2fsxfs_growfs

あなたは使用してボリュームグループ内の使用のPVとLVを表示することができますpvsし、lvs

rawディスク上のPV

pvresize /dev/sda
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>

パーティション上のPV

最初に、パーティションのサイズを変更する必要があります。それにはpartedfdiskまたは同様のツールを使用します。これらのツールは、パーティションがある場所の説明のみを編集し、データを移動しないことに注意してください。つまり、ディスク上の最後のパーティションのみを簡単に拡張できます。次に、マシンを再起動すると、追加の空き容量があることをLVMに通知できるはずです。

pvresize /dev/sda2
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>

Gparted Live CDを使用すると、sudo pvresize /dev/sda2「1つの物理ボリュームのサイズが変更されました」と報告されsudo lvextend /dev/mapper/VolGroup-lv_root -L +10Gますが、「空き領域が不足しています:320エクステントが必要ですが、使用できるのは0のみです」というエラーで失敗します sudo fdisk -l私は54Gが利用可能であると報告していますが、sudo pvdisplay40Gのみが使用中です。lvextendが失敗するのはなぜですか?
セリン

1
@Cerin、パーティションでのPVに関するHubertsの最初の声明を見逃しました。 まず、パーティションのサイズを変更し、parted、fdisk、または同様のツールを使用する必要があります。
ゾレダチェ

@Zoredache、まあ、それは基本的に私の質問全体です。どうすればいいのかわかりません。Gparted LiveCDを起動し、partedのresizeコマンドを使用してプライマリパーティションサイズを増やしようとしましたが、「ファイルシステムを検出できませんでした」というエラーが表示されました。partedまたはfdiskを使用してパーティションのサイズを変更するにはどうすればよいですか?
セリン

@Cerin:SFを検索するか、別の質問をする
ヒューバートカリオ

0

ディストリビューションでssm(system-storage-manager)が利用可能であれば、チェックアウトすることを検討します。

詳細については、https//unix.stackexchange.com/a/293173をご覧ください。

ssmを使用すると、すべてを自分で行う必要なく、論理ボリュームのサイズ変更が簡単になります。

OSを再起動し、最初にルートとしてログインした後、それを使用してホームパーティションを拡張することができました。(合計で2回再起動する必要がありましたが、最終的には機能し、/ homeパーティションで追加の50Gを使用できるようになりました。)


0

25のHOWTOを組み合わせた後、ようやくこのソリューションができました。ライブCDは不要で、完全にオンザフライです。

手順1. parted(guiなし)でパーティションをフォーマットします。この例では、仮想ボックスでディスクの最大サイズが8BGから32 GBに増加しました。

    # parted
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
       ....
    (parted) mkpart primary ext2 8590 100%
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
         3      8590MB  34,4GB  25,8GB   primary  ext2             lba
       ....
    (parted) set 3 lvm on
    (parted) set 3 lba off
    (parted) print
       ....
         3      8590MB  34,4GB  25,8GB   primary  ext2             lvm
       ....
    (parted) quit

手順2.新しいパーティションに基づいて物理ボリュームを作成する

# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created.

手順3.物理ボリュームをボリュームグループに追加します。通常のfedora 28サーバーのインストールでは、ボリュームグループはfedoraと呼ばれます。

# vgextend fedora /dev/sda3
  Volume group "fedora" successfully extended

ステップ4.ボリュームグループ内の利用可能なスペースを論理ボリュームに追加します。通常のfedora 28サーバーのインストールでは、論理ボリュームはルートと呼ばれます。

# lvextend -l+100%FREE /dev/fedora/root
  Size of logical volume fedora/root changed from <6,20 GiB (1586 extents) to 30,19 GiB (7729 extents).
  Logical volume fedora/root successfully resized.

手順5.余分なスペースを使用するように論理ボリュームのファイルシステムに指示します。fedoraでは、ファイルシステムはxfsです。

注意!xfs_growfsは、マウントポイントを使用して、df出力で見つかったファイルシステムの名前ではなく、ファイルシステムを識別します!!!!!!!

コマンド 'xfs_growfs / dev / mapper / fedora-root'は、/ dev / mapper / fedora-rootがマウントされたXFSファイルシステムではないことを示します。別のファイルシステムを使用している場合は、https: //www.tldp.org/HOWTO/LVM-HOWTO/extendlv.htmlを参照してください

# xfs_growfs /
    data blocks changed from 1624064 to 7914496

ステップ6.楽しむ

# df
FileSystem               1K-blocks      Used   Available used% Mounted on
....
/dev/mapper/fedora-root   31647744   6492840    25154904  21% /
/dev/sda1                   999320    125576      804932  14% /boot
....

-1

テストディスクを試す

sudo dnf install testdisk

sudo testdisk

ログファイルを作成するだけで、パーティションが一覧表示されます-メディア/パーティションを選択し、次に入力し、分析します-クイック検索-選択して書き込みます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.