データベース自作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性能を測定していきます。測定方法はいくつか有りますが、いつでも簡単にできるhdparm、ddコマンドを使った簡易的な方法で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の実性能もわかってきたことですし、次回は、マシンのロードアベレージについて確認して行きたいと思います。
1979年札幌市生まれ。
14歳からC/C++をはじめ、MASM、Delphi、ActionScript、PHP、C#、Perlなど多言語を習得。大学在学中にWebシステム開発会社に勤務した後、携帯電話などの組込系プログラミングに従事。
プロジェクトマネージャー、1年間のフリーランスプログラマを経て、2006年3月に株式会社ゼノフィを設立し、代表取締役に就任(現職)。2015年5月13日 株式会社ゼノフィエンターテイメントを設立、代表取締役に就任(現職)、2019年2月5日 スタジオリズ株式会社を設立、代表取締役に就任(現職)
最新の更新を
プッシュ通知で購読しよう