本文へ移動
ちとせの技術ブログ

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

旧ブログ記事のアーカイブです

自宅鯖(旧)

自宅鯖 構想 2023

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

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

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

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

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

Terminal window
ssh-keygen -t ed25519

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

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

Terminal window
systemctl restart sshd

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

Terminal window
ssh root@192.168.10.xxx

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

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

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

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

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

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

mdadmをインストールする。

Terminal window
dnf install mdadm

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

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

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

Terminal window
[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 でフォーマット。

Terminal window
mkfs -t xfs -f /dev/md0

仮想ブリッジ作成。

Terminal window
nmcli c add type bridge con-name bridge0 ifname bridge0

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

Terminal window
nmcli c m enp2s0 master bridge0

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

Terminal window
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 の再起動を行う。

Terminal window
nmcli c up bridge0; nmcli c down enp2s0; nmcli c up enp2s0

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

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

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

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

Terminal window
systemctl start libvirtd
systemctl enable libvirtd

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

Terminal window
dnf install cockpit cockpit-machines

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

Terminal window
systemctl start cockpit.socket
systemctl enable cockpit.socket

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

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

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

Terminal window
reboot

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

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

Terminal window
[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

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

Terminal window
mkdir /vhd

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

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

画像1

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

画像2

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