Midnightjapan

Tag: LVM

可搬性疑似仮想アプライアンスサーバーシステム構想

by jun on 4月.23, 2011, under Blog, Linux, MacBook Air

4月がもうすぐ終わろうとしているが、いまだに放射能の問題や電力不足問題や余震の恐怖。

システム開発を行う私としては、計画停電は致命的な問題である。

今後発生する可能性がある消費税の増税に伴う、システムのリビルド等。課題は山積みである。

これからの不安定な社会を乗り切るためには、システムの海外への移動か可搬性を持たせるなど危険なアイデアを試みる必要があると考えた。

海外への移設は順次進めている。

残念ながらこのサーバーは移転しません。団体利用のため移転しません。あしからず。

構想?「電力を確保する」

・ガソリン式の発電機を購入すれば数時間の電力は賄えるが、コストと設置場所を考えると個人向けではない。ましてガソリンを運ぶ携行缶なども購入しておく必要もあり、ガソリンを補完する場所や火事の危険を考慮しないといけないわけです。

・無停電電源バッテリーを活用する。しかしこれは活用できなかった。理由は蓄電量がわずかでシステム開発を行えるほど電力はない。

・車のダイナモからの電力を使って停電時間中を凌ぐ。これであればガソリンを保管するのが車の中のため安全だ。しかし肝心の電力が問題でダイナモからのノイズと不安定電力の安定化のため、高価なコンバーターが必要となる。これもおしいアイデアであった。

この結果、いかにノートパソコンの性能がすごいかわかってきた。

わたしが持っているMacBookAirは3時間余裕で稼働してしまう。

画面サイズなど考えれば、いままでどおりの開発環境とはいかないが、これを活用しない手はない。

しかしサーバーとクライアント環境を整えるためには複数台購入し数十万払う必要がある。

これは現実的ではない。

そこで、

構想?MacBookAir内の仮想環境を活用する。

実際には

構想?「海外クラウドシステム GoogleApps,AmazonEC2を活用する」などもあったが、どれも面倒で実現は難しかった。

わたしはマルチプラットフォーム(Mac/Win)のWEBシステムが現在開発中のシステムであるためMac/Winのブラウザチェック、Windows開発環境、Linuxサーバー環境が必要である。

これを仮想化する。仮想化は各種あるが私は下記に決めた。

Oracle VirtualBox Ver.4.0.6(無料)

しかしれだけではMac・Win・Linuxサーバーを乱立する必要があり、MacBookAirでもスペックがきびしい。

いろいろな仮想化問題も考えないといけないため、今回はVDIファイルをBootcampの使ってMac/Winをどちらのプラットフォームでも利用可能にしてしまえばLinuxサーバーを仮想化するだけで済む。

よしこれだ。

BootcampでMac/Winに分割して、これをParallelsDesktop6を使ってMacからBootcamp内のWindowsを起動して利用することも考えたが動作が異常できびしいと判断。

しかたなくMac/Win環境は切り替えて利用しVirtualBoxでLinux仮想サーバーを構築する際に、USBメモリ内に構築を行う。

こうすればBootcamp切り替えでも利用することができる。

ここで考えなければいけないのが、仮想ディスクをUSBメモリに配置する場合にFAT32では4GBの壁を越えることができない。そのためVirtualBoxで固定サイズディスクイメージにすると、4GBを超えた時点でコピーできなくなる。

可変長で利用してみたところLinuxでは異常に大変であることがわかった。

CentOS 5.6-64bit 可変長:4GB/実サイズ2.7GBで構築 =>運用1週間で空き容量0になる。

これを拡張するために、Gpartedを使ってみた。

残念・・・GPartedはVolumeGroupには対応していない・・Orz

そこで、大きいサイズの新仮想ディスク8GBで作成し、下記のように既存の4GBで構成したシステムを8GBに移し返してみた。

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

// VirtualBoxインストールフォルダーに移動
C:\Users\mynane>cd c:\Program Files\Oracle\VirtualBox

// VirtualBoxイメージを複製する
C:\Users\mynane>VBoxManage clonehd [旧仮想ディスク].vdi [上記で作成した新仮想ディスク].vdi --existing

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

Clone hard disk created in format 'VDI'. UUID: d12672e3-e555-4f6c-8867-636f163ae816

※ VirtualboxのイメージファイルはUUIDで管理されているんため、複製しても利用できない。そのためコマンドを使うが、下記の通りである。
・新たにイメージを複製

VBoxManage clonehd [旧仮想ディスク].vdi [上記で作成した新仮想ディスク].vdi

・別のイメージに複製(たとえば容量を増やす場合はこっち)

VBoxManage clonehd [旧仮想ディスク].vdi [上記で作成した新仮想ディスク].vdi --existing

これで構築したVDIを複製できるので、USBメモリの中にこれをコピーする。

しかし!これでも空きが0・・・Orz・・・理由はハードディスクが拡大されても、VolumeGroupは大きくなったわけではない。

