さてOracle Linux7にOracleをインストールしようかと思ったらパーティションがデフォルトで20Gしかなくて容量不足とのメッセージ。VMwareのディスクを追加して、LVMを拡張しようとしたらドハマリしたのでLinuxパーティション拡張のメモ。
おおまかな手順
1.OSシャットダウン
2.スナップショットを取っていたら削除する。
3.必要に応じてディスクイメージをバックアップ
4.VMwareでディスクを追加する。
5.GPartedのディスクイメージで起動するので、起動シーケンスを変更するためVMwareでBIOS表示できるよう設定する。
6.GPartedで領域編集
7.Linux上でパーティションを作成、追加。
ハマったのは6,7です。
では詳細。
下記4つはわかりやすいので割愛。
1.OSシャットダウン
2.スナップショットを取っていたら削除する。
3.必要に応じてディスクイメージをバックアップ
4.VMwareでディスクを追加する。
5.GPartedのディスクイメージで起動するので、起動シーケンスを変更するためVMwareでBIOS表示できるよう設定する。
参考サイト:VMware Fusion:サスペンド / レジュームが遅い場合の対処法と BIOS を確実に表示させる方法。
参考サイトの通り、「.vmware」という拡張子の仮想OSのファイルを右クリックして「パッケージの内容を表示」します。
「仮想サーバ名.vmx」というファイルがあるのでテキストエディタで開いて、最下部に下記1行を追加。
bios.forceSetupOnce = "TRUE"追加した行は1回再起動すると消えるので、再度BIOSを開く場合は毎回編集する必要があります。
再起動するとBIOS表示になるので、起動優先順位にてHDDよりもCD-ROMが優先になるよう設定します。
6.GPartedで領域編集
GPartedはオープンソースのパーティションエディタです。
http://gparted.sourceforge.net/download.php
ダウンロードしたisoイメージをマウントして仮想マシンを起動します。

「CD/DVDを接続」し、「ディスクまたはディスクイメージを選択」からGPartedのイメージを選択します。
GPartedが起動するので、デフォルトを選択。
キーマッピングは「Don't touch keymap(デフォルト)」
言語は日本語(15)
Which mode do you prefer?は「(0) Continue to start X to use GParted automatically(デフォルト)」
GPartedが起動します。
下の画面はパーティション追加後の画面なので/dev/sda3が表示されています。
追加前はリストに/dev/sda3が存在せず、上部の/dev/sda2のエリアが右端まで広がっていました。ただし、/dev/sda3と表示されているエリアは白い状態(未使用)になっていました。
/dev/sda2の余っている白い領域を縮小して保存すると、空き領域を/dev/sda3として使えるようになります。

/dev/sd2のエリアを縮小したら「Apply」を押してGPartedをシャットダウンします。
シャットダウン後はCD-ROMを外してください。
7.Linux上でパーティションを作成、追加。
fdiskで/dev/sda3を追加します。
[root@oraclelinux7 ~]# fdisk /dev/sdaここまで終わったらrebootします。
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
コマンド (m でヘルプ): p <==現在のパーティションを表示
Disk /dev/sda: 34.4 GB, 34359738368 bytes, 67108864 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000cf96b
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 41943039 20458496 8e Linux LVM
コマンド (m でヘルプ): n <==新しいパーティションを作成
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p <==プライマリパーティション
パーティション番号 (3,4, default 3): 3 <==パーティション番号
最初 sector (41943040-67108863, 初期値 41943040):
初期値 41943040 を使います
Last sector, +sectors or +size{K,M,G} (41943040-67108863, 初期値 67108863):
初期値 67108863 を使います
Partition 3 of type Linux and of size 12 GiB is set
コマンド (m でヘルプ): p <==作成したパーティションを表示
Disk /dev/sda: 34.4 GB, 34359738368 bytes, 67108864 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000cf96b
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 41943039 20458496 8e Linux LVM
/dev/sda3 41943040 67108863 12582912 83 Linux <==/dev/sda3が追加されている。
コマンド (m でヘルプ): t <==パーティションのタイプをLinux LVMに変更
パーティション番号 (1-3, default 3): 3
Hex code (type L to list all codes):8e31
Changed type of partition 'Linux' to 'Linux LVM'
コマンド (m でヘルプ): p
Disk /dev/sda: 34.4 GB, 34359738368 bytes, 67108864 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000cf96b
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 41943039 20458496 8e Linux LVM
/dev/sda3 41943040 67108863 12582912 8e Linux LVM
コマンド (m でヘルプ): w <==変更を反映
パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
WARNING: Re-reading the partition table failed with error 16: デバイスもしくはリソースがビジー状態です.
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)
ディスクを同期しています。
[root@oraclelinux7 ~]# reboot
次に、パーティションをLVMに追加します。
現在のdf
[root@oraclelinux7 ~]# df -hVGの現状を表示。
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/ol-root 18G 11G 6.9G 61% /
devtmpfs 858M 0 858M 0% /dev
tmpfs 866M 80K 866M 1% /dev/shm
tmpfs 866M 9.0M 857M 2% /run
tmpfs 866M 0 866M 0% /sys/fs/cgroup
/dev/sda1 497M 208M 290M 42% /boot
[root@oraclelinux7 ~]# vgdisplay -C
VG #PV #LV #SN Attr VSize VFree
ol 1 2 0 wz--n- 19.51g 0
「VG」で表示された箇所にsda3を追加。
[root@oraclelinux7 ~]# vgextend ol /dev/sda3更新後の状態を表示
Physical volume "/dev/sda3" successfully created
Volume group "ol" successfully extended
[root@oraclelinux7 ~]# vgdisplay -CVFreeが12GB増えています。
VG #PV #LV #SN Attr VSize VFree
ol 2 2 0 wz--n- 31.50g 12.00g
lvextendコマンドを実行します(論理ボリュームに容量を追加)
[root@oraclelinux7 ~]# lvextend -l +100%FREE /dev/mapper/ol-root「/dev/mapper/ol-root」の部分はdfコマンドで表示されたボリュームを指定してください。
Extending logical volume root to 29.50 GiB
Logical volume root successfully resized
次にファイルシステムの拡張ですが、CentOS7より前のLinuxだとresize2fsを使うのですが、CentOS7からは「xfs_growfs」コマンドを使います。
これがわからずハマりました。resize2fsコマンドだと下記のようにエラーになります。
root@oraclelinux7 ~]# resize2fs /dev/sda1※ファイルシステムの拡張 ; ubuntu では以下の様にします。
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/sda1
Couldn't find valid filesystem superblock.
[Centos7] xfs_growfs /dev/mapper/vgubuntu-root ==>> [ubuntu] resize2fs /dev/vgubuntu/root (ol/root)
xfs_growfsコマンドは下記の通りです。
[root@oraclelinux7 ~]# xfs_growfs /dev/mapper/ol-rootこれでdfコマンドを実行すると、サイズが拡張されています。
meta-data=/dev/mapper/ol-root isize=256 agcount=4, agsize=1147392 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=4589568, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 4589568 to 7734272
[root@oraclelinux7 ~]# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/ol-root 30G 11G 19G 37% /
devtmpfs 858M 0 858M 0% /dev
tmpfs 866M 80K 866M 1% /dev/shm
tmpfs 866M 9.0M 857M 2% /run
tmpfs 866M 0 866M 0% /sys/fs/cgroup
/dev/sda1 497M 208M 290M 42% /boot
ようやくディスクが拡張できました…。
おつかれやまでした(・∀・)