●仮想ディスクの拡張方法
仮想ディスクの拡張方法には2通りの方法があります。以下のコマンドを使用します。
1.qume-img
2.vmware-vdiskmanager.exe(ホストOSがWindowsの場合)
どちらの方法で行う前に、必ずバックアップを取ってください。
今回は、ホストOSがWindows XP、ゲストOSがFedora(Linux)となっています。
●qume-imgを使用
コマンドプロンプトを起動し、オリジナルのディスクイメージ(・・・.vmdk)をrawフォーマットに変換します。
GParted-LiveCDでfoobigを起動して、パーティションを編集する。
VMwareでfoobigを起動して動作確認。
ただし、vmdkへ戻す際、そのサイズが2GByte以上の場合、qemu-imgのバージョンによっては「error while writing」と表示されコンバートすることが出来ませんので注意してください。最新のバージョンはこちらからダウンロード出来ます。2011年6月14日現在、最新のバージョンはQEMU on Windows Ver 0.13.0となっています。
Windows版のGParted-LiveCDがないため上記で作成した大きなvmdkファイルをコピーするわけにもいかないので、下記のvmware-vdiskmanager.exeを使用したほうがいいかもしれない。
●vmware-vdiskmanager.exeを使用(ホストOSがWindowsの場合)
まず、vmware-vdiskmanager.exeを入手する必要があります。これはフリーのVMware Serverに含まれていますので、VMware Playerをインストールしている場合
Download VMware Server
VMware Serverに含まれているvmware-vdiskmanager.exeは
C:\Program files\VMware\VMware GSX Serve\vmware-vdiskmanager.exe
に存在します。
vmware-vdiskmanager.exeはvmdkファイルと同じフォルダに置いてください。
foo.vmdkの容量を10Gb増やしたい場合10Gbに拡張したい場合は、コマンドプロントで以下を実行します。
正常に完了しない場合は、下記にログが出力されますので参考するといいでしょう。
C:¥Documents and Settings¥********¥Local Settings¥Temp¥vmware-********
仮想ディスクを拡張しようとしたときに下記のようなエラーが出力されました。
Failed to expand the disk 'FedoraCore13.vmdk': One of the parameters supplied is invalid (1).
何故表示されるのか理由がわからなかったのですが、ログを確認すると下記のように出力されていました。
完了しところで●LVMパーティションの拡張を参照して拡張してください。
●vmware-vdiskmanagerを使用(ホストOSがLinuxの場合)
まず、vmware-vdiskmanagerを入手する必要があります。これはフリーのVMware Serverに含まれていますので、VMware Playerをインストールしている場合
Download VMware Server
VMware Serverに含まれているvmware-vdiskmanagerは
/usr/bin/vmware-vdiskmanager
に存在します。コピーするなどして保存します。
foo.vmdkの容量を10Gb増やしたい場合は、コマンドプロントで以下を実行します。
●パーティションの拡張
パーティションを拡張には、フリーソフトであるGParted Live CDを使用します。以下からダウンロードできます。
GParted Live CD Downloads
isoをダウンロードし、CDに焼き込みます。
拡張したい仮想ディスク用のvmxファイルを編集し、VMware起動時にGParted Live CDを読み込むようにします。
GPartedを使用して、パーティションを結合し拡張します。GPartedの使用方法は、下記を参照してください。
GPartedでパーティションを操作するには
パーティション操作専用のLinux GParted LiveCD
ただし、GPartedではLVMパーティションを認識せず拡張することができません。
●LVMパーティションの拡張
拡張前の情報を取得しておきます(拡張した仮想ディスクを起動後確認しても同内容が表示されます)。
次に、通常通りVMwareを立ち上げて(正確には以降の作業はSingle User Modeでやった方がよいでしょう)、fdiskでパーティションを切ります。
/dev/sda3を元にPhysical Volumeを作り、Volume Group(VolGroup)に追加し、VolGroupのLogical Volume(lv_root)を拡張します。dfコマンドを使用して表示された/dev/mapper/VolGroup-lv_rootの名称がポイントになります。
論理ボリュームの拡張にはlvextendを使用します。fdisk -lを実行時に「21.5GB」と表示されたので、下記のように実行しましたが
また、VG Size値を指定しても同様でした。仕方がないので、「Free PE / Size 319 / 9.97 GiB」のサイズ値を利用して論理ボリューム及びファイルシステムの拡張を繰り返しながら試してみました。
1 GB = 230B = 1,000,000,000 B(SI接頭辞)
1 GiB = 230B = 1,073,741,824 B(2進接頭辞)
人間が分かりやすいGBを用いると、コンピュータ上では膨れ上がってしまい実際のサイズより大きくなってしまうためでした。
仮想ディスクの拡張方法には2通りの方法があります。以下のコマンドを使用します。
1.qume-img
2.vmware-vdiskmanager.exe(ホストOSがWindowsの場合)
どちらの方法で行う前に、必ずバックアップを取ってください。
今回は、ホストOSがWindows XP、ゲストOSがFedora(Linux)となっています。
●qume-imgを使用
コマンドプロンプトを起動し、オリジナルのディスクイメージ(・・・.vmdk)をrawフォーマットに変換します。
> qemu-img convert -f vmdk foo.vmdk -O raw foo.raw追加するディスクイメージをrawフォーマットで作成します。
> qemu-img create -f raw add.raw 5G ← 5Gbの追加用ディスクを作成
結合します。
> copy /b foo.raw + add.raw foobig.raw変換して元のフォーマット(vmdk)に戻します。
> qemu-img convert -f raw foobig.raw -O vmdk foobig.vmdkfoo.vmxを編集してfoobig.vmxを作成するか、vmxファイルはそのままでfoobig.vmdkのファイル名をfoo.vmdkに変更します。
GParted-LiveCDでfoobigを起動して、パーティションを編集する。
VMwareでfoobigを起動して動作確認。
ただし、vmdkへ戻す際、そのサイズが2GByte以上の場合、qemu-imgのバージョンによっては「error while writing」と表示されコンバートすることが出来ませんので注意してください。最新のバージョンはこちらからダウンロード出来ます。2011年6月14日現在、最新のバージョンはQEMU on Windows Ver 0.13.0となっています。
Windows版のGParted-LiveCDがないため上記で作成した大きなvmdkファイルをコピーするわけにもいかないので、下記のvmware-vdiskmanager.exeを使用したほうがいいかもしれない。
●vmware-vdiskmanager.exeを使用(ホストOSがWindowsの場合)
まず、vmware-vdiskmanager.exeを入手する必要があります。これはフリーのVMware Serverに含まれていますので、VMware Playerをインストールしている場合
- VMware Playerをアンインストール → VMware Serverをインストール → vmware-vdiskmanager.exeを取り出す → VMware Serverをアンインストール → VMware Playerをインストール
Download VMware Server
VMware Serverに含まれているvmware-vdiskmanager.exeは
C:\Program files\VMware\VMware GSX Serve\vmware-vdiskmanager.exe
に存在します。
vmware-vdiskmanager.exeはvmdkファイルと同じフォルダに置いてください。
foo.vmdkの容量を10Gb増やしたい場合10Gbに拡張したい場合は、コマンドプロントで以下を実行します。
> vmware-vdiskmanager.exe -x 10Gb foo.vmdk完了するのに30分以上かかります。
正常に完了しない場合は、下記にログが出力されますので参考するといいでしょう。
C:¥Documents and Settings¥********¥Local Settings¥Temp¥vmware-********
仮想ディスクを拡張しようとしたときに下記のようなエラーが出力されました。
Failed to expand the disk 'FedoraCore13.vmdk': One of the parameters supplied is invalid (1).
何故表示されるのか理由がわからなかったのですが、ログを確認すると下記のように出力されていました。
Jun 14 16:20:40: app| Log for VMware Server pid=2100 version=1.0.6 build=build-91891 option=Release
Jun 14 16:20:40: app| DISKLIB-DSCPTR: Unrecognized ddb entry. ID='isNativeSnapshot' Val='no'
Jun 14 16:20:40: app| DISKLIB-DSCPTR: Opened [0]: "FedoraCore13.vmdk" (0x18)
Jun 14 16:20:40: app| DISKLIB-LINK : Opened 'FedoraCore13.vmdk' (0x18): monolithicSparse, 41943040 sectors / 20480 Mb.
Jun 14 16:20:40: app| DISKLIB-LIB : Opened "FedoraCore13.vmdk" (flags 0x18).
Jun 14 16:20:40: app| Scanning directory of file FedoraCore13.vmdk for vmx files.
Jun 14 16:20:40: app| DISKLIB-DSCPTR: Unrecognized ddb entry. ID='isNativeSnapshot' Val='no'
Jun 14 16:20:40: app| DISKLIB-DSCPTR: Opened [0]: "FedoraCore13.vmdk" (0)
Jun 14 16:20:40: app| DISKLIB-LINK : Opened 'FedoraCore13.vmdk' (0): monolithicSparse, 41943040 sectors / 20480 Mb.
Jun 14 16:20:40: app| DISKLIB-LIB : Opened "FedoraCore13.vmdk" (flags 0).
Jun 14 16:20:40: app| DISKLIB-LIB : Growing disk 'FedoraCore13.vmdk' : createType = monolithicSparse
Jun 14 16:20:40: app| DISKLIB-LIB : Growing disk 'FedoraCore13.vmdk' : capacity = 41943040 sectors - 20.0 Gb
Jun 14 16:20:40: app| DISKLIB-LIB : Growing disk 'FedoraCore13.vmdk' : new capacity = 41943040 sectors - 20.0 Gb
Jun 14 16:20:40: app| DISKLIB-LIB : capacity needs to be bigger than : 41943040 (41943040)
Jun 14 16:20:40: app| .DISKLIB-LIB : Failed to grow disk 'FedoraCore13.vmdk' : One of the parameters supplied is invalid (1).
Jun 14 16:20:40: app| AIOMGR-U : stat o=1 r=44 w=2 i=0 br=2629632 bw=1024
Jun 14 16:20:40: app| AIOMGR-S : stat o=3 r=50 w=2 i=0 br=2655232 bw=1024
ようするに、
Jun 14 16:20:40: app| DISKLIB-DSCPTR: Unrecognized ddb entry. ID='isNativeSnapshot' Val='no'
Jun 14 16:20:40: app| DISKLIB-DSCPTR: Opened [0]: "FedoraCore13.vmdk" (0x18)
Jun 14 16:20:40: app| DISKLIB-LINK : Opened 'FedoraCore13.vmdk' (0x18): monolithicSparse, 41943040 sectors / 20480 Mb.
Jun 14 16:20:40: app| DISKLIB-LIB : Opened "FedoraCore13.vmdk" (flags 0x18).
Jun 14 16:20:40: app| Scanning directory of file FedoraCore13.vmdk for vmx files.
Jun 14 16:20:40: app| DISKLIB-DSCPTR: Unrecognized ddb entry. ID='isNativeSnapshot' Val='no'
Jun 14 16:20:40: app| DISKLIB-DSCPTR: Opened [0]: "FedoraCore13.vmdk" (0)
Jun 14 16:20:40: app| DISKLIB-LINK : Opened 'FedoraCore13.vmdk' (0): monolithicSparse, 41943040 sectors / 20480 Mb.
Jun 14 16:20:40: app| DISKLIB-LIB : Opened "FedoraCore13.vmdk" (flags 0).
Jun 14 16:20:40: app| DISKLIB-LIB : Growing disk 'FedoraCore13.vmdk' : createType = monolithicSparse
Jun 14 16:20:40: app| DISKLIB-LIB : Growing disk 'FedoraCore13.vmdk' : capacity = 41943040 sectors - 20.0 Gb
Jun 14 16:20:40: app| DISKLIB-LIB : Growing disk 'FedoraCore13.vmdk' : new capacity = 41943040 sectors - 20.0 Gb
Jun 14 16:20:40: app| DISKLIB-LIB : capacity needs to be bigger than : 41943040 (41943040)
Jun 14 16:20:40: app| .DISKLIB-LIB : Failed to grow disk 'FedoraCore13.vmdk' : One of the parameters supplied is invalid (1).
Jun 14 16:20:40: app| AIOMGR-U : stat o=1 r=44 w=2 i=0 br=2629632 bw=1024
Jun 14 16:20:40: app| AIOMGR-S : stat o=3 r=50 w=2 i=0 br=2655232 bw=1024
> vmware-vdiskmanager.exe -x 5Gb FedoraCore13.vmdkとか
> vmware-vdiskmanager.exe -x 10Gb FedoraCore13.vmdkと入力し拡張しようとしたため、既に20.0Gbまでは拡張されているのでそれ以上のサイズ指定してくださいとのことでした。
完了しところで●LVMパーティションの拡張を参照して拡張してください。
●vmware-vdiskmanagerを使用(ホストOSがLinuxの場合)
まず、vmware-vdiskmanagerを入手する必要があります。これはフリーのVMware Serverに含まれていますので、VMware Playerをインストールしている場合
- VMware Playerをアンインストール → VMware Serverをインストール → vmware-vdiskmanagerを取り出す → VMware Serverをアンインストール → VMware Playerをインストール
Download VMware Server
VMware Serverに含まれているvmware-vdiskmanagerは
/usr/bin/vmware-vdiskmanager
に存在します。コピーするなどして保存します。
foo.vmdkの容量を10Gb増やしたい場合は、コマンドプロントで以下を実行します。
> vmware-vdiskmanager -x 10Gb foo.vmdkしかし、下記のようなエラーが表示されました。
Using log file /tmp/vmware-root/vdiskmanager.log Failed to analyze snapshot chain '/root/anaconda-ks.cfg'. Will not be able to make an informed decision based on partial information.一時的に、/root/anaconda-ks.cfgを別名保存します。再度実行します。完了するのに30分以上かかります。
●パーティションの拡張
パーティションを拡張には、フリーソフトであるGParted Live CDを使用します。以下からダウンロードできます。
GParted Live CD Downloads
isoをダウンロードし、CDに焼き込みます。
拡張したい仮想ディスク用のvmxファイルを編集し、VMware起動時にGParted Live CDを読み込むようにします。
GPartedを使用して、パーティションを結合し拡張します。GPartedの使用方法は、下記を参照してください。
GPartedでパーティションを操作するには
パーティション操作専用のLinux GParted LiveCD
ただし、GPartedではLVMパーティションを認識せず拡張することができません。
●LVMパーティションの拡張
拡張前の情報を取得しておきます(拡張した仮想ディスクを起動後確認しても同内容が表示されます)。
# fdisk -l
ディスク /dev/sda: 10.7 GB, 10737418240 バイト
ヘッド 255, セクタ 63, シリンダ 1305, 合計 20971520 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00007e1b
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 20971519 9972736 8e Linux LVM
ディスク /dev/dm-0: 9126 MB, 9126805504 バイト
ヘッド 255, セクタ 63, シリンダ 1109, 合計 17825792 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000
ディスク /dev/dm-0 は正常なパーティションテーブルを含んでいません
ディスク /dev/dm-1: 1073 MB, 1073741824 バイト
ヘッド 255, セクタ 63, シリンダ 130, 合計 2097152 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000
ディスク /dev/dm-1 は正常なパーティションテーブルを含んでいません
ヘッド 255, セクタ 63, シリンダ 1305, 合計 20971520 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00007e1b
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 20971519 9972736 8e Linux LVM
ディスク /dev/dm-0: 9126 MB, 9126805504 バイト
ヘッド 255, セクタ 63, シリンダ 1109, 合計 17825792 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000
ディスク /dev/dm-0 は正常なパーティションテーブルを含んでいません
ディスク /dev/dm-1: 1073 MB, 1073741824 バイト
ヘッド 255, セクタ 63, シリンダ 130, 合計 2097152 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000
ディスク /dev/dm-1 は正常なパーティションテーブルを含んでいません
# df -h
Filesystem Size Used Avail Use% マウント位置
/dev/mapper/VolGroup-lv_root
8.4G 6.0G 2.0G 76% /
tmpfs 249M 100K 249M 1% /dev/shm
/dev/sda1 485M 75M 385M 17% /boot
拡張を行っていない場合は、VMwareををshutdownしvmware-vdiskmanager.exeを使って仮想ディスクを拡張します。
> vmware-vdiskmanager.exe -x 20Gb FedoraCore13.vmdkWindows版ではなく、Linux版のVMware Workstation、VMware Serverでもvmware-vdiskmanagerというコマンドが使えます。
次に、通常通りVMwareを立ち上げて(正確には以降の作業はSingle User Modeでやった方がよいでしょう)、fdiskでパーティションを切ります。
# fdisk /dev/sda -l
ディスク /dev/sda: 21.5 GB, 21474836480 バイト
ヘッド 255, セクタ 63, シリンダ 2610, 合計 41943040 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00007e1b
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 20971519 9972736 8e Linux LVM
拡張されていることが分かります。
# fdisk /dev/sda
コマンド (m でヘルプ): n
コマンドアクション e 拡張
p 基本パーティション (1-4)
p(リターンキー押下)
パーティション番号 (1-4, 初期値 3): (デフォルトのままリターンキー押下)
初期値 3 を使います
最初 セクタ (20971520-41943039, 初期値 20971520): (デフォルトのままリターンキー押下)
初期値 20971520 を使います
Last セクタ, +セクタ数 or +size{K,M,G} (20971520-41943039, 初期値 41943039): (デフォルトのままリターンキー押下)
初期値 41943039 を使います
コマンド (m でヘルプ): t
パーティション番号 (1-4): 3
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました
コマンド (m でヘルプ): w
パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
警告: パーティションテーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。新しいテーブルは
次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に
使えるようになるでしょう
ディスクを同期しています。
コマンドアクション e 拡張
p 基本パーティション (1-4)
p(リターンキー押下)
パーティション番号 (1-4, 初期値 3): (デフォルトのままリターンキー押下)
初期値 3 を使います
最初 セクタ (20971520-41943039, 初期値 20971520): (デフォルトのままリターンキー押下)
初期値 20971520 を使います
Last セクタ, +セクタ数 or +size{K,M,G} (20971520-41943039, 初期値 41943039): (デフォルトのままリターンキー押下)
初期値 41943039 を使います
コマンド (m でヘルプ): t
パーティション番号 (1-4): 3
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました
コマンド (m でヘルプ): w
パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
警告: パーティションテーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。新しいテーブルは
次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に
使えるようになるでしょう
ディスクを同期しています。
# shutdown -r now ← 再起動
# fdisk -l
ディスク /dev/sda: 21.5 GB, 21474836480 バイト
ヘッド 255, セクタ 63, シリンダ 2610, 合計 41943040 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00007e1b
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 20971519 9972736 8e Linux LVM
/dev/sda3 20971520 41943039 10485760 8e Linux LVM ← 新たに作成されている
ディスク /dev/dm-0: 9126 MB, 9126805504 バイト
ヘッド 255, セクタ 63, シリンダ 1109, 合計 17825792 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000
ディスク /dev/dm-0 は正常なパーティションテーブルを含んでいません
ディスク /dev/dm-1: 1073 MB, 1073741824 バイト
ヘッド 255, セクタ 63, シリンダ 130, 合計 2097152 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000
ディスク /dev/dm-1 は正常なパーティションテーブルを含んでいません
ヘッド 255, セクタ 63, シリンダ 2610, 合計 41943040 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00007e1b
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 20971519 9972736 8e Linux LVM
/dev/sda3 20971520 41943039 10485760 8e Linux LVM ← 新たに作成されている
ディスク /dev/dm-0: 9126 MB, 9126805504 バイト
ヘッド 255, セクタ 63, シリンダ 1109, 合計 17825792 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000
ディスク /dev/dm-0 は正常なパーティションテーブルを含んでいません
ディスク /dev/dm-1: 1073 MB, 1073741824 バイト
ヘッド 255, セクタ 63, シリンダ 130, 合計 2097152 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000
ディスク /dev/dm-1 は正常なパーティションテーブルを含んでいません
/dev/sda3を元にPhysical Volumeを作り、Volume Group(VolGroup)に追加し、VolGroupのLogical Volume(lv_root)を拡張します。dfコマンドを使用して表示された/dev/mapper/VolGroup-lv_rootの名称がポイントになります。
(物理ボリュームの作成)
# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created
(ボリュームグループの作成)
# vgextend VolGroup /dev/sda3
Volume group "VolGroup" successfully extended
Volume Groupの空き容量を確認します。Local Volumeに割当てるためのFreeのPEがないとLogical Volumeを増やすことは出来ません。
# vgdisplay VolGroup --- Volume group --- VG Name VolGroup System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 ←VG内に構築できるLVの最大数 Cur LV 2 ←現在構築されているLVの数 Open LV 2 ←現在使用されているLVの数 Max PV 0 ←VGに接続できるPVの最大数(HDD数) Cur PV 2 ←VGに接続されているPVの数(HDD数) Act PV 2 ←VGに接続されている使用可能なPVの数(HDD数) VG Size 19.47 GiB ←VGに接続されている使用可能な容量 PE Size 32.00 MiB ←extentのサイズ Total PE 623 ←トータルのextent数(PE数) Alloc PE / Size 304 / 9.50 GiB ←LVに割り当てられているPE/サイズの量 Free PE / Size 319 / 9.97 GiB VG UUID iXfA6j-MDFj-qeo0-rxXg-GaKB-XDdz-7CWdLMボリュームグループVolGroupはこれからサイズを変更するLVが構築されているVGです。Free PEが0より大きければLVを増やすことが可能です。LVのサイズを増やす際には各種単位でサイズ指定も出来るのでFree Sizeの確認も忘れずに。
論理ボリュームの拡張にはlvextendを使用します。fdisk -lを実行時に「21.5GB」と表示されたので、下記のように実行しましたが
(論理ボリューム(=パーティショの)の作成) # lvextend -L 21.5G /dev/VolGroup/lv_rootファイルシステム拡張(resize2fs実行)時に拡張されませんでした。
また、VG Size値を指定しても同様でした。仕方がないので、「Free PE / Size 319 / 9.97 GiB」のサイズ値を利用して論理ボリューム及びファイルシステムの拡張を繰り返しながら試してみました。
(1回目:失敗) # lvextend -L +9.97G /dev/VolGroup/lv_root Rounding up size to full physical extent 10.00 GiB Extending logical volume lv_root to 18.50 GiB Insufficient free space: 320 extents needed, but only 319 available # resize2fs /dev/VolGroup/lv_root resize2fs 1.41.12 (17-May-2010) The filesystem is already 2228224 blocks long. Nothing to do! # df -h Filesystem Size Used Avail Use% マウント位置 /dev/mapper/VolGroup-lv_root 8.4G 6.1G 2.0G 77% / tmpfs 249M 264K 249M 1% /dev/shm /dev/sda1 485M 75M 385M 17% /boot 拡張されていない。何故、拡張されないのか・・。調べてみると単位が異なっていました。1GB≠1GiBなのです。
1 GB = 230B = 1,000,000,000 B(SI接頭辞)
1 GiB = 230B = 1,073,741,824 B(2進接頭辞)
人間が分かりやすいGBを用いると、コンピュータ上では膨れ上がってしまい実際のサイズより大きくなってしまうためでした。
(2回目) # lvextend -L +9G /dev/VolGroup/lv_root Extending logical volume lv_root to 17.50 GiB Logical volume lv_root successfully resized # resize2fs /dev/VolGroup/lv_root resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/VolGroup/lv_root is mounted on /; on-line resizing required old desc_blocks = 1, new_desc_blocks = 2 Performing an on-line resize of /dev/VolGroup/lv_root to 4587520 (4k) blocks. The filesystem on /dev/VolGroup/lv_root is now 4587520 blocks long. # df -h Filesystem Size Used Avail Use% マウント位置 /dev/mapper/VolGroup-lv_root 18G 6.1G 11G 37% / tmpfs 249M 264K 249M 1% /dev/shm /dev/sda1 485M 75M 385M 17% /boot # vgdisplay VolGroup 表示結果は抜粋 Alloc PE / Size 592 / 18.50 GiB Free PE / Size 31 / 992.00 MiB ← 値が減っている 拡張された。まだまだ行けそう。 (3回目) # lvextend -L +0.5G /dev/VolGroup/lv_root Extending logical volume lv_root to 18.00 GiB Logical volume lv_root successfully resized # resize2fs /dev/VolGroup/lv_root resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/VolGroup/lv_root is mounted on /; on-line resizing required old desc_blocks = 2, new_desc_blocks = 2 Performing an on-line resize of /dev/VolGroup/lv_root to 4718592 (4k) blocks. The filesystem on /dev/VolGroup/lv_root is now 4718592 blocks long. # vgdisplay VolGroup 表示結果は抜粋 Alloc PE / Size 608 / 19.00 GiB Free PE / Size 15 / 480.00 MiB ← 値が減っている (4回目) # lvextend -L +480M /dev/VolGroup/lv_root Extending logical volume lv_root to 18.47 GiB Logical volume lv_root successfully resized # resize2fs /dev/VolGroup/lv_root resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/VolGroup/lv_root is mounted on /; on-line resizing required old desc_blocks = 2, new_desc_blocks = 2 Performing an on-line resize of /dev/VolGroup/lv_root to 4841472 (4k) blocks. The filesystem on /dev/VolGroup/lv_root is now 4841472 blocks long. # vgdisplay VolGroup 表示結果は抜粋 Alloc PE / Size 623 / 19.47 GiB Free PE / Size 0 / 0 ← 0になった。これ以上拡張は出来ない (entent数で実施) # lvextend -l 623 /dev/VolGroup/lv_root Extending logical volume lv_root to 19.47 GiB Insufficient free space: 351 extents needed, but only 319 available これは拡張出来なかった。 # lvextend -l +319 /dev/VolGroup/lv_root Extending logical volume lv_root to 18.47 GiB Logical volume lv_root successfully resized # resize2fs /dev/VolGroup/lv_root resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/VolGroup/lv_root is mounted on /; on-line resizing required old desc_blocks = 1, new_desc_blocks = 2 Performing an on-line resize of /dev/VolGroup/lv_root to 4841472 (4k) blocks. The filesystem on /dev/VolGroup/lv_root is now 4841472 blocks long. # vgdisplay VolGroup 表示結果は抜粋 Alloc PE / Size 623 / 19.47 GiB Free PE / Size 0 / 0 ← 0になった。これ以上拡張は出来ない最終的には下記のようになりました。
# df -h Filesystem Size Used Avail Use% マウント位置 /dev/mapper/VolGroup-lv_root 19G 6.1G 12G 36% / tmpfs 249M 264K 249M 1% /dev/shm /dev/sda1 485M 75M 385M 17% /boot増えていることが確認できます。