我が家の録画サーバーことProLiant DL160はOSごとRAID5のアレイ上に置くという運用をしていたのですが,あまりにもランダムアクセス性能が低く,加えてチェックや同期が入ると頻繁にハングアップするという致命的な不具合(?)も持ち合わせていたため,コンテナやコンテンツはそのままOSのみHDDシングル運用とする事にしました.
現在の状態
Mount Point | Disk |
---|---|
/ | /dev/md0p1 |
/boot | /dev/sdb2 |
/boot/efi | /dev/sdb1 |
/var/rec | /dev/sda1 |
/var/lib/machines/jellyfin | /var/sdf1 |
ちょっと複雑ですが,要はRAIDアレイがrootfs,/boot周りはUSBメモリ,Jellyfinコンテナと録画置き場には専用のHDDを付与という状態になってます.
RAIDアレイから起動するにはベーシックなメディアが必要なのでこの時点でもうめんどくさいという…
理想の状態
新しいディスクを追加するお金もないのでJellyfin専用のディスクをrootfsにしてコンテナは直置きという風に変更しようと思います.
また,この際ブート用USBメモリを取り払ってrootと同じディスクに置くことにします.
図にするとこんな感じ
Mount Point | Disk |
---|---|
/ | /dev/sdf3 |
/boot | /dev/sdf2 |
/boot/efi | /dev/sdf1 |
/oldroot | /dev/md0p1 |
/var/rec | /dev/sda1 |
/var/lib/machines/epgstation | /oldroot/var/lib/machines/epgstation |
/var/lib/machines/gitea | /oldroot/var/lib/machines/gitea |
/var/data | /oldroot/var/data |
下3つはどういう事かというと,bindでoldrootから持ってきます.これによって大きな変更なくRAIDと共存できるという寸法です.
ではこの状態に持っていくのを目標に作業を行いましょう.
今更ですがOSはUbuntu Server 20.04 LTSです.
1. 新しいディスクを用意
先にjellyfinはアーカイブにして退避しときます.
|
|
パーティショニングを行います. ディスクをsdfとすると,
パーティション | サイズ | フォーマット | 用途 |
---|---|---|---|
sdf1 | 512M | vfat | ESP |
sdf2 | 2G | ext4 | boot |
sdf3 | 残り全部 | ext4 | root |
こんな感じに.まあお好みで.
2. コピー
フォーマットが完了したら,いい感じにコピーしていきます.
コピーといえばcpを思い浮かべるかもしれませんが,特定のディレクトリを除外するのが面倒らしいのでrsyncを使います.
|
|
3. 各種設定
新rootfsができたので合わせて設定していきます.
3.1 fstab
ここは各自で完全に違うと思うのであれですが,/と/bootと/boot/efiを新しい物のUUIDに変えます.
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/md0p1 during curtin installation
PARTUUID="" / ext4 defaults 0 1
# /boot was on /dev/sdb2 during curtin installation
PARTUUID="" /boot ext4 defaults 0 1
# /boot/efi was on /dev/sdb1 during curtin installation
PARTUUID="" /boot/efi vfat defaults 0 1
#/swap.img none swap sw 0 0
/dev/disk/by-id/md-uuid--part1 /oldroot/ ext4 defaults 0 1
#binds
/oldroot/var/data /var/data none rw,bind 0 0
/oldroot/var/lib/machines/gitea /var/lib/machines/gitea none rw,bind 0 0
/oldroot/var/lib/machines/epgstation /var/lib/machines/epgstation none rw,bind 0 0
#rec
PARTUUID="" /var/rec ext4 rw,relatime 0 2
3.2 GRUB
grubのエントリがすべて古い物を向いているので変えます.
|
|
md上のUbuntuが登録されてしまいますが実害は無いのでスルー.
あとはアーカイブにしたJellyfinを書き戻すとか.(省略)
いざ再起動
|
|
どうなるかはお楽しみです.
私の場合マウントポイント作り忘れとかでエラー出ました.
しかしEFIになってからブートローダーがコピーだけで入って助かりますね.しかもたくさんのエントリを持てるという.
初期の頃は難しくてだめだわとか思ってましたがもう今では逆にBIOS-BOOTをやりたくない笑
ちなみに,現在のrootfsのディスクがこちら
留め方適当すぎてウケる(ウケない)
しかもAppleの取り外し品という.まあHGSTなら大丈夫だろう…