仮想の中のファイルシステムパーティションを拡張しなければいけない。Windows等はGpartedを利用すると便利だが、Linux等で利用されているLVMボリュームには対応していないので、下記のように行う。

Linux上のVolumeGroupを拡張する

1. 現在の状態の確認

# /sbin/fdisk /dev/sda
このディスクのシリンダ数は 5221 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
   (例. DOS FDISK, OS/2 FDISK)

コマンド (m でヘルプ): m
コマンドの動作
   a   ブート可能フラグをつける
   b   bsd ディスクラベルを編集する
   c   dos 互換フラグをつける
   d   領域を削除する
   l   既知の領域タイプをリスト表示する
   m   このメニューを表示する
   n   新たに領域を作成する
   o   新たに空の DOS 領域テーブルを作成する
   p   領域テーブルを表示する
   q   変更を保存せずに終了する
   s   空の Sun ディスクラベルを作成する
   t   領域のシステム ID を変更する
   u   表示/項目ユニットを変更する
   v   領域テーブルを照合する
   w   テーブルをディスクに書き込み、終了する
   x   特別な機能 (エキスパート専用)

コマンド (m でヘルプ): p

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2610    20860402+  8e  Linux LVM

2. /dev/sda3 を作る

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 3
最初 シリンダ (2611-5221, default 2611):
Using default value 2611
終点 シリンダ または +サイズ または +サイズM または +サイズK (2611-5221, default 5221):
Using default value 5221

3. /dev/sda3 の確認

コマンド (m でヘルプ): p

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2610    20860402+  8e  Linux LVM
/dev/sda3            2611        5221    20972857+  83  Linux

4. /dev/sda3 のパーティションタイプを 8e (Linux LVM) に変更する

コマンド (m でヘルプ): t
領域番号 (1-4): 3
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました

コマンド (m でヘルプ): p

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2610    20860402+  8e  Linux LVM
/dev/sda3            2611        5221    20972857+  8e  Linux LVM

5. 変更内容を書き込む

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。

警告: 領域テーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。
新しいテーブルは次回リブート時に使えるようになるでしょう。
ディスクを同期させます。

6.再起動する

# shutdown -r now

7.PV (Physical Volume) の作成

# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created

8.作成した PV を VG (Volume Group) に参加させるためPV確認

# vgdisplay -v
 --- Volume group ---
 VG Name               VolGroup00
 System ID
 Format                lvm2

 (中略)

 --- Logical volume ---
 LV Name                /dev/VolGroup00/LogVol00
 VG Name                VolGroup00  

 (中略)

 --- Logical volume ---
 LV Name                /dev/VolGroup00/LogVol01
 VG Name                VolGroup00 

 (中略)

 --- Physical volumes ---
 PV Name               /dev/sda2
 PV UUID               JjcZe9-l3Ss-8B5H-mPc9-R76G-XRti-DzOZu3
 PV Status             allocatable
 Total PE / Free PE    636 / 0

9.VolGroup00 に /dev/sda3 を追加

vgextend VolGroup00 /dev/sda3
Volume group "VolGroup00" successfully extended

10.結果確認

# vgdisplay -v 

 (中略)

 --- Physical volumes ---
 PV Name               /dev/sda2
 PV UUID               JjcZe9-l3Ss-8B5H-mPc9-R76G-XRti-DzOZu3
 PV Status             allocatable
 Total PE / Free PE    636 / 0

 PV Name               /dev/sda3
 PV UUID               bGR4XI-Nz0Q-XceM-dBor-3XYs-UVJR-tgspv4
 PV Status             allocatable
 Total PE / Free PE    640 / 640 ←これを記録

11./dev/VolGroup00/LogVol00 に VolGroup00 で未割り当ての 640 PE を追加する

#lvextend -l +640 /dev/VolGroup00/LogVol00
 Extending logical volume LogVol00 to 37.91 GB
 Logical volume LogVol00 successfully resized

12./dev/VolGroup00/LogVol00 のファイルシステム (ext3) の容量を拡張する †

# resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 9936896 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 9936896 blocks long.

これで拡大完了!ちなみに上記の例は

「CentOS LVMの拡張(VMWare仮想ディスクの拡張)」を参考にさせていただきました。

これほど面倒くさいので、できるだけ固定で必要最低限足りると思う容量で構築するのがベストでしょう。

USBメモリ内での運用など今までなら完全否定で危険しかないと思われたものなので

いまさらUSBメモリの危険性を指摘いただいても困る。

十分わかっているつもりである。

そのうえで私は人柱になり、安全許容範囲を模索するつもりである。

かくして、機材を購入して運用を開始した。

これは実務と並行するため、記事の更新は二の次にさせていただきます。

コメントなし :, , , , , , , more...



何かお探しですか?

以下にキーワードを入力してサイト内検索が可能です:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!