VMDKファイルを使用した共有ディスクの設定方法を説明します。VMware製品で共有ディスクを使用したクラスタリングなどの動作確認をするためには、0埋めした(Eager Zeroed)シックディスクを作成し、「マルチライター」を設定するなどの幾つかの制約事項があります。
事前準備
以下スクリーンショットのような構成で、centos50とcentos51の間で共有ディスクを作成する方法を考えます。
仮想マシンの設定
1台目の設定
「1台目の仮想マシン」の右クリックメニューで、「設定の編集」を選びます。
「新規デバイスの追加」で「SCSIコントローラー」を選びます。
SCSIパスの共有は「物理」を選びます。
SCSIパスの共有の設定の意味は「SCSI コントローラ設定の変更」を参照ください。
「新規デバイスの追加」で「ハードディスク」を選びます。
「ディスクプロビジョニング」を「シックプロビジョニング(Lazy Zeroed)」から「シックプロビジョニング(Eager Zeroed)」に変更します。ディスク共有するためには、ゼロ埋めしたディスクが必須です。
「共有」を「マルチライター」に変更します。これを変更しないと、クラスタを組む2台の仮想マシンを同時に起動できません。
「ディスクモード」は「独立型:通常」を選びます。
「仮想デバイスノード」は前述の操作で作成したSCSIコントローラーを指定します。
2台目の設定
「2台目の仮想マシン」の右クリックメニューで、「設定の編集」を選びます。
「新規デバイスの追加」で「SCSIコントローラー」を選びます。
SCSIパスの共有は「物理」を選びます。
SCSIパスの共有の設定の意味は「SCSI コントローラ設定の変更」を参照ください。
「新規デバイスの追加」で「既存のハードディスク」を選びます。
1台目で追加したディスクのVMDKファイルを選びます。
「共有」を「マルチライター」に変更し、「ディスクモード」を「独立型:通常」に変更します。「仮想デバイスノード」は前述の操作で作成したSCSIコントローラーを指定します。
動作確認
仮想マシンの起動
前述の手順で設定したcentos50, centos51を起動します。「マルチライター」などの設定に誤りがあると、ここでの起動操作に失敗します。
1台目ディスクのマウント操作
1台目の仮想マシンにてディスクを認識している事を確認します。
[root@centos50 ~]# fdisk -l ディスク /dev/sda: 50 GiB, 53687091200 バイト, 104857600 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: gpt ディスク識別子: 83F90A99-041C-415E-8DBA-595D6C1E0B2A デバイス 開始位置 終了位置 セクタ サイズ タイプ /dev/sda1 2048 1230847 1228800 600M EFI システム /dev/sda2 1230848 3327999 2097152 1G Linux ファイルシステム /dev/sda3 3328000 4376575 1048576 512M Linux スワップ /dev/sda4 4376576 104855551 100478976 47.9G Linux ファイルシステム ディスク /dev/sdb: 5 GiB, 5368709120 バイト, 10485760 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクを何らかのファイルシステムでフォーマットし、これを適当なディレクトリにマウントします。
ext4やxfsは複数のOSから同時にアクセスされる事を想定したファイルシステムではありません。説明を簡易にするためにext4やxfsを紹介しましたが、もっともらしい検証シナリオをするならばMSFCやOracle RACに挑戦するのが良いでしょう。
[root@centos50 ~]# mkfs -t ext4 /dev/sdb mke2fs 1.45.4 (23-Sep-2019) Creating filesystem with 1310720 4k blocks and 327680 inodes Filesystem UUID: 2215234f-1fc7-4a77-a09c-dfd2a4a235c7 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done [root@centos50 ~]# mkdir /share [root@centos50 ~]# mount /dev/sdb /share [root@centos50 ~]#
何か適当なファイルを作成します。
[root@centos50 ~]# echo "centos50 : this is test" >> /share/test50.txt [root@centos50 ~]# cat /share/test50.txt centos50 : this is test [root@centos50 ~]# [root@centos50 ~]# ls -l /share/ 合計 20 drwx------ 2 root root 16384 4月 22 23:34 lost+found -rw-r--r-- 1 root root 24 4月 22 23:34 test50.txt [root@centos50 ~]#
ここで電源断障害を再現するために、centosのパワーオフをします。
2台目ディスクのマウント操作
2台目の仮想マシンにてディスクを認識している事を確認します。
[root@centos51 ~]# fdisk -l ディスク /dev/sdb: 5 GiB, 5368709120 バイト, 10485760 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスク /dev/sda: 50 GiB, 53687091200 バイト, 104857600 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: gpt ディスク識別子: 83F90A99-041C-415E-8DBA-595D6C1E0B2A デバイス 開始位置 終了位置 セクタ サイズ タイプ /dev/sda1 2048 1230847 1228800 600M EFI システム /dev/sda2 1230848 3327999 2097152 1G Linux ファイルシステム /dev/sda3 3328000 4376575 1048576 512M Linux スワップ /dev/sda4 4376576 104855551 100478976 47.9G Linux ファイルシステム
これを適当なディレクトリにマウントします。
1台目でフォーマット操作済みのため、2台目ではフォーマットしない。
[root@centos51 ~]# mkdir /share [root@centos51 ~]# mount /dev/sdb /share [root@centos51 ~]#
centos50で作成したファイルが見える事を確認します。
ここで、centos50.txtが0byteになっていますが、これはext4が複数のOSからアクセスされる事を想定したファイルシステムではないためです。もっともらしい検証シナリオをするならばMSFCやOracle RACに挑戦するのが良いでしょう。
[root@centos51 ~]# ls -l /share/ 合計 16 drwx------ 2 root root 16384 4月 22 23:34 lost+found -rw-r--r-- 1 root root 0 4月 22 23:34 test50.txt [root@centos51 ~]#