旧G-Suiteサービス無料枠がなくなるので…
サーバ立ち上げます。今更オンプレミスです!笑
きっかけ
今まで10年以上も無料で使わせてもらっていたG-Suiteサービスがついに有料プランのみになってしまいます。家族のメールを独自ドメインで利用するために利用していましたが、ここにきて有料化みたいです。(5人以下の企業であれば無料枠で使えていた機能が使えなくなる、となり、家族のメールアドレスをカスタムドメイン+Gmailで利用してわたしとしては、メールアカウントごとに月々680円発生→全家族分は無理→メールサーバ立てよう、という流れに) 今まで無料で使わせてもらっていたのがすごいことなのですが、なくなるとなると今までメインメールアドレスとして使ってきているので、替わりを検討する必要があります。
(追記:結果からするとGoogleさん家族で利用する分には、利用を許可してくれている様です。ありがたい。。メール構築の後に結果がわかったので、Gmailに戻そうかとも思っていますが、思いのほかやっぱり専用で早いすし、不便は一切ないので、とりあえずこのままオンプレ運用でいきたいと思います。以下からの記事は2022年の4月ごろに記載した内容です。)
色々考えてみたのですが、今更ながら自宅サーバにします!クラウドサービスは使いません!
Gmailの感じそのままにはいかないだろうけど、それなりにオープンソースでもあるのでは?と思ったのとクラウド系は便利なんだけど、うまくいかなかったらデータとか引き出したり、引越し作業もやっぱり大変で、その度にローカルに移したりと何やってるんだろ?的な感じに思え。。もう、ダウンしても自分が自分が困るだけだし、そんなにネットワークが止まった記憶もなく、サーバーも家のAirPlay専用のラズパイですら一年以上動きっぱなしだから、ちゃんとRAID組んでやりくりしたらデータも飛ばないだろう的なノリでやってみます。
メールだけでなく、動画の管理もできたらいーなー。写真と動画は前まではflickrを利用していたのだけど、急に値上がりして動画の制約も大きくなったので困ってたし。
というわけで、
- Mailソリューション
カレンダー- 写真・動画管理
的なサーバーを立ててみます。
ハード
こんな感じでやります↓
- 小さくて場所とらない
- そんなにうるさくない・電力食わない
- 安くてそれなりに動けばいい
- RAID 1は組んでおこう
結果↓
筐体
EPSON Endeavor ST170E ヤフオクで買いました。5800円。。
仕様
Ethernet Card: インテル製 I217Vコントローラー ←
ここが後で困る。(←勝手に困っていました。問題なし。)
メモリ 4GB (2GB+2GB) → 16GB (8GB+8GB)に増設
- Rasalasを利用するのは初めて。差し直した直後はピッ、ピッ、ピッと3回ビープ音。メモリを認識していないときになるようなのであせりました。まず一枚さして起動、その後にもう一枚さして起動すると認識しました。いまのところまだ3日しか経っていませんがつけっぱなしで良好です。サーバー用途としては16GBもあれば問題ないはず。そもそもクライアントが数人なので。笑 (2022/10/02追記: 今まで一度も調子がおかしくなってません。全く問題なさそうです。)
ドライブ RAID 1 (SDD+HDD Hybrid)
-
- 240GBだとこの価格帯では信頼性も性能もいいと思いますmicronですしね。 実際にサーバ利用だとすると、SSD一発はさすがに心配な感じがします。メールサーバなので受け取れなくなるのも困りますし。RAIDにするか、、でももう一個かうのー。。と渋っていましたが、一般的には無駄と言われるHDDとのRAID 1を試みます。つまりSSDとHDD(円盤タイプ)をRAID 1のアレイとして組みます。
Western Digital 256GB 2.5インチ
- lenovoのideaPadについていたHDD。Windows 7が付いていましたがに一度も起動せずにSDDに差し替えられて保存されていたもの。これをRAID 1のアクティブとして利用します。
SSDとHDDのRAID 1について
- これだとSSDがまったく意味がない、界隈ではみんなこう言っていますが、Linuxのmdで行うソフトRAIDに関してはこの限りではありません。
- 読み込みはSSDの方から読む、という制御ができます。元々RAID 1には分散読み取りの効果があり、読み取りが早くなるはず、ですがHDDのランダムアクセスがSSDのランダムアクセスに勝るわけがないので、HDDは書き込みに徹する用にします。冗長性のためにミラーリングするために存在させ、読み込みはSSDから行わせる感じです。Write-light, Read-Heavyなサーバー用途にはコレがコストパフォーマンス的にもいいような気がしています.
- 後で書きますが、
--write-mostly
のフラグをHDD側の/dev/sdxに当てるとOKです。 - 結果を書いておくと、このオプションを有効にした途端、OSの起動がサクサクになります。SSDの動作に近いです。同じ筐体でベンチとればいいですがそこまでやってません。。
-
OS
Debian Linux 11元々ハマっていたGentooにしたかったけど、カスタマイズ作業でキリがなり、主旨からどんどん外れていくので我慢してdebian系にしようと決めました。後はubuntuかDebianか。ubuntuは結構頻度で更新されまくるので、ちょっと不安定な気がするので少し落ち着いている祖先のDebianに。
- インストーラーから何からよくできてますね、さすがです。
この後、結局ネットワークのLink Upがうまくいかない、と勘違いしてAlpine Linuxへ。結論から言うと、原因はどうやらIntelのNICカードのサポートが外れていて、最近のLinux Kernelでは色々と問題が出ているらしい。Debianは全然問題ありません。
- さらに後でわかったことですが、EthernetのLANケーブルがカテゴリー5以下、つまり1Gbpsでないケーブルだと、うまく認識できないことが分かりました。Category 5E以上のケーブルにしたら全く問題なかった。。なんだったんだろう。。この時間。。
- といわけで、IntelのEthernetのインターフェースをLinuxで利用して、リンクアップになぜか30秒ほどかかって、首傾げている人は、Category-5以下のケーブルを使っていないか確認してみてください!(全然違ったらすみません。)
-
- サービスの管理はGentooと同じOpenRC。Dockerを利用する母艦ではやってますね。コンパクトなシステムなのでNetworkのLinkUpの原因が解決しやすいかと選択。Muslを利用したりとその辺のLinuxの様にはいかないので前途多難な感じもしますが、、何とかなるでしょう。
- 追記:サーバー用途としてもわざわざAlpineは使わなくてもよかったかもしれないとは思います。glibの方がmuslより速いベンチもいっぱい出て居ますし、タスクが多いと不利なのかも?という情報が多いですね。。サービスマネージシステムがOpenRCがデフォルトなので、Gentoo上がりとしては、とっつきやすいですね、くらいかなー。ただ今からもう一度Debianに戻る元気がない。。笑
Intel I217V NICについて
Debian をインストール後、SSHサービスがいつも再起動後に失敗し続ける。。dmesgで確認すると、ネットワークのLink upするのに3分ぐらいかかっている。。1000Mでリンクするはずが、100Mでアップ。ネットで調べると最近のカーネルだと色々と問題がでている。(追記: Category5Eだと信じ込んでいたケーブルがCAT5でした。。。なので正常な動作。ただ、リンクアップに非常に時間がかかっているのはおかしい。)
- ServerCanさんのFun Scripting 2.0ブログ
- その他、問題の質問/Helpが至る所に。。
解決策として出ているIntelからのドライバーを試すもだめ。このカードにサポートしているIntelからの最終版もダメ。うーん、再起動後に毎回手動でsshd起動するのもキーボード接続するのも困るのでここは抜けるしかない。と思い、もう一個違うDistributionを試してみました。それがAlpineです。結論からいうと最近のKernelを利用する、という前提では私には解決できませんでした。。。Alpineにしても、Debianにしても。。単純に時間が流れていきました。。
結局USB-Ethernetのコンバーターが余っていたのでそれさしました。Realtek 8139ドライバの安物ですが、さすが蟹さんチップ。Linuxでは困ったことないです!!IntelのはBIOSで殺しました。。。
→ 先に書いた通り、IntelでもCategory5E以上のケーブルを利用すると全く問題ありませんでした。。。
Alpine Linux のインストール
いつもの通り,isoイメージをUSBメモリに焼いてブート。balenaEtcherがMacでもLinuxでも利用できていいですね。焼けたので、EndeavorのUSBに挿してブートの順番設定して、えいっ,とするとエラー。セキュリティーが云々…とBIOS画面から。なんじゃ?と思ったら前の利用されていたのはどこかの真っ当な会社なのでしょう。。よく分からないものはUSBでちゃんとブートできないように設定されていました。
SecurityのタブのそれっぽいのはすべていりませんのでDisableに。これで起動できました。 インストール作業はsetup-alpineで対話式に設定できるようになっています。基本これでいいですが、RAID 1で組みたい。対話した後の最後のsetup-disk
が終わればパーティション切ったあとのマウントポイント先にダーっとコピーされていく作りになっていました。なので、このsetup-disk
コマンド叩かないとインストールできない。。 後からRAID化するか、と思っていましたが、やり方ありました。しかもほぼ自動のインテリジェントな感じ。
RAID 1化
単純にsetup-alpineの最後のディスク関連以外まで終了させて、以下のコマンドを打てばOKでした。
setup-disk -r
-r
をつけるだけです。つけても何も変わっていない見えますが、RAIDとして設定してくれます。この後の対話でディスク全体を利用とするだけで普通の人は問題ないです。 しかも、最初に書いていましたHDD+SSDでのRAID 1対策も自動でやってくれました。今までDebianでフラグはつけていたからかもしれませんが。でも多分、自動なんだと思います。つまり、本来コマンドラインで以下の様にやるところも自動でHDD側のディスクの前に-W
オプション(--write-mostly)をつけてくれる!(↓は叩く必要ないです。普通はこうやるところまで、setup-diskでやってくれます。たぶん…違ったらご指摘ください)
mdadm --create --level=1 --raid-devices=2 /dev/md0 /dev/sda3[SDD] -W /dev/sdb1[HDD]
読み込み時は通常SSD側からのみ読み込みます。書き込み時は両方書き込みます、当たり前ですが。これがなかなかよくできています。全然早いです。これでいいですね。1TBとか2TBのRAID 1だとかなりコストパフォーマンス的にありです。
いったん普通にRAID 1組んだ後でも、このオプションは指定できます。例えば
sudo echo writemostly > /sys/block/md127/md/dev-sdb2/state
とHDD側(円盤ディスクもしくはネットワークディスク)の方に書き込めば、必要な時以外にしか読み込みに使いません。正しく設定できると、通常は↓なのが
cat /sys/block/md2/md/dev-sda3/state
in_sync
こんな感じ↓の表示に変わります。
cat /sys/block/md127/md/dev-sdb2/state
in_sync,write_mostly
辞めるときも簡単です。
sudo echo -writemostly > /sys/block/md127/md/dev-sdb2/state
これでRAID 1化は終了です。これからは/dev/md[x]
をディスクとして利用します。
参考にさせて頂きました↓
- https://superuser.com/questions/379472/how-does-one-enable-write-mostly-with-linux-raid
- https://raid.wiki.kernel.org/index.php/Write-mostly
- https://kledgeb.blogspot.com/2014/03/ubuntu-mdadm-10.html
- https://wiki.alpinelinux.org/wiki/Setting_up_a_software_RAID_array
- https://docs.alpinelinux.org/user-handbook/0.1a/Installing/manual.html#_options_and_settings
コメント
コメントを投稿