刹那(せつな)の瞬き

Willkömmen! Ich heiße Setsuna. Haben Sie etwas Zeit für mich?

シャットダウン中に mssql-server で止まってしまう

Ubuntu18.04 に SQL Server 2019 をインストールして開発環境は整いつつあるのですが、シャットダウン時に困った状態になりました。

サーバ用途ではない PC なので、使用しない場合は常に電源を切ります。
いつものようにシャットダウンの操作をしたところ、シャットダウンシーケンスの途中、mssql-server のところで止まってしまいました。

コンソールを切り替えても画面は変わらず。何もできません。
15分くらい待っても進まないので、仕方なく強制的に電源を切りました。

たまたま WindowsSSD もマウントしてたため、こちらにもプチ被害がありました。
起動デバイスを変更して Windows を起動したら、いきなりの fsck
こちらが故障したら目も当てられない。作業中のソースが消えたらどうしようと、ホント冷や汗ものでした。

その後、何度かこの状態に遭遇したので、自動起動は止めることにします。
使いたい時にサービスを起動するのは少々面倒だけど、HDD/SSD が故障するよりはマシです。

1. 自動起動の無効化

(1) サービスを停止

念の為、サービスを停止します。

$ sudo systemctl stop mssql-server

ここでプロンプトが戻ってこなかったら、私と同じ状態かもしれません。
あまりやりたくはないけど、sudo kill -9 <pid>で対処しました。

(2) サービスの状態確認

無事に停止しているか確認します。

$ systemctl status mssql-server --no-pager -l

" Active: inactive (dead) " であれば停止しています。

(3) サービスの自動起動を無効化

OS 起動時に SQLServer のサービスを自動起動しないようにします。

$ sudo systemctl disable mssql-server

これで次回の OS 起動から mssql-server.service は停止したままになります。

2. SQLServer サービスの開始・終了

自動起動ではないのでサービスの開始と終了は手動です。

(1) サービス開始
$ sudo systemctl start mssql-server
(2) サービス停止
$ sudo systemctl stop mssql-server
(3) サービス再起動

もし、SQLServer サービスが active 中にパッケージのアップデートを実施した場合、再起動した方が良いかもしれません。

$ sudo systemctl restart mssql-server

3. 補足

MS公式のドキュメントはこちらです。

ざっとネットを探してみたのですが、私の状況みたいな記事は見つけられませんでした。

今のところ、サービスを停止した状態でシャットダウンすれば、問題なく電源OFFまでたどり着きます。

この件以外は快適なので、しばらくは様子見です。

とはいえ、元々 SQL Server on Linux は物理サーバとコンテナ環境での利用を想定していました。なので、そろそろ LXD と Docker 環境も試すことにします。 

※追記

もしかしたら、サービス実行中なのにサスペンドしたのが原因かもしれません。
サーバ環境じゃありえないもんなぁ。