2014年12月03日

CentOS7(Oracle Linux7)でのLVMパーティション拡張

環境:Oracle Linux7(CentOS7) 、Mac OSX10.8.5 + VMware Fusion7

さて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イメージをマウントして仮想マシンを起動します。
2014-12-03 22.49.24.png
「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として使えるようになります。
2014-12-03 22.57.13.png
/dev/sd2のエリアを縮小したら「Apply」を押してGPartedをシャットダウンします。
シャットダウン後はCD-ROMを外してください。

7.Linux上でパーティションを作成、追加。

fdiskで/dev/sda3を追加します。
[root@oraclelinux7 ~]# fdisk /dev/sda
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): 8e
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)
ディスクを同期しています。
ここまで終わったらrebootします。
[root@oraclelinux7 ~]# reboot

次に、パーティションをLVMに追加します。
現在のdf
[root@oraclelinux7 ~]# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/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
VGの現状を表示。
[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 -C
VG #PV #LV #SN Attr VSize VFree
ol 2 2 0 wz--n- 31.50g 12.00g
VFreeが12GB増えています。

lvextendコマンドを実行します(論理ボリュームに容量を追加)
[root@oraclelinux7 ~]# lvextend -l +100%FREE /dev/mapper/ol-root
Extending logical volume root to 29.50 GiB
Logical volume root successfully resized
「/dev/mapper/ol-root」の部分はdfコマンドで表示されたボリュームを指定してください。

次にファイルシステムの拡張ですが、CentOS7より前のLinuxだとresize2fsを使うのですが、CentOS7からは「xfs_growfs」コマンドを使います。
これがわからずハマりました。resize2fsコマンドだと下記のようにエラーになります。
root@oraclelinux7 ~]# resize2fs /dev/sda1
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.
xfs_growfsコマンドは下記の通りです。
[root@oraclelinux7 ~]# xfs_growfs /dev/mapper/ol-root
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
これでdfコマンドを実行すると、サイズが拡張されています。
[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


ようやくディスクが拡張できました…。
おつかれやまでした(・∀・)
posted by まきすけ at 23:20 | Comment(1) | TrackBack(0) | Linuxとか
この記事へのコメント
こちらを参考にし、VMWare上のCentOS7のディスク容量の再配分ができました。

ググった中で一番分かりやすかったです。
ありがとうございました。
Posted by kirishima at 2016年12月21日 20:59
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック