ファイルサーバのOSをmanjaroに移行する2 (サーバ設定移行編)

前回の記事の続き。
サーバのOSを入れ直しに伴いバックアップと再設定をした。

全体の流れ

  • 旧サーバの移行準備
    • ZFSのエクスポート★
    • 設定ファイルのバックアップ★
  • 新サーバのセットアップ
    • Manjaroのインストール
    • 設定★
      • ZFSのインポート
      • fstabの再設定
      • sambaの再設定

★:今回の記事で取り扱うところ
Manjaroのインストールについては前回の記事を参照。

旧サーバの移行準備

zfsのエクスポート

zfsのディレクトリはSambaで利用されていたため、念の為sambaを止めてからエクスポートした。

$ sudo systemctl stop smb
$ sudo zpool export tank

設定ファイルのバックアップ

今回はディスクの構成やsambaの設定はそのまま移行するつもりだったので、以下の2ファイルをコピーした

  • /etc/fstab
  • /etc/samba/smb.conf

Manjaroのインストール

省略

新サーバの設定

GUIの無効化

ランレベルやsystemd ターゲットについて、説明すると長くなるうえにそもそも理解しきれてないので、ざっくり結論だけ、

最近のLinuxはどう起動するかをsystemdというもので管理していて、このsystemdにおいて、いわゆるGUIでの起動はgraphical.target、CUI(CLI)での起動はmulti-user.targetという割当になっている。

今回の場合、systemdのデフォルトの起動方式をgraphical.targetからmulti-user.targetに変更することで、起動時にGUIが起動しなくなる。

具体的なコマンドは以下。

$ systemctl set-default multi-user.target

ZFSの再設定

ZFSのインストール(Manjaro)

先に以下のコマンドでカーネルを確認しておく

$ mhwd-kernel -li
Currently running: 4.19.66-1-MANJARO (linux419)
The following kernels are installed in your system:
   * linux419

zfsをインストールしようとすると以下のようにカーネルごとに選択肢が出てくる。

$ sudo pacman -S zfs
:: 7 個の選択肢が zfs にはあります:
:: リポジトリ extra
   1) linux316-zfs  2) linux414-zfs  3) linux419-zfs  4) linux44-zfs  5) linux49-zfs  6) linux51-zfs  7) linux52-zfs

数字を入力してください (デフォルト=1): 3

今回であれば3(linux419-zfs)を選択する。

もしくはdkms(Dynamic Kernel Module Support)という、カーネルに合わせてくれる(らしい)パッケージもある

$ sudo pacman -S zfs-dkms

で、実際に自分がどうしたかという(片方ずつ確認するのが面倒で)両方入れたままにしている。
特にエラーなど出てないので様子見。

あとは自動マウントなどのデーモンを有効化しておく

$sudo systemctl enable zfs.target
$sudo systemctl enable zfs-import-cache
$sudo systemctl enable zfs-mount
$sudo systemctl enable zfs-import.target

ZFSインポート

エクスポートしたディスクがついた状態で、以下のコマンドを実行

$ sudo zpool -import tank

特に問題なくインポートできた。

はじめにパッケージのインストールが必要ではあるが、それを差し引いても
UUIDとか確認しなくて良い分他のファイルシステムと比べかなり楽な印象

fstab、SAMBAの再設定

そもそもZFSを使う以前からの構成としては、nvmeの起動ディスクとは別にHDDに共有用のホームディレクトリ的なものを/mnt/hdd/にマウントし、それをsambaで共有していた
その際sambaで公開していたディレクトリが/srv/sambaで、ここに/mnt/hdd/をバインドしていた。
HDDのファイルシステムをZfsに移行した際もデータの置き場は/tank/homeになったが公開のディレクトリ自体はそのまま/srv/sambaで、同様に/tank/homeをバインドして運用していた。

sambaについて

設定ファイルをそのまま移行しただけなので特筆することがなかった。

ZFSとftsabについて

旧サーバのfstabの行をそのまま移したら何故かzfsがうまくマウントできなくなった。
改めて調べたところzfsをfstabでバインドマウントする場合、zfsがマウントするよりも先にfstabがマウントをしようとしてしまいエラーになることがあるらしい。
旧サーバではたまたまzfsのマウントが先になっていたが、原因は不明。

fstabのマウントをZFSよりあとにするにはfstabのオプションにx-systemd.requires=zfs-mount.serviceを足せばいいらしい。

具体的にはfstabの末尾に以下の行を足した

/tank/home   /srv/samba  none  bind,defaults,nofail,x-systemd.requires=zfs-mount.service    0  0

これで問題は解決した。

参考

10.3. systemd ターゲットでの作業
ZFS