2013年1月27日日曜日

ファイルシステムの話 (その2)

今回は、前回の
ファイルシステムの話 (その1)
に続き、クラスタファイルシステムの話です。

通常のファイルシステムについて

まず、クラスタ対応していない、通常のファイルシステム
(とりあえず、ローカルファイルシステムと呼んだりしています)についてです。
※ローカルファイルシステムという呼び方は微妙かもしれません…

一般的に、Linuxでは ext3、ext2 などのファイルシステムが使用されています。
OSがこれらの仕組み(ファイルシステム)でファイルを管理するとき、
複数のアプリケーション(プロセス)が同時にファイルを更新しないように働いています。

ただし、これは1つのOSが、1つのファイルシステムでファイルを管理している場合の話です。



クラスタ対応していないローカルファイルシステムの場合は、
それぞれのOSが、他のOSのファイル管理操作を意識できません。
そのOS自身の中での(それぞれのOSからの)ファイル操作の整合性はとれますが
それぞれのOSが勝手にファイル操作をしてしまうため、
結果的に共有ディスクのデータは、整合性がない状態になってしまいます。

そのため、基本的にローカルファイルシステムを使用しているときに、
複数OSで同時に同じファイルシステムに書き込むことはNGです。



このような場合、
共有したディスク上のファイルを書き込むためには
サーバ(OS)のクラスタ環境に対応したファイルシステムとして
クラスタファイルシステムや、NFSを使用します。


クラスタファイルシステムについて

OVSで利用するクラスタファイルシステムは
OCFS2(Oracle Cluster File System version 2)です。
これは汎用的なクラスタファイルシステムなので、
OVS以外(たとえば、RACの共有ディスクなど)でも使用できます。
「Oracle」という名前がついていますが、Oracleのデータベースファイルだけでなく
一般的なファイル(バイナリファイルや、ログファイルなど)も格納することが可能で、
OVSで使用する場合は、VMの設定ファイルや、仮想ディスクイメージファイル等を
OCFS2の領域に格納します。

OCFS2は、複数のOSからのデータ書き込みに対して整合性を確保するため、
独自のクラスタウェア(o2cb)を使用します。
共有ディスクを利用するOSそれぞれで o2cb のプロセスが起動して
お互いが確認し合ってデータの整合性を確保するわけです。



以上、クラスタファイルシステムの話でした。

2013年1月26日土曜日

ファイルシステムの話 (その1)

今回は、ファイルシステムについての話です。

OVSではクラスタファイルシステム(OCFS2)を利用することが多いと思いますが、
OCFS2の前にローカルファイルシステムについて考えてみます。

OSでディスクにファイルを保存するためには、
ファイルシステムという仕組みを使用します。

ファイルシステムを作成するためには、一般的に下記の手順を踏みます。
※LVMの話は、ひとまずおいておきます。
  1. まず、OSにディスクを認識させる。
  2. 認識させたディスクに、パーティションを作成する。
  3. パーティションにファイルシステムを作成する。
    (ディスク上に、ファイルを管理する仕組みを作る。)
  4. ファイルシステムをディレクトリ(マウントポイント)にマウントする。



作成したファイルシステムは、マウントして使用しますが
通常のローカルファイルシステム(クラスタ対応していないファイルシステム)を使用している場合、
OSは自分だけがファイル管理をする前提で動作します。
ファイルを管理する仕組みも、そのOS自身のメモリ上で処理されます。



そのため、
複数のサーバが同一のファイルシステム(ディスク領域)をマウントして
それぞれでデータ書き込みをしたりすると、不整合が発生してしまいます。

たとえば下図のような状態だと、
OS1とOS2がそれぞれ別にファイル管理をしてしまうため
OS1の更新がOS2で認識できなかったり、
OS2の更新がOS2で認識できなかったりします。


複数のOSから同じディスク領域をマウントして
ファイル操作(書き込みなど)をしたい場合は、
不整合を発生させないために、クラスタ環境対応しているファイルシステム
(たとえばOCFS2やNFSなど)を使用する必要があります。

以上、OCFS2への導入として、ローカルファイルシステムの話でした。

2013年1月24日木曜日

OCFS2:クラスタファイルシステム環境構築

以前のエントリの続きです。

前回のエントリ

OVS on VirtualBox 環境に共有ディスクを割り当てたので、
今回はその領域にクラスタファイルシステムを作成してみます。

