AlmaLinux 9.1で自分用のストレージサーバを構築する(KVMホスト編)

構想

自宅鯖 構想 2023

関連記事

  1. 自宅鯖 構成メモ 2023
  2. AlmaLinux 9.1 で自分用のストレージサーバを構築する(KVM ホスト編) ← イマココ
  3. AlmaLinux 9.1 で自分用のストレージサーバを構築する(VM ゲスト編)
  4. AlmaLinux 9.1 で自分用のストレージサーバを構築する(Nextcloud 編)

やったこと

1. Linux のインストール

インストール手順は他でさんざん紹介されてるので省略。
こだわりポイント(?): SOFTWARE SELECTION では Minimal Install を選択してあとから必要なものをインストールする方法を取る。

2. パッケージ更新&最低限必要なものをインストール

dnf upgrade
dnf install vim rsync mlocate wget tar bash-completion

3. SSH でログインできるようにする

セキュリティを意識して公開鍵を利用した SSH でのみ鯖機にログインできるようにする。

クライアント側で公開鍵を作成する。
鍵の暗号化アルゴリズムにEd25519を使う。ssh-keygen のデフォルト暗号化アルゴリズムであるRSAよりセキュリティに優れているらしい。

ssh-keygen -t ed25519

公開鍵をホスト側に送る。
USB メモリに作成した公開鍵を入れてホスト側でマウントして受け取る。
公開鍵は~/.ssh/authorized_keysという名前で配置する。

ホスト側で SSH 接続のための設定を行う。
/etc/ssh/sshd_configをエディタで開きPubkeyAuthentication yesのコメントアウトを外す。
SSH デーモンを再起動する。

systemctl restart sshd

クライアント側から SSH での接続テストを行う。

ssh root@192.168.10.xxx

4. History で表示されるコマンドに実行時間をつける

~/.bashrcをエディタで開き、以下を追加する。

HISTTIMEFORMAT='%Y-%m-%d %H:%M:%S '

一度ログアウトしてから再度ログインし、history コマンドを実行してコマンドの実行時間が表示されていることを確認する。

[root@host-al91 ~]# history
    1  2023-04-12 22:54:08 df -h
    2  2023-04-12 22:54:08 blkid
    ...

5. ソフトウェア RAID を構築する

RAID に使用するディスクのパーティショニングを行う。
同様の操作をsdcの他に、sddsdesdfに対しても行う。

parted -l # ディスクの一覧を表示する
parted /dev/sdc # 操作を行うディスクを選択
p # 現在の状況を確認
mklabel gpt # GNU Parted
mkpart nextcloud 0% 100% # 名前をつけてパーティショニング
p # 現在の状況を確認

mdadmをインストールする。

dnf install mdadm

4 個の HDD でで RAID 6 を構成する。

parted -l # ディスクの一覧を表示する
mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sd[cdef]1 # RAID6を4つのHDDで構成する

cat /proc/mdstatで RAID の状態を確認できる。
resyncが完了するまで作成した RAID への操作(書き込みなど)はしない。
かなり時間がかかるので気長に待とう。

[root@host-al91 ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sdf1[3] sde1[2] sdd1[1] sdc1[0]
      7813769216 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
      [>....................]  resync =  0.0% (575356/3906884608) finish=905.2min speed=71919K/sec
      bitmap: 30/30 pages [120KB], 65536KB chunk

XFS でフォーマット。

mkfs -t xfs -f /dev/md0

6. 仮想ブリッジを作成する

仮想ブリッジ作成。

nmcli c add type bridge con-name bridge0 ifname bridge0

仮想ブリッジに物理 NIC enp2s0を割り当てる。

nmcli c m enp2s0 master bridge0

仮想ブリッジに対して適宜設定をしていく。

nmcli c m bridge0 ipv4.method manual ipv4.addresses '192.168.10.xxx/24' ipv4.gateway '192.168.10.xxx'
nmcli c m bridge0 ipv4.dns 'xxx.xxx.xxx.xxx'
nmcli c m bridge0 ipv6.method disabled

仮想ブリッジの起動と物理 NIC の再起動を行う。

nmcli c up bridge0; nmcli c down enp2s0; nmcli c up enp2s0

疎通確認などを行い問題がないことを確認する。

7. KVM と cockpit をインストールして使えるようにする

KVM 動作に必要なものをインストールする。

dnf install qemu-kvm libvirt virt-install virt-viewer

KVM 動作に必要なデーモンlibvirtdを起動する。ついでに自動で起動するようにする。

systemctl start libvirtd
systemctl enable libvirtd

cockpit をインストールする。cockpit-machinesは cockpit で仮想マシンを扱うために必要。

dnf install cockpit cockpit-machines

cockpit を起動する。ついでに自動で起動するようにする。

systemctl start cockpit.socket
systemctl enable cockpit.socket

cockpit にアクセスできるようにポートを開放する。(既に解放されていれば設定の必要なし。)

firewall-cmd --list-all # ファイアウォールの設定確認 cockpit用に既にポートが解放されていれば設定の必要なし
firewall-cmd --add-service=cockpit --permanent
firewall-cmd --reload

色々追加したのでサービス自動起動の確認も兼ねて再起動しておく。

reboot

設定したサービスの起動状況の確認と、cockpit の画面にアクセスできれば OK。

※ 注意
この時点だと libvirtd 自動起動の設定をしたにもかからわず自動で起動しなかった。
念のためjournalctlでログを確認したが特に問題なさそうだったのでとりあえずそのまま行く。
予想: まだ仮想マシンを作成していないから?

[root@host-al91 ~]# systemctl status libvirtd
○ libvirtd.service - Virtualization daemon
     Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: disabled)
     Active: inactive (dead)
TriggeredBy: ○ libvirtd.socket
             ○ libvirtd-tcp.socket
             ○ libvirtd-admin.socket
             ○ libvirtd-tls.socket
             ○ libvirtd-ro.socket
       Docs: man:libvirtd(8)
             https://libvirt.org

8. ストレージプールの登録

VM 用のイメージファイルを置いておくディレクトリを適当に作成する。

mkdir /vhd

cockpit にブラウザからアクセスする。
URL: http://192.168.10.xxx(ホストサーバのIPアドレス):9090

仮想マシン > ストレージプール と進み、ストレージプールの作成ボタンを押す。
以下の画像のように入力し、作成を押す。

画像1

ストレージプール画面に戻るので、作成したストレージプールを有効化する。
状態が「アクティブ」になっていれば OK。

画像2

次回

次回は VM ゲストを作成し、目的のアプリを動かす準備をする。
AlmaLinux 9.1 で自分用のストレージサーバを構築する(VM ゲスト編)