2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

計算サーバーをLTSPでディスクレス化する

Last updated at Posted at 2020-01-25

はじめに

某大の某研で学生用の計算サーバーを管理しています。
計算サーバーの増加にメンテナンスが追いついておらず、ソフトウェアの更新も激しいです。
そもそも、それぞれのサーバーにOSがインストールされていることが諸悪の根源です。
OSをLANからブートするPreboot eXecution Environment(PXE) ブートで管理コストを削減します。
ホストの管理としてLinux Terminal Server Project(LTSP)を使います。

PXE/LTSPで何ができるの?

https://ltsp.org/
何ができるのかざっくりと言うならば、

設定済みサーバーのコピーをポンポン作れる、超簡単に。

です。コピー先のOSをインストールする必要がありません。
そもそもSSHやHDDをセットアップする必要もないです。

0. 準備

準備するもの

  • LAN環境
  • PC二台

環境

PXEブートではDHCPの設定が必要ですが、今回はDHCPプロキシという機能を使います。
DHCPサーバーはルーター付属のものをそのまま使い、特別な設定はありません。

筆者の環境ではNISNFSでアカウントが管理されています。
これらの管理システムがない状態でも使うことができるように説明します。
しかし、可用性の観点からNISやNFSによるアカウント管理、データの冗長化をお勧めします。

この記事ではUbuntu Server 18.04.3で動作確認します。
そこそこ良いワークステーションをホストにしましょう。
依存関係のトラブルは面倒なので、クリーンインストールした状態から説明を始めます。

GPU環境を導入する場合は、ホストとクライアントのどちらにもGPUを差しておいてください。
GPUドライバの都合、BIOSのセキュアブートをOFFにする必要があるかもしれません。
ホストにはGPUがなくても動作するかもしれませんが、未確認です。

Internet <--> Router(DHCP) <--(HUB)--> Host
                                |--> Client_1
                         NIS <--|--> Client_2
                         NFS <--|--> Client_n

1. LTSPの導入

インストール

ホストマシンにLTSPを導入します。
LTSPのインストールページの通りに進めます。

$ sudo apt -y purge --auto-remove indicator-application mate-hud snapd
$ sudo apt -y install synaptic
$ sudo add-apt-repository -y ppa:ltsp
$ sudo apt update
$ sudo apt -y install --install-recommends ltsp ltsp-binaries dnsmasq nfs-kernel-server openssh-server squashfs-tools ethtool net-tools epoptes

LTSPの初期設定

細かいオプションがありますが、ほとんどの環境ではデフォルト設定で良いです。
詳しくはLTSPのインストールページドキュメントを見てください。

$ sudo ltsp dnsmasq
$ sudo install -m 0660 -g sudo /usr/share/ltsp/common/ltsp/ltsp.conf /etc/ltsp/ltsp.conf
$ sudo ltsp image /
$ sudo ltsp ipxe
$ sudo ltsp nfs
$ sudo ltsp initrd

この時点で、ブートができるようになっています。
クライアントから起動してログインできるか確認しましょう。
BIOSの設定からNetwork Boot(PXE BOOT)を有効にし、起動順序でLANを優先にします。
初期設定で既に、/homeがNFSでマウントされているため、環境によってはこれだけで十分かもしれません。

2. SSHリモートアクセスの設定(Option)

計算サーバーはSSHで接続する必要があります。
SSHの有効化と静的IPの設定をします。
各サーバーのMACアドレスが必要です。

クライアント用のSSHホスト鍵を作成

$ sudo mkdir -p /etc/ltsp/etc/ssh
$ sudo ssh-keygen -A -f /etc/ltsp
$ sudo mv /etc/ltsp/etc/ssh/ssh_host_* /etc/ltsp/ # 鍵が思った場所に生成されないので移動
$ sudo rm -r /etc/ltsp/etc/

SSHの設定を追加

$ sudo vim /etc/ltsp/ltsp.conf
[clients]
KEEP_SYSTEM_SERVICES="ssh"
POST_INIT_CP_KEYS="mv /etc/ltsp/ssh_host_* /etc/ssh/"

それぞれのクライアント用に静的IPの設定を追加

$ sudo vim /etc/ltsp/ltsp.conf
[00:11:22:33:44:55]
HOSTNAME="client1"
KERNEL_PARAMETERS="ip=192.168.0.10:\${srv}:\${gateway}:\${netmask}"

3. GPUの設定(Option)

NvidiaのGPUを使う場合はホストにnvidia-driverをインストールします。
CUDAも一緒にインストールします。
LTSPの設定に追加は不要です。
ただし、ディスプレイをGPUに接続すると画面がはみ出します。(原因調査中)

$ wget https://developer.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.105_418.39_linux.run
$ sudo sh cuda_10.1.105_418.39_linux.run --silent --driver --toolkit

4. NISとNFSの設定(Option)

ホストでNISを設定してください。ホストでNFSは設定しません。
クライアントでNFSを有効にするために、FSTABの記述を加える必要があります。
こちらの記事 CentOS7(研究室内新設サーバー)の設定メモ が参考になるかもしれません。

$ sudo vim /etc/ltsp/ltsp.conf
[clients]
FSTAB_HOME="file-server:/home /home nfs defaults"

5. 運用

ホスト環境やLTSPの設定を変更した場合は以下を実行する必要があります。
その後、クライアントを再起動すると反映されます。

$ sudo ltsp image /
$ sudo ltsp ipxe
$ sudo ltsp nfs
$ sudo ltsp initrd

さいごに

後任への引継ぎ資料も兼ねて、ここに備忘録を記します。
不明点や間違いの指摘があればコメントにお願いします。

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?