データベース自作PCサーバー作成 4

マルちゃん正麺(塩)麺&鍋大陸 濃厚鶏白湯スープの素があれば、まじで飯作るの困らないなって本気で思い始めてる小堤です。鶏肉とキャベツだけ買ってくれば、なんとかなるんよねぇ。もっと早く知りたかったわ、人生損した感ある。

さて、SSDのRAID0構成まで完了しましたが、RAID0は、片側のディスクが壊れたら終わりです。今回、OS領域、データ領域、ともにRAID0構成にしました。流石に、壊れちゃったっ/// では、済まないし、入れ直して再設定するのも面倒なので、まるごとバックアップします。まずは、OSのバックアップを作成します。

ReaR によるOSまるごとバックアップ

ReaR (Relax-and-Recover) を利用することで、OSのまるごとバックアップができます。バックアップ先は、USBメモリ、USB接続ドライブに直接とること、または、NFSサーバー、Windowsファイルサーバー(CIFS接続)でバックアップを取ることができます。

RHEL、CentOS、Fedora、Ubuntuなど、大体のLinuxデストリビューションへパッケージインストールが可能です。

ReaRインストール

[root@localhost]$ dnf -y install rear \
  syslinux-extlinux 
  grub2-efi-x64-modules

上記を実行して、インストールされたことを確認します。

[root@localhost]$ rear -V
Relax-and-Recover 2.4 / Git

USBデバイスに直接バックアップを行う

非常にわかりやすいバックアップ構成です。接続しているUSBデバイス(記憶媒体)に、直接バックアップを行います。この直接といっているのは、USBデバイス、例えばUSBメモリ自体が起動ディスクとして作成され、かつその中にバックアップが含まれるためです。

EFIパーテーションサイズ変更

EFIパーティションを200MBから500MBに変更します。/usr/share/rear/conf/default.conf の中の USB_UEFI_PART_SIZE=”200″USB_UEFI_PART_SIZE=”500″ に書き換えます。

エディタで変更しても良いですが、下記のコマンドにて、書き換えることができます。

[root@localhost]$  sed -i -e 's/USB_UEFI_PART_SIZE="200"/USB_UEFI_PART_SIZE="500"/' /usr/share/rear/conf/default.conf

USBメモリのフォーマット

/dev/xxx の部分は、fdisk -l でUSBデバイスのものに置き換えてください。フォーマットの確認が表示されたらYesと入力しENTERキーを押下します。この時、大文字小文字も判別しているので、正確に3文字(Yes)を入力してください。

[root@localhost]$  rear format -- --efi /dev/xxx
USB device /dev/xxx is not formatted with ext2/3/4 or btrfs filesystem
Type exactly 'Yes' to format /dev/xxx with ext3 filesystem
(default 'No' timeout 300 seconds)
Yes

以下のコマンドで、REAR-000 ラベルが生成されていることが確認できます。

[root@localhost]$  ls -l /dev/disk/by-label
total xxx
lrwxrwxrwx 1 root root  9 Jun 27 01:30 REAR-000 -> ../../xxx

バックアップ設定

以下のコマンドを実行し、/etc/rear/local.conf にバックアップ設定を行います。

[root@localhost]$ cat <<EOF >> /etc/rear/local.conf
OUTPUT=USB
OUTPUT_URL=usb:///dev/disk/by-label/REAR-000
BACKUP=NETFS
BACKUP_URL=usb:///dev/disk/by-label/REAR-000
GRUB_RESCUE=1
EOF

バックアップ実行

以下のコマンドを実行することで、バックアップを実行することができます。

[root@localhost]$ rear -v mkbackup
Relax-and-Recover 2.4 / Git
(中略)...
Running exit tasks

Running exit tasks が表示されたら、バックアップ完了です。

NFSサーバーにバックアップを行う

外部ファイルサーバーに、ネットワーク経由でバックアップを行う場合、対象のディレクトリにISOファイルが生成されます。リストア時は、このISOファイルをUSBメモリに焼いて、起動ディスクを作成します。この起動ディスク内に、接続先のNFSサーバー情報なども含まれていますので、自動的にバックアップをしたNFSサーバーからリストアを行うことができます。

ISOを使った起動ディスクの作成は、balenaEtcherを利用しています。Windows、Mac、Ubuntu(Linux)でも使えます。USBデバイスへのバックアップとの違いは、バックアップ設定のみで、他は一緒です(USBデバイス使わないので、もちろんフォーマットもしません)

バックアップ設定

以下のように、設定を行います。BACKUP_URL にNFSサーバーのパスを設定するだけです。

[root@localhost]$ cat <<EOF >> /etc/rear/local.conf
OUTPUT=ISO
BACKUP=NETFS
BACKUP_URL="nfs://【サーバーIP or ドメイン】/mnt/data/rear"
EOF

CIFS(Samba) の場合は、以下のように設定します。

OUTPUT=ISO
OUTPUT_URL="cifs://【サーバーIP or ドメイン】/data/rear/"
OUTPUT_OPTIONS="username=【ユーザー名】,password=【パスワード】"
BACKUP=NETFS
BACKUP_URL="$OUTPUT_URL"
BACKUP_OPTIONS="$OUTPUT_OPTIONS"

メモリテスト

最近のマザーボードは、BIOSではなくUEFIのことが多いのではないでしょうか。memtest86+が、UEFIに対応していないため、memtest86をUSBメモリに入れて利用します。正確には、memtest86も最新版UEFIには対応していないため、BIOSの場合は、V4を利用するようです。

MemTest86 からイメージデータをダウンロードします。

memtest86-usb.zip をダウンロードし展開すると、memtest86-usb.img があるので、このファイルをUSBに焼きます。焼くっていうのかな…。

USBメモリに、イメージをフラッシュして(フラッシュでいいのかな笑)起動するUSBメモリを作成します。このUSBメモリは使い回せるので、手元になければ1つあると便利です。imgのサイズは 524.3MB (V9.1) 程度なので、USBメモリの容量は、小さいもの・安価なもので良いと思います。

僕は、自宅に KOOTION USBメモリ 64GB 5個セットUSB3.0 二年保証 高速転送 360° 回転式USB フラッシュメモリー ブラック フラッシュドライブ を常備してあります。64GB で 700円くらいですかね。OSインストール用のISOや、データの受け渡し(今はだいたいチャットソフトやらでなんとかなりますが、ならんときもある)それこそ、ReaRでセットアップ終わらせたものを、相手に渡すこともできますね、コレくらいの容量あると。

なぜか、USBメモリって、古いの転がってるやろって思ったときに限って見つからなかったり、無いんですよねぇ・・。

USBメモリから、起動してConfigを選択(or Exitなので1択、矢印キーで選択を切り替えられます)すると、下記の画面が表示されます。

なんか、ファミコンっぽい。sキーを押して、テストを開始できます。カッコで囲まれているキーを押せば良いようです。

完了するまで結構時間がかかるので、放置、完了すると、次のように表示されます。右下のErrorsが0になればテストをパスしたことになります。エラーがある場合は、下のFinished passの部分にエラー箇所が表示されます。

複数回テストして(放置して待つだけ)完全に終了すると、こんな画面がでます。

SSD性能計測

SSD性能を測定していきます。測定方法はいくつか有りますが、いつでも簡単にできるhdparmddコマンドを使った簡易的な方法でREAD/WRITE性能を確認したいと思います。

SATA SSD RAI0構成

先に、df コマンドで ルートにマウントされているデバイス名を確認します。次の例では、/dev/md126 になります。続いて、hdparm コマンドを使って読み込み性能を計測します。

[root@localhost]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs         30G     0   30G   0% /dev
tmpfs            30G     0   30G   0% /dev/shm
tmpfs            30G  8.9M   30G   1% /run
tmpfs            30G     0   30G   0% /sys/fs/cgroup
/dev/md126      1.8T   17G  1.8T   1% /
/dev/md127     1015M  291M  724M  29% /boot
/dev/sda1       599M  5.8M  594M   1% /boot/efi
/dev/md0        3.7T   28G  3.7T   1% /data
tmpfs           5.9G     0  5.9G   0% /run/user/1000

[root@localhost]$  hdparm -tT /dev/md126

/dev/md126:
 Timing cached reads:   22640 MB in  1.99 seconds = 11397.91 MB/sec
 Timing buffered disk reads: 3238 MB in  3.00 seconds = 1078.87 MB/sec

キャッシュが効いている状態だと、11.4GB/秒、キャッシュなしだと、1GB/秒、概ねSATA 550MB/秒 x 2台(RAID0)の速度が出ていますね。

