【VirtualBox】PostgreSQLの同期レプリケーション環境を構築するために、Windows上にCentOS7の仮想マシンを構築してみた（メモ）

# はじめに
本記事は、Windows7上に、VirtualBOX 5.2.22 をインストールし、CentOS7.6の仮想マシン2台を構築した際のメモです。
OSのインストールはたまにしか行わないので、気をつけた点を記録しておきます。

具体的な作業は以下のとおり。

- VirtualBox 5.2.22のダウンロードとインストール　
- CentOS7.6のisoファイルのダウンロード
- 仮想マシンの作成、CentOS7.6のインストール
- 仮想マシンの複製（クローン）
- ネットワークの設定
- Guest Additionsのインストール

それでは、スタート！
# VirtualBoxのダウンロードとインストール
VirtualBoxのダウンロードは以下のサイトから行います。
https://www.oracle.com/technetwork/server-storage/virtualbox/downloads/
Windowsにインストールするので、「Windowsの64bit」のセルからファイルをダウンロードします。

ダウンロードした「VirtualBox-5.2.22-126460-Win.exe」をダブルクリックして実行すれば、インストールを開始できます。

# CentOS7.6のisoファイルのダウンロード
CentOS7.6のisoファイルのダウンロードは、以下のサイトから行います。
https://www.centos.org/download/
サイト上の「DVD ISO」ボタンを押して、リンク先を選択してダウンロードするだけです。