1. ノード1側のOVSでのディスク認識を確認

共有ディスクが、/dev/sdb として認識されています。
[root@ovs001 ~]# fdisk -l

Disk /dev/sda: 12.8 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 405 3148740 83 Linux
/dev/sda3 406 1435 8273475 83 Linux
/dev/sda4 1436 1566 1052257+ 5 Extended
/dev/sda5 1436 1566 1052226 82 Linux swap / Solaris

Disk /dev/sdb: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn't contain a valid partition table
You have new mail in /var/spool/mail/root

2. ノード2側のOVSでのディスク認識を確認

こちらでも共有ディスクが /dev/sdb として認識されています。
[root@ovs002 ~]# fdisk -l

Disk /dev/sda: 12.8 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 405 3148740 83 Linux
/dev/sda3 406 1435 8273475 83 Linux
/dev/sda4 1436 1566 1052257+ 5 Extended
/dev/sda5 1436 1566 1052226 82 Linux swap / Solaris

Disk /dev/sdb: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn't contain a valid partition table

3. パーティションを作成

ノード1側のOVSで、
共有ディスク(/dev/sdb)にパーティション(/dev/sdb1)を作成します。
[root@ovs001 ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-522, default 1): ★エンター
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-522, default 522):★エンター
Using default value 522

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

fdiskコマンドでパーティション(/dev/sdb1)が表示されるようになりました。
[root@ovs001 ~]# fdisk -l

Disk /dev/sda: 12.8 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 405 3148740 83 Linux
/dev/sda3 406 1435 8273475 83 Linux
/dev/sda4 1436 1566 1052257+ 5 Extended
/dev/sda5 1436 1566 1052226 82 Linux swap / Solaris

Disk /dev/sdb: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 522 4192933+ 83 Linux

共有領域に対してパーティションを作成したので、
2台目OVS側でも、作成したパーティション(/dev/sdb1)が見えるようになります。
[root@ovs002 ~]# fdisk -l

Disk /dev/sda: 12.8 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 405 3148740 83 Linux
/dev/sda3 406 1435 8273475 83 Linux
/dev/sda4 1436 1566 1052257+ 5 Extended
/dev/sda5 1436 1566 1052226 82 Linux swap / Solaris

Disk /dev/sdb: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 522 4192933+ 83 Linux

4. クラスタファイルシステムの作成

ノード1側のOVSで、/dev/sdb1 パーティションに、ファイルシステムを作成します。
  • -t ocfs2 → ファイルシステムの種類は、OCFS2
  • -N 4 →このファイルシステムに接続するノード数(少し多めの4台にした)
  • -L /OVS → ファイルシステムのラベル。(マウントポイントと合わせておいた)

[root@ovs001 ~]# mkfs -t ocfs2 -N 4 -L /OVS /dev/sdb1
mkfs.ocfs2 1.4.3
Cluster stack: classic o2cb
Filesystem label=/OVS
Block size=4096 (bits=12)
Cluster size=4096 (bits=12)
Volume size=4293562368 (1048233 clusters) (1048233 blocks)
33 cluster groups (tail covers 16041 clusters, rest cover 32256 clusters)
Journal size=67108864
Initial number of node slots: 4
Creating bitmaps: done
Initializing superblock: done
Writing system files: done
Writing superblock: done
Writing backup superblock: 1 block(s)
Formatting Journals: done
Formatting slot map: done
Writing lost+found: done
mkfs.ocfs2 successful

ノード1側で確認
ファイルシステムを作成すると、
blkid コマンドでファイルシステムのUUIDを見られるようになります。
[root@ovs001 ~]# blkid
/dev/sda5: LABEL="92bd3ba0a8ea" TYPE="swap"
/dev/sda3: LABEL="" UUID="5ec25b24-cb6f-4681-a59e-ede39840b5af" TYPE="ocfs2"
/dev/sda2: LABEL="/" UUID="562b8305-61ec-4673-8433-0edccf75d609" TYPE="ext3"
/dev/sda1: LABEL="/boot" UUID="cddae22e-6f94-4e59-882c-1d0dfa3c099d" TYPE="ext3"
/dev/sdb1: LABEL="/OVS" UUID="b5c473c6-b650-473e-b196-f4a2af104868" TYPE="ocfs2"