書き込みは、dd コマンドで、/tmpにファイルを書き出して計測します。

[root@localhost]$  dd if=/dev/zero of=/tmp/testimg bs=10M count=1024
1024+0 records in
1024+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 4.58668 s, 2.3 GB/s

書き込み性能は、2.3GB、あれ?SATA x 2 の限界値超えてない?笑 どうやら、oflag=direct をつける必要があるみたいですねぇ。

[root@localhost]$  dd if=/dev/zero of=/tmp/testimg bs=10M count=1024 oflag=direct
1024+0 records in
1024+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 13.5388 s, 793 MB/s

793 MB/秒、メーカー的には 「READ: 560MB/s、WRITE: 530MB/s」を記載されているんですが、RAID0にしたから、倍の値でいいはずなので、大体800MB/秒ですから、OKっぽいですね。公称値までは、速度がでないでしょう、ですが、1個のSSDの公称値は、ちゃんと超えて1.65倍といった数値ですね。

NVMe (PCIe 3.0) SSD RAID0構成

同じことを、NVMe SSDでやってみたいと思います。

データディレクトリが、/data なので、ここにファイルを生成、読み込みしてみたい思います。df -h で確認したら /dev/md0 になっているはずです。

[root@localhost]$  hdparm -tT /dev/md0

/dev/md0:
 Timing cached reads:   22382 MB in  1.99 seconds = 11267.08 MB/sec
 Timing buffered disk reads: 11710 MB in  3.00 seconds = 3903.20 MB/sec

3.9 GB/秒、メーカー公称値「READ: 3500 MB/秒、WRITE: 3000 MB/秒」1個での速度を計測していないので、なんともいえませんが、公称値を上回っていますし、1個が公称値まででてないとして、PCIe Gen3 x4 接続なので、1レーンの限界は、32.0Gbps、おおよそ4GB/s

ちょっとボトルネックが、明確にどこかはわからないものの、SATAと同じく考えると、6GB /秒くらいはでてほしいですよね・・・CPU的にも、ディスク的にもでそうなもんですが、X300のマザーの仕様見てみても、PCIe 3.0 x4 と PCIe 3.0 x2 / x4 って書いてあるし、ん〜。どこか見落としてる気がする。

書き込みもみてみますか。

[root@localhost]$  dd if=/dev/zero of=/data/testimg bs=10M count=1024 oflag=direct
1024+0 records in
1024+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 3.59045 s, 3.0 GB/s

3.0GB /秒 まぁ、速いんですけどね。RAID0にして6 GB/秒から、5 GB /秒くらいはでてほしいよね〜。ともに、1個だと、ここまででないんでしょうから高速化されてるんでしょう。RAID0にする前に測れば良かったわ。他の人のレビュー見てる限り、単体で書き込み性能 1GB / 秒とか、そこらなので、x2 で 3 GB / 秒 は優秀ということにしよう・・笑

とはいっても、シーケンシャルよりも、データベースの場合は、ランダムアクセスの方が多いので、シーケンシャルだけみてもダメですよね。相対的に、ランダムアクセスも伸びてるはずですが。

おわりに

また、ずいぶん長くなりましたねぇ。

今回も利用していますが、物理マシンの画面キャプチャは、OBS (Open Broadcaster Software) を利用しています。Windows、Mac、Linuxで動くので便利ですね。ゲーム配信なんかでよく使われていますね。

接続は、UBS3.0 で、Chilison HDMI キャプチャーボード ゲームキャプチャー USB3.0 ビデオキャプチャカード 1080P60Hz ゲーム実況生配信、画面共有、録画、ライブ会議に適用 小型軽量 Nintendo Switch、Xbox One、OBS Studio対応 電源不要(アップグレードバージョン) を利用しました。

2,000円でビデオキャプチャできちゃうんですもんねぇ。Ubuntu 20.04では、差し込むだけで自動的にOBSで利用できました。

やっとマシンができたぁ!って感じがしてきました。いつになったらMariaDB入れるんだよ笑 MariaDBだけを突っ込むなら、パッケージマネージャーで突っ込んで起動して終わりなんですが、設定をカスタマイズしない場合。

さくっと、MariaDB起動してしまいたいところなのですが、SSDの実性能もわかってきたことですし、次回は、マシンのロードアベレージについて確認して行きたいと思います。

最新の更新を
プッシュ通知で購読しよう