まず、私はサーバー管理と仮想化の分野の初心者です。それについていくつかのチュートリアルを確認した後、別のVMからスナップショットを取得してXenServerで作成された仮想マシンのストレージを拡張しようとしました。まず、VMをシャットダウンし、XenCenterを介してストレージを40GBから80GBに拡張しました。次に、VMを開始し、次のコマンドでfdiskを入力します。
Sudo fdisk /dev/xvda
次に、パーティションテーブルを印刷しました。
Device Boot Start End Sectors Size Id Type
/dev/xvda1 2048 999423 997376 487M 83 Linux
/dev/xvda2 1001470 83884031 82882562 39.5G 5 Extended
/dev/xvda5 1001472 83884031 82882560 39.5G 8e Linux LVM
どのチュートリアルでも、同様のパーティションテーブルは表示されませんでした。そのため、このテーブルに似た新しいパーティションテーブルを作成しようとしました。最初に5と2を削除し、次に新しい拡張パーティション(2)を作成し、Linuxタイプのパーティション(5)を作成しました。最後に、タイプ5をLinuxLVMに変更しました。最終的なパーティションテーブルは次のようになります。
Device Boot Start End Sectors Size Id Type
/dev/xvda1 2048 999423 997376 487M 83 Linux
/dev/xvda2 999424 167772159 166772736 79.5G 5 Extended
/dev/xvda5 1001472 167772159 166770688 79.5G 8e Linux LVM
テーブルを確認した後、テーブルをディスクに書き込み、VMを再起動しました。 VMは問題なく起動しました。Sudo df -h
でディスク容量を確認しました。出力は次のとおりです。
Filesystem Size Used Avail Use% Mounted on
udev 12G 0 12G 0% /dev
tmpfs 2.4G 8.7M 2.4G 1% /run
/dev/mapper/dbvmviduio--vg-root 35G 1.7G 32G 6% /
tmpfs 12G 0 12G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 12G 0 12G 0% /sys/fs/cgroup
/dev/xvda1 472M 101M 347M 23% /boot
tmpfs 100K 0 100K 0% /run/lxcfs/controllers
tmpfs 2.4G 0 2.4G 0% /run/user/1000
結局のところ、私はチュートリアルで書かれたようにresize2fs
を実行しようとしました。最初は、xvda2またはxvda5でresize2fsを実行することを知りませんでした。両方を試したところ、これらのエラーが発生しました。
Sudo resize2fs /dev/xvda2
resize2fs 1.42.13 (17-May-2015)
resize2fs: Attempt to read block from filesystem resulted in short read while trying to open /dev/xvda2
Couldn't find valid filesystem superblock.
Sudo resize2fs /dev/xvda5
resize2fs 1.42.13 (17-May-2015)
resize2fs: Device or resource busy while trying to open /dev/xvda5
Couldn't find valid filesystem superblock.
パーティションテーブルに問題はありますか?どうすればこれらの問題を克服できますか?
注:これらの問題を解決できなかった場合、Linuxタイプのパーティション(拡張なし)のみを作成しようとしましたが、VMは再起動後に開始されません(この後、スナップショットに戻りました) )。
どの手順を実行したか正確にはわかりませんが、Linux VMで使用可能なディスクを増やすには、以下の3つのことが必要です。
以下は、特定の例に含まれる手順です。
ステップ1:XenCenterのディスク容量を増やす
あなたはすでにそれをしました。
ステップ2:VMのパーティションテーブルを変更します
次に、fdiskを使用してlinux /パーティションのサイズを増やす必要があるため、VMを起動します。ユーティリティpartedを使用すると、パーティションのサイズを変更したり、パーティションのサイズを変更したり、ファイルシステムデータを移動したりできるようになりますが、partedでは実行中のパーティションを編集できません。この場合、たとえば/ dev/xvda3を編集する必要があるため、これは/パーティションであり、仮想ディスクの最後にあるため、パーティションのサイズを拡張するだけで、移動する必要はありません。実行中VM fdiskを使用して/パーティション(/ dev/xvda3)を増やします。
# fdisk /dev/xvda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p
Disk /dev/xvda: 12.9 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000928ad
Device Boot Start End Blocks Id System
/dev/xvda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/xvda2 26 281 2048000 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/xvda3 281 1045 6134784 83 Linux
Command (m for help): d
Partition number (1-4): 3
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (281-1566, default 281): 281
Last cylinder, +cylinders or +size{K,M,G} (281-1566, default 1566): 1566
Command (m for help): p
Disk /dev/xvda: 12.9 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000928ad
Device Boot Start End Blocks Id System
/dev/xvda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/xvda2 26 281 2048000 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/xvda3 281 1566 10325071 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
#
ステップ3:VMを再起動します
最後の警告が正確になったので、カーネルがパーティションジオメトリへの変更を取得するために、VMを再度再起動する必要があります。ただし、再起動しても、の使用可能なディスク領域サイズは変更されません。 /パーティション:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda3 5.8G 829M 4.7G 15% /
tmpfs 497M 0 497M 0% /dev/shm
/dev/xvda1 194M 45M 140M 25% /boot
これを修正するには、実行中のVMでresize2fsを実行します。これにより、パーティションのジオメトリとファイルシステムのサイズの違いが自動的に認識され、ファイルシステムが最大サイズに拡張されます。
# resize2fs /dev/xvda3
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/xvda3 is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/xvda3 to 2581267 (4k) blocks.
The filesystem on /dev/xvda3 is now 2581267 blocks long.
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda3 9.7G 830M 8.4G 9% /
tmpfs 497M 0 497M 0% /dev/shm
/dev/xvda1 194M 45M 140M 25% /boot
#
特に感謝しますhttp://www.simonhiggs.com/articles/xenserver-6.2-extending-disk-on-a-linux -vm.html
Resize2fsを開始する前に、いくつかの追加アクションを実行する必要があります...パーティションのサイズを変更した後、次の手順を実行します。
サイズ変更されたパーティションの物理ボリュームのサイズを変更します。
Sudo lvm pvresize /dev/xvda3
ボリュームグループを再スキャンします。
Sudo lvm vgscan
仮想グループをアクティブ化します。
Sudo lvm vgchange -ay
論理ボリュームを表示する:
Sudo lvdisplay
ルートボリュームのストア名。次のようになります:/ dev/vm-name-vg/root
論理ボリュームのサイズをすべての追加の空き領域に変更します(「/ dev/vm-name-vg/root」を前のコマンドの実際のボリューム名に置き換えることを忘れないでください)。
Sudo lvm lvresize /dev/vm-name-vg/root -l +100%FREE
その後、あなたはすることができます
resize2fs /dev/xvda3
今は動作するはずです。
私は自分の道をうまく動かすことができず、自分の道がうまくいかない理由を見つけることができませんでしたが、これのおかげで回避策を見つけました video 。
fdisk /dev/xvda
を実行しますn
(パーティション番号4、/ dev/xvda4)を使用して、新しいLinux LVMタイプ、空き領域のあるプライマリパーティションを作成しましたw
を作成し、新しいパーティションテーブルを保存しましたpvcreate /dev/xvda4
で新しいパーティションを作成しますvgdisplay
を実行して、私のVG名(dbvmviduio-vg)を確認しました。vgextend dbvmviduio-vg /dev/xvda4
を実行してdbvmviduio-vgを拡張lvextend -L+40G /dev/dbvmviduio-vg/root
を実行して音量を上げましたresize2fs /dev/dbvmviduio-vg/root
を実行し、df -h
を確認しました。