前回は、Windows 仮想マシンのディスクを拡張したので、今回はLinux 仮想マシンでも同様に拡張してみたいと思います。
各ディストリビューションによって挙動が違うことが予想されることから、UbuntuとCentOSでそれぞれ試してみたいと思います。
Ubuntu 14.04 LTS
最新ではありませんが、Long Term Support ということで 14.04 で試してみます。さくっとUbuntu Server 14.04 LTS で仮想マシンを作成し、追加のディスクをアタッチしておきます。以下の通り、Linux仮想マシンのルートパーティションは、Windowsと違い30GBと小容量です。
以下は df の結果(余分なもの除く)
azureuser@disktestubu:~$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 29G 946M 27G 4% / /dev/sdc1 30G 44M 28G 1% /data
この時点で、パーティションの状況は以下の通り。
azureuser@disktestubu:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 29.3G 0 disk └─sda1 8:1 0 29.3G 0 part / sdc 8:32 0 30G 0 disk └─sdc1 8:33 0 30G 0 part /data
次に仮想マシンを停止した後、Update-AzureDiskで、OS/Dataディスクを30G → 256GB と増やし、再度起動します。 なんとOSディスクは勝手に拡張されてますが、Dataディスクのほうはそのままです。クラウド上の仮想マシンですから、ルートパーティションを外部から操作することは出来ませんし、アンマウントすることも出来ませんから、勝手に拡張されるのは悪いことではないかもしれません。
azureuser@disktestubu:~$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 252G 1003M 241G 1% / /dev/sdc1 30G 44M 28G 1% /data
/dev/sdc も256GBに拡張されていることが分かりますが、パーティションは自動拡張されません。
azureuser@disktestubu:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 256G 0 disk └─sda1 8:1 0 256G 0 part / sdc 8:32 0 256G 0 disk └─sdc1 8:33 0 30G 0 part /data
次にパーティションを拡張します。拡張方法は、fdisk/parted などコマンドで行います。アンマウントできるなら、アンマウントしたほうがよいでしょう。ここではインストールされているparted 2.3 を使いマウントしたまま実施してみました。パーティションの拡張後は、resize2fsでファイルシステムのサイズを変更して完了です。
詳細は割愛しますが、parted (resizepart) -> reboot -> resize2fs でいけました。サイズを大きくしすぎるとresize2fsで時間がかかりますのでご注意を。あと、事後にe2fsck とかもしたほうがよいでしょう。
以下が拡張後のdfの結果です。パーティション拡張時、既存のデータについてどうなるか不明なので念のためバックアップはお勧めします。ファイル1つ置いておいたら、無事でしたけども。
azureuser@disktestubu:/$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 252G 1003M 241G 1% / /dev/sdc1 252G 60M 242G 1% /data
CentOS 6.6
次にシャチカビリティ高めのCentOS 6.6で試してみます。Ubuntuの場合と同じく、仮想マシンを作成し、Dataディスクをアタッチしておきます。
[azureuser@disktestcent ~]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 29G 2.4G 25G 9% / /dev/sdc1 30G 44M 28G 1% /data
lsblkするとsdaには2つパーティションがあります。
[azureuser@disktestcent ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 4.3M 0 rom sda 8:0 0 30G 0 disk ├─sda1 8:1 0 29G 0 part / └─sda2 8:2 0 1000M 0 part
よく見るとスワップ用のパーティションぽいですが、AzureのCentOS仮想マシンには、デフォルトでスワップは設定されていませんので、盲腸のようなパーティション見たいです(不思議)
[azureuser@disktestcent ~]$ sudo parted /dev/sda print Model: Msft Virtual Disk (scsi) Disk /dev/sda: 32.2GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 31.2GB 31.2GB primary ext4 boot 2 31.2GB 32.2GB 1049MB primary linux-swap(v1)
ここは事前にさくっと消しておいて、仮想マシンを停止させます。同様にUpdate-AzureDisk で拡張します。
さてCentOSはUbutuのように勝手にルートパーティション(/dev/sda1)は拡張されません。またアンマウントできないため、必然的にマウントしたまま作業することになりますがいくつか問題がありました。
- CentOS 6.6 の parted 2.1 には、resizepartコマンドがない
- resizeコマンドはあるが、マウントしたままだとエラーが起きる
- fdisk でやってみたら、二度と起動しなくなった(やりかたが間違ってた可能性もあり)
というわけで、resizepart コマンドがサポートされているparted が必要です。しょうがないので、parted 3.2をソースからビルドして対応しました。Development toolやいくつかの*-devel パッケージを定義インストールして対処してください。
Parted - GNU Project - Free Software Foundation
ちなみにUbuntuのpartedは2.3なのにreizepart コマンドがありますが、ソースからビルドした2.4にはresizepart コマンドが無くて難儀しました。バックポートしたんでしょうか。また、CentOS 7系はparted 3.1 が入っているらしいので多分そのままで問題ありません。
手順は同様に、parted (resizepart) -> reboot -> resize2fs でOKでした。
[azureuser@disktestcent ~]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 252G 2.8G 237G 2% /
データディスクについてはOSディスク同様実施できるかと思います(力つきた)
以上