# 仮想マシンの作成、CentOS7.6のインストール
VirtualBoxを起動して、最初に実施するのは仮想マシンの作成です。
## 仮想マシンの新規作成
「新規」ボタンを押すと「仮想マシンの作成」の画面になるので、「名前」と「タイプ」、「バージョン」を選択します。
CentOSをインストールするときは、タイプを「Linux」に、バージョンを「Other Linux (64-bit)」で選択します。
![vb_001.jpg](https://qiita-image-store.s3.amazonaws.com/0/318431/c1e9a3a0-24dd-49c0-3ad4-0981ecb20f28.jpeg)
## ディスクサイズは少し大きめにするほうがあとで楽になれる
ディスクサイズのデフォルトが8GBとなっているのですが、OSだけでも4GBは使用しますし、SWAP領域やバックアップ領域を考慮すると最低でも20GB、できれば30GBくらいあるといいかなと思います。
（用途はあくまで、個人のPC上に作成する、動作確認用の仮想マシンです）

メモリサイズは後でも変更できるので、最初は少し大きめに取っておくとインストールが速くなるかも。ですが、2048MB程度でも問題ありません。
## CentOS7.6のisoファイルをマウントして、仮想マシンを起動する
仮想マシンを作成したら、「設定」⇒「ストレージ」を開き、CentOS7.6のisoファイルをマウントします。
これをやることで、仮想マシンを起動した際に、CentOS7.6のインストールが開始します。
![vb_002.jpg](https://qiita-image-store.s3.amazonaws.com/0/318431/7196e203-f1cb-8b19-a1c2-4cf8ade504b5.jpeg)
CentOS7.6のisoファイルをマウントして起動すると、以下の画面になります。
あとは、インストールを進めていきます。
![vb_006.jpg](https://qiita-image-store.s3.amazonaws.com/0/318431/144ec730-8437-7bd0-98d0-673051a80c6f.jpeg)
## CentOS7.6のインストールは、ソフトウェアの選択に気をつける
CentOS7.6のインストール画面を進めて行くと、以下のような画面が出ます。「！」が出ているアイコンはしばらく待つと消えるのでチョット待ちます。
![vb_003.jpg](https://qiita-image-store.s3.amazonaws.com/0/318431/bc62c8bb-4af7-a30b-9180-039b485641e6.jpeg)
ソフトウェアの選択では、「ベース環境」と、「選択した環境のアドオン」を選択します。
今回は、デスクトップ画面が欲しかったので、ざっくりと以下のような選択をしました。
インストール完了後でも、isoイメージをマウントすれば追加でRPMをインストールできるので、とりあえずデスクトップ画面が表示できる環境が構築できれば問題ないかと思います。
![vb_004.jpg](https://qiita-image-store.s3.amazonaws.com/0/318431/cb164c9a-54e7-f274-7e15-d8c35bb9468f.jpeg)
## そして、インストールは完了する･･･
とりあえずお疲れ様でした。そしてここからが本番です。（＾＾
![vb_005.jpg](https://qiita-image-store.s3.amazonaws.com/0/318431/42e7d06e-bddb-f557-4b9e-44edfb87a5f1.jpeg)
# 仮想マシンの複製（クローン）
同期レプリケーション構成を作成するには、仮想マシンが2台必要。というわけで、作成した仮想マシンを複製します。
仮想マシンのクローンは起動中には行えません。いったん仮想マシンは停止してください。

仮想マシンを停止した後で、「仮想マシン」⇒「クローン」を選択し、新しい仮想マシン名を入力します。その次の画面では「全てをクローン」を選択します。これを選ぶことで、ファイルごとコピーされます。
![vb_007.jpg](https://qiita-image-store.s3.amazonaws.com/0/318431/efb4eb65-cec5-3c47-5ecd-0c820b73e9e7.jpeg)
# ネットワークの設定
クローンが完了したら、そのままネットワークの設定をします。
「設定」⇒「ネットワーク」で、「ホストオンリーアダプター」を選択してください。NATの場合の設定は自分で調べてね☆
![vb_008.jpg](https://qiita-image-store.s3.amazonaws.com/0/318431/a91fafd1-89f8-8ca0-81d5-4b00a5e6fd10.jpeg)
この設定を、2台の仮想マシンに対して行います。
この設定後、仮想マシンを起動します。

仮想マシンを起動し、ifconfigコマンドでネットワーク状態を見ても、まだIPアドレスは付与されていません。
以下のコマンドでIPアドレスを設定します。

```
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vi ifcfg-enp0s3
```
設定内容は以下のとおり。デフォルトから変えたのは、「BOOTPROTO=dhcp」「ONBOOT=no」と、追加で「IPADDR=192.168.56.10」としています。

```
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=d022c51a-7faf-4c1e-88eb-9a90580b2856
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.56.10
```
この設定を保存したら、ネットワークサービスを再起動します。

```
IPADDR=192.168.56.10
```
ifconfigコマンドで、IPアドレスが設定されたことを確認して、完了です。

```
[root@localhost network-scripts]# ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.10  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::401e:5c54:5914:f36  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:16:7e:98  txqueuelen 1000  (Ethernet)
        RX packets 425  bytes 164261 (160.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 159  bytes 34600 (33.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
```

# Guest Additionsのインストール
ここから先は蛇足なのですが、「クリップボードの共有」のための作業を行います。
簡単にいうと、Windows上と仮想マシン上で「コピペ」できるようにします。

※なお、この作業を行うためには、WinSCPなど、仮想マシンにRPMファイルを送るための手段のインストールが必要なので、これは別途行ってください。（＾＾；

## 必要なRPMをインストールする
まずは、仮想マシン上でCentOS7.6のisoファイルをマウントします。足りないRPMの1つがこの中にあります。
以下のコマンドでインストールします。

```
[root@localhost network-scripts]# cd /run/media/root/CentOS\ 7\ x86_64/Packages/
[root@localhost Packages]# rpm -ivh zlib-devel-1.2.7-18.el7.x86_64.rpm
警告: zlib-devel-1.2.7-18.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
準備しています...              ################################# [100%]
```

次に、以下のRPMファイルをダウンロードして、2台の仮想マシンに転送します。

- elfutils-libelf-devel-0.172-2.el7.x86_64.rpm
https://centos.pkgs.org/7/centos-x86_64/elfutils-libelf-devel-0.172-2.el7.x86_64.rpm.html

- dkms-2.6.1-1.el7.noarch.rpm
https://centos.pkgs.org/7/epel-x86_64/dkms-2.6.1-1.el7.noarch.rpm.html

以下のコマンドでインストールします。

```
[root@localhost ~]# rpm -ivh elfutils-libelf-devel-0.172-2.el7.x86_64.rpm dkms-2.6.1-1.el7.noarch.rpm
警告: elfutils-libelf-devel-0.172-2.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
警告: dkms-2.6.1-1.el7.noarch.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID 352c64e5: NOKEY
準備しています...              ################################# [100%]
```
## Guest Additions のインストール
仮想マシン上で、「デバイス」⇒「光学ドライブ」⇒「ディスクイメージを選択」から、Guest Additions のisoファイルをマウントします。
ファイルは、VirtualBoxのインストールフォルダ内にある、「VBoxGuestAdditions.iso」です。
![vb_009.jpg](https://qiita-image-store.s3.amazonaws.com/0/318431/c47ec810-2dd8-7ec5-2963-91b9b9e2d926.jpeg)

以下のコマンドでインストールします。

```
[root@localhost ~]# cd /run/media/root/VBox_GAs_5.2.22/
[root@localhost VBox_GAs_5.2.22]# ls -ltr 
合計 49711
-r--r--r--. 1 root root      763 11月 28  2017 AUTORUN.INF
-r-xr-xr-x. 1 root root     4821 11月  9 04:51 runasroot.sh
-r-xr-xr-x. 1 root root     6384 11月  9 04:51 autorun.sh
-r-xr-xr-x. 1 root root   268496 11月  9 04:51 VBoxWindowsAdditions.exe
-r-xr-xr-x. 1 root root  7331277 11月  9 04:51 VBoxLinuxAdditions.run
-r-xr-xr-x. 1 root root 10317992 11月  9 04:52 VBoxWindowsAdditions-x86.exe
-r-xr-xr-x. 1 root root 16513936 11月  9 04:58 VBoxWindowsAdditions-amd64.exe
dr-xr-xr-x. 2 root root      792 11月  9 04:58 cert
-r--r--r--. 1 root root      449 11月  9 04:58 TRANS.TBL
dr-xr-xr-x. 2 root root     2508 11月  9 04:58 OS2
dr-xr-xr-x. 2 root root      480 11月  9 04:58 64Bit
dr-xr-xr-x. 2 root root      480 11月  9 04:58 32Bit
-r--r--r--. 1 root root 16453120 11月  9 05:52 VBoxSolarisAdditions.pkg
[root@localhost VBox_GAs_5.2.22]# sh VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.2.22 Guest Additions for Linux........
VirtualBox Guest Additions installer
Removing installed version 5.2.22 of VirtualBox Guest Additions...
Copying additional installer modules ...
Installing additional modules ...
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel modules.  This may take a while.

VirtualBox Guest Additions: Look at /var/log/vboxadd-setup.log to find out what went wrong

VirtualBox Guest Additions: Running kernel modules will not be replaced until the system is restarted
VirtualBox Guest Additions: Starting.
```
以上で完了です！

あとは、仮想マシンのメニューから「デバイス」⇒「クリップボードの共有」⇒「双方向」を選択すれば、Windowsと仮想マシン間でコピペができるようになります。

# まとめ
大体1年に1回ぐらいはこの作業を行うのですが、いつも同じところでちょっと悩むんですよね。

特に、CentOSインストール時の「ソフトウェア選択」や、「コピペ」をできるようにするところ。

あと引っかかりそうなのは、SELinuxとファイアーウォールくらいかと思いますが、それは別途･･･

それでは！