ノード2側で確認
ノード2側では、まず partprobe コマンドを実行して
OSにディスクパーティションテーブルの情報を再読み込みさせておきます。

blkid コマンドを実行してみると、
/dev/sdb1(ラベルは"/OVS")のUUIDがノード1側と同じものになっていて
同一のデバイスを共有していることがわかります。
[root@ovs002 ~]# partprobe /dev/sdb
[root@ovs002 ~]# blkid
/dev/sda5: LABEL="f678b4e7110e" TYPE="swap"
/dev/sda3: LABEL="" UUID="bebfa05e-5ba3-4e02-bf5a-164edaf9b0a4" TYPE="ocfs2"
/dev/sda2: LABEL="/" UUID="60a03a37-f574-4376-9233-8716a014dca5" TYPE="ext3"
/dev/sda1: LABEL="/boot" UUID="dfabb15a-a290-43f4-b8d8-c8fb76433546" TYPE="ext3"
/dev/sdb1: LABEL="/OVS" UUID="af59f99b-9163-49a3-b474-5f9948b57b7d" TYPE="ocfs2"

5. 既存の/OVSをアンマウント

現時点では、ノード1、ノード2 それぞれでことなるデバイスを/OVSにマウントしています。
そのため、両ノードで既存の /OVS をアンマウントしたうえで、
新規作成した /dev/sdb1 のクラスタファイルシステムをマウントします。

既存の/OVSをマウントしている状態
★ノード1
[root@ovs001 ~]# ls -ld /OVS
lrwxrwxrwx 1 root root 47 Jan 20 06:22 /OVS -> /var/ovs/mount/8FA1F11000F145DA8A8272436BCD02C2
[root@ovs001 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 3.0G 847M 2.0G 30% /
/dev/sda1 99M 46M 49M 49% /boot
tmpfs 257M 0 257M 0% /dev/shm
none 256M 40K 256M 1% /var/lib/xenstored
/dev/sda3 7.9G 264M 7.7G 4% /var/ovs/mount/8FA1F11000F145DA8A8272436BCD02C2
[root@ovs001 ~]# blkid /dev/sda3
/dev/sda3: LABEL="" UUID="b33cf2ad-5021-4321-8faf-52e5b19c5e27" TYPE="ocfs2"

★ノード2
[root@ovs002 ~]# ls -ld /OVS
lrwxrwxrwx 1 root root 47 Jan 20 06:35 /OVS -> /var/ovs/mount/4EA14718C32B4D7784F3161A75953439
[root@ovs002 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 3.0G 847M 2.0G 30% /
/dev/sda1 99M 46M 49M 49% /boot
tmpfs 257M 0 257M 0% /dev/shm
none 256M 40K 256M 1% /var/lib/xenstored
/dev/sda3 7.9G 264M 7.7G 4% /var/ovs/mount/4EA14718C32B4D7784F3161A75953439
[root@ovs002 ~]# blkid /dev/sda3
/dev/sda3: LABEL="" UUID="bebfa05e-5ba3-4e02-bf5a-164edaf9b0a4" TYPE="ocfs2"
それぞれのサーバで/OVSをアンマウントします。
ノード1側でアンマウント
[root@ovs001 ~]# umount /OVS

ノード2側でもアンマウント
[root@ovs002 ~]# umount /OVS

このあと、共有ディスクを/OVSにマウントします。
ただし、このままではマウントできません。
OCFS2で共有ディスクを制御するための専用のクラスタウェアを使用します。
[root@ovs001 ~]# mount -t ocfs2 /dev/sdb1 /OVS
mount.ocfs2: Unable to access cluster service while trying initialize cluster

6. OCFS2のクラスタ設定ファイル作成

OCFS2でディスクを共有するため、クラスタの設定ファイルを作成します。
ディスクを共有したいサーバを、OCFS2独自のクラスタに所属させる設定をします。

  • クラスタの名前: ovscluster
  • クラスタのノード数: 2
  • クラスタに参加するノード: ovs001 と ovs02
  • OCFS2用クラスタの通信で使用するIPアドレスは192.168.10.x を指定。(これは、共有ディスクをマウントするネットワークセグメントとは別でもよい)

[root@ovs001 ~]# mkdir /etc/ocfs2
[root@ovs001 ~]# vi /etc/ocfs2/cluster.conf

【ファイルの内容】
node:
  ip_port = 7777
  ip_address = 192.168.10.101
  number = 0
  name = ovs001
  cluster = ovscluster

node:
  ip_port = 7777
  ip_address = 192.168.10.102
  number = 1
  name = ovs002
  cluster = ovscluster

cluster:
  node_count = 2
  name = ovscluster

7. O2CBの設定と起動

OCFS2のクラスタウェアは、O2CBという名前です。
下記のように「/etc/init.d/o2cb configure」コマンドで、
O2CBの設定変更とその内容の読み込みができます。
設定した内容は、/etc/sysconfig/o2cb ファイルに反映されます。

[root@ovs001 ~]# /etc/init.d/o2cb configure
Configuring the O2CB driver.

This will configure the on-boot properties of the O2CB driver.
The following questions will determine whether the driver is loaded on
boot. The current values will be shown in brackets ('[]'). Hitting
without typing an answer will keep that current value. Ctrl-C
will abort.

Load O2CB driver on boot (y/n) [n]: y
Cluster stack backing O2CB [o2cb]: ★Enterキー
Cluster to start on boot (Enter "none" to clear) [ocfs2]: ovscluster
Specify heartbeat dead threshold (>=7) [31]:★Enterキー
Specify network idle timeout in ms (>=5000) [30000]:★Enterキー
Specify network keepalive delay in ms (>=1000) [2000]:★Enterキー
Specify network reconnect delay in ms (>=2000) [2000]:★Enterキー
Writing O2CB configuration: OK
Mounting configfs filesystem at /sys/kernel/config: OK
Loading filesystem "ocfs2_dlmfs": OK
Creating directory '/dlm': OK
Mounting ocfs2_dlmfs filesystem at /dlm: OK
Starting O2CB cluster ovscluster: OK
8. 共有ディスクのマウント

ノード1で、共有ディスクをマウントします。
マウント後に「mounted.ocfs2 -f」コマンドで
/dev/sdb1 のocfs2ファイルシステムが ovs001サーバ からマウントされていることが確認できます。
[root@ovs001 ~]# mount -t ocfs2 /dev/sdb1 /OVS
[root@ovs001 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 3.0G 848M 2.0G 30% /
/dev/sda1 99M 46M 49M 49% /boot
tmpfs 257M 0 257M 0% /dev/shm
none 256M 40K 256M 1% /var/lib/xenstored
/dev/sdb1 4.0G 270M 3.8G 7% /var/ovs/mount/8FA1F11000F145DA8A8272436BCD02C2

[root@ovs001 ~]# mounted.ocfs2 -f /dev/sdb1
Device FS Nodes
/dev/sdb1 ocfs2 ovs001

9. ノード2側でも同様にOCFS2環境を設定して、共有ディスクをマウント

ノード2側でOCFS2の設定ファイルを作成します。
※ノード1側と同じ設定をします。
[root@ovs002 ~]# mkdir /etc/ocfs2
[root@ovs002 ~]# vi /etc/ocfs2/cluster.conf
[root@ovs002 ~]# cat /etc/ocfs2/cluster.conf
node:
  ip_port = 7777
  ip_address = 192.168.10.101
  number = 0
  name = ovs001
  cluster = ovscluster

node:
  ip_port = 7777
  ip_address = 192.168.10.102
  number = 1
  name = ovs002
  cluster = ovscluster

cluster:
  node_count = 2
  name = ovscluster

ノード2側のO2CBを設定して起動します。
[root@ovs002 ~]# /etc/init.d/o2cb configure
Configuring the O2CB driver.

This will configure the on-boot properties of the O2CB driver.
The following questions will determine whether the driver is loaded on
boot. The current values will be shown in brackets ('[]'). Hitting
without typing an answer will keep that current value. Ctrl-C
will abort.

Load O2CB driver on boot (y/n) [n]: y
Cluster stack backing O2CB [o2cb]:
Cluster to start on boot (Enter "none" to clear) [ocfs2]: ovscluster
Specify heartbeat dead threshold (>=7) [31]:
Specify network idle timeout in ms (>=5000) [30000]:
Specify network keepalive delay in ms (>=1000) [2000]:
Specify network reconnect delay in ms (>=2000) [2000]:
Writing O2CB configuration: OK
Mounting configfs filesystem at /sys/kernel/config: OK
Loading filesystem "ocfs2_dlmfs": OK
Creating directory '/dlm': OK
Mounting ocfs2_dlmfs filesystem at /dlm: OK
Starting O2CB cluster ovscluster: OK

ノード2でも、共有ディスクをマウントします。
マウント後に「mounted.ocfs2 -f」コマンドで
/dev/sdb1 のocfs2ファイルシステムが2台のサーバ(ovs001とovs002)から
マウントされていることが確認できます。
[root@ovs002 ~]# mount -t ocfs2 /dev/sdb1 /OVS
[root@ovs002 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 3.0G 847M 2.0G 30% /
/dev/sda1 99M 46M 49M 49% /boot
tmpfs 257M 0 257M 0% /dev/shm
none 256M 40K 256M 1% /var/lib/xenstored
/dev/sdb1 4.0G 270M 3.8G 7% /var/ovs/mount/4EA14718C32B4D7784F3161A75953439

[root@ovs002 ~]# mounted.ocfs2 -f /dev/sdb1
Device FS Nodes
/dev/sdb1 ocfs2 ovs001, ovs002

以上、OCFS2の環境構築でした。

2013年1月20日日曜日

VirtualBoxで共有ディスク(失敗例)

前回のエントリで、VirtualBoxの仮想ディスク(仮想ハードドライブ)の共有をしてみました。
今回は、
仮想ハードドライブの共有設定をしなかった場合にどうなるか試してみました。


メディアマネージャで仮想ハードドライブの共有を有効にしなかった場合

→そもそも、下記のエラーがでてVirtualBoxでVMが起動できませんでした。
仮想マシン"ovs002"のセッションを開けませんでした。
No error info.
終了コード : VBOX_E_INVALID_OBJECT_STATE (0x80BB0007)
コンポーネント: ProgressProxy
インターフェース: IProgress {c20238e4-3221-4d3f-8891-81ce92d9f913}



メディアマネージャで「共有可能」の設定をする場合は、
仮想ハードドライブが1台以下のVMからしか接続されていない状態にします。
2台以上が接続した状態で設定を変更しようとすると、下記のようなエラーが出ます。
メディアタイプを通常 から 共有可能 にする際にエラーが発生しました。
Cannot change the type of medium 'C:\Users\go\VirtualBox VMs\OVS-on-vBox\ovs001\disk2-newovs.vdi' because it is attached to 2 virtual machines.
終了コード : VBOX_E_INVALID_OBJECT_STATE (0x80BB0007)
コンポーネント: Medium
インターフェース: IMedium {29989373-b111-4654-8493-2e1176cba890}



仮想ハードドライブを「固定サイズ」で作成しなかった場合

→そもそも、下記のエラーがでて
VirtualBoxのメディアマネージャで「共有可能」が設定できませんでした。
メディアタイプを通常 から 共有可能 にする際にエラーが発生しました。
Cannot change type for medium 'C:\Users\go\VirtualBox VMs\OVS-on-vBox\ovs002\test-disk1.vdi' to 'Shareable' since it is a dynamic medium storage unit.
終了コード : VBOX_E_INVALID_OBJECT_STATE (0x80BB0007)
コンポーネント: Medium
インターフェース: IMedium {29989373-b111-4654-8493-2e1176cba890}



この場合は、
  • 「可変サイズ」で作成してしまったディスクを「固定サイズ」でコピーする
    • 対象の仮想ハードドライブを右クリック→コピーを選択して、
      「固定サイズ」のものをもう一つ作成する。
    • (コピーした仮想ハードドライブはメディアマネージャに登録されないので)
      VMにコピーした仮想ハードドライブを割り当てて、メディアマネージャに登録する。
  • 新規で、固定サイズの仮想ハードドライブを作成してVMに割り当てる。
のどちらかで共有可能の設定をできるようにします。


以上、VirtualBox でのディスク共有の失敗例でした。

2013年1月16日水曜日

VirtualBoxで共有ディスク

ちょっとLive Migrationができる環境を作りたいと思い
VirtualBox上にインストールした Oracle VM Server 2台に、
共有ディスクを割り当ててみました。
一部、画面をはしょって、空気だけお伝えします。

ポイントは、
  • 仮想ディスク(仮想ハードドライブ)のファイルは容量固定で作成する。
  • 仮想ハードドライブは、メディアマネージャで共有設定をする。
です。


手順1. 1台目のVMへのディスク割り当て(新規作成)

まず、1台目のVMでは、仮想ディスクを新規作成します。
仮想ディスクは、VirutalBoxでは仮想ハードドライブと呼びます。

最初に、VMに仮想的なストレージコントローラを追加します。
そのうえで、コントローラに仮想ハードドライブを追加します。


仮想ディスクのファイル形式は、「VDI」を選択しました。
他にも、VMwareで一般的なVMDK形式や、MicrosoftのVHD形式、
KVMでよく使われるQCOWなど、いろいろ選べます。



新規の仮想ディスク(仮想ハードドライブ)を「固定サイズ」 で作成します。


ファイル名には、自動的に拡張子が付けられます。
VDI形式なら、「.vdi」がファイル名の末尾に追加されます。

ディスク容量は、VMのディスクイメージを載せられる程度必要です。
(今回は4GBだけです)


1台目のVMは、このような設定になります。



手順2. VirtualBoxメディアマネージャでのディスク共有設定

ここまでで作成した仮想ハードドライブを、共有可能に設定します。
これはVM毎の設定画面ではなく、メディアマネージャにて実施します。

[ファイル] → [仮想メディアマネージャー] を開きます。


作成した仮想ハードドライブを右クリックして「変更」します。


メディア属性を変更する画面で、「共有可能」にします。



手順3. 2台目のVMへのディスク割り当て(既存ディスクの割り当て)

1台目のVMと同様に、2台目のVMに
仮想ストレージアダプタと、共有設定した仮想ハードドライブを割り当てます。

新規作成はせずに、「既存のディスクを選択」します。


ここまでで作成した仮想ハードドライブのファイルを選択します。
仮想ハードドライブのファイル(.vdi ファイル)は、
1台目のVM が格納されるフォルダに作成されています。


この方法で割り当てることで、
複数のVMで、仮想ハードドライブを共有ディスクにすることができます。


以上、VirualBoxで共有ディスクを割り当ててみる話でした。

2013年1月15日火曜日

OVMS をKickstart (7回目)

今回は、Oracle VM Server (OVMS)の Kickstart ファイルに記載する
root ユーザのパスワードを暗号化(というかハッシュ化) します。
メジャーなパスワード文字列の生成方法は、下記の2つのようです。
  • openssl コマンドで生成。
  • 既存環境の /etc/shadow にある文字列をそのまま使う。
ためしに、openssl でパスワード生成をしてみます。

前回はこちら。

2013年1月13日日曜日

OVSのMACアドレスについて

今回は、Orale VM Serverの使用する
MACアドレスについての話です。

MACアドレスについて

NICには、ネットワークポートごとにMACアドレスが割り当てられています。
物理サーバの場合は、サーバをネットワーク接続するために
IPアドレスは必ず変更するはずですが、
MACアドレスはNIC固有の(NICに焼き付けられている)ものであるため
変更することはあまりないと思います。

MACアドレスは、
XX:XX:XX:YY:YY:YY
といった形式となっています。

このうち、前半の6文字(XX:XX:XX)の部分は
NICの製造ベンダーを表す OUI(Organizationally Unique Identifier)を表します。
どのベンダーのものかは、
MACアドレスを管理しているIEEEのWebサイトで検索できます。
IEEEのサイトはこちら
http://standards.ieee.org/develop/regauth/oui/public.html

OVSのMACアドレスについて

Oracle VM ServerのVMの仮想NICにもMACアドレスが割り当てられますが、
物理サーバとは違い、VMの設定ファイル(vm.cfg)に指定しておかないと
VMを起動するたびに自動再生成されます。

このとき、OVSのVMで自走生成されるMACアドレスは
00:16:3E:YY:YY:YY
といったアドレスになります。

この 00:16:3E:~ のアドレスをIEEEのサイトで確認すると、
「Xensource, Inc.」として登録されていました。
Oracle VM Serverが、Xen ハイパーバイザを使用しているため、
MACアドレスもXen由来のものになるようです。

OVSで仮想NICのMACアドレスを手動で設定することがありますが、
MACアドレスを手動で設定(vm.cfgに書いたり)する場合は
00:16:3E:~のアドレスから適宜番号を選んで払い出します。

以上、OVSのMACアドレスの話でした。