- キット各種完売。
- msBerryDAC改造情報
2022/05/20(金)Dell S150 に Software RAID で Ubuntu 22.04 をインストール
Dell PowerEdgeサーバに乗っているなんちゃってRAIDコントーラーS150を使用した状態で、Ubuntu Desktop 22.04をインストールしたメモ。
S150とは
よくあるBIOSでRAID化するだけの、実質ソフトウェアRAIDです。S150はLinuxのRAIDに対応しており、BIOSからLinuxで作成したRAID情報を参照できるようです。
つまりRAID化した状態でLinuxをインストールすることができれば、そのRAID化されたディスクから起動することも可能です。
Ubuntu Desktop 22.04のインストール
ミラーリング(RAID1)に設定する場合。
- BIOSの設定からSATAのモードを「AHCI」から「RAID」に切り替えます。
- Ubuntu Desktop 22.04をインストールイメージから起動します。
- インストールではなく「Ubuntuを試用する」を選択します。
- Terminalを開き、mdadmをインストールします。
sudo apt-get install mdadm
- ディスク全体でRAIDを構築します。
sudo mdadm --create md0 --level=1 --raid-disk=2 /dev/sda /dev/sdb
/dev/md127 として認識されます。 - この状態で、Ubuntuをインストールします。インストール先はディスク全体を削除してインストール(自動選択でmd127)です。md127に2つのパーティションが作られます。
- 「grub-install /dev/sda の実行に失敗しました」というメッセージが出たら再起動せずにウィンドウを閉じます。
- /targetにRAIDディスクの/(md127p2)がマウントされていますので、ターミナルで以下の操作をします。
sudo su cd /target mount --bind /dev dev mount --bind /sys sys mount --bind /proc proc cp /etc/resolve.conf etc/ chroot . mount /boot/efi apt install mdadm grub-install
これにより /boot/efi に必要なファイルが配置されますが、EFIブートメニューへの登録には失敗します。 - EFIブートメニューに項目を登録します。
efibootmgr -c -d /dev/md127 -p 1 -L "ubuntu" -l '\EFI\ubuntu\shimx64.efi'
あとはターミナルを抜けて普通に再起動すれば、RAID状態のディスクからUbuntuが起動します。
メモ
# EFIメニュー登録状態の確認 efibootmgr -v # EFIメニューの項目削除 efibootmgr -B -b 0001 # Software RAIDの状態確認 cat /proc/mdstat
# /etc/defult/grub GRUB_RECORDFAIL_TIMEOUT=3 GRUB_DISABLE_SUBMENU=y
カーネルだけ更新
v5.17.9の場合。
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.17.9/amd64/linux-headers-5.17.9-051709-generic_5.17.9-051709.202205180947_amd64.deb wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.17.9/amd64/linux-headers-5.17.9-051709_5.17.9-051709.202205180947_all.deb wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.17.9/amd64/linux-image-unsigned-5.17.9-051709-generic_5.17.9-051709.202205180947_amd64.deb wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.17.9/amd64/linux-modules-5.17.9-051709-generic_5.17.9-051709.202205180947_amd64.deb wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.17.9/amd64/linux-modules-iwlwifi-5.17.9-051709-generic_5.17.9-051709.202205180947_amd64.deb dpgk -i *.deb
2010/05/24(月)Ubuntu 10.04 LTS で NILFS on RAID1 (nilfs2)
LVMが思ったよりも使えなかったのでログ構造ファイルシステム(LFS)と言われるNILFS2を試してみた。
- 書き込み操作はほぼすべて追記扱い。
- ファイルシステムレベルでのスナップショット機能(自動/手動)。
導入
LVMを構成していた /dev/md5 をそのままNILFSに割り当てました。
# apt-get install nilfs2-tools
# mkfs -t nilfs2 /dev/md5 # mount -t nilfs2 /dev/md5 /mnt
特に難しいことはありません。
Ubuntu 10.04では起動時にマウントできない
mountall コマンドがファイルタイプ nilfs2 を認識できないので、/etc/init/mountall.conf を改変しました。
script . /etc/default/rcS [ -f /forcefsck ] && force_fsck="--force-fsck" [ "$FSCKFIX" = "yes" ] && fsck_fix="--fsck-fix" mountall --daemon $force_fsck $fsck_fix mount /home end script
運用
書き込みをするごとに自動でチェックポイントが生成されます。チェックポイントはデフォルトでは1時間以上経過するとだんだん消されますが、スナップショットとして保存しておくことも可能です。
/etc/nilfs_cleanerd.conf の設定を再度読み込ませるには次のようにします。
# mount -t nilfs2 /dev/md5 on /home type nilfs2 (rw,relatime,gcpid=1008)
で表示される PID にSIGHUPを送ります。
# kill -SIGHUP 1008
チェックポイント一覧 # lscp チェックポイントの新しい方から5件 # lscp -rn 10 チェックポイントをスナップショットに # chcp ss 4800 スナップショットをチェックポイントに # chcp cp 4800 現在の状態をスナップショットとして保存する # mkcp -s 指定番号のチェックポイントを消す # rmcp 4300 # rmcp 1..4000
特定のチェックポイントをマウントする場合は、まずチェックポイントNoをスナップショットにします。その後で、
# mount -t nilfs2 -r -o cp=4855 /dev/md5 /mnt
min_clean_segments/max_clean_segmentsの罠
いつの間にか、nilfs_cleanerd.confに設定が増えていました。
# Minimum number of clean segments # 0 = continuous cleaning # > 0 = pause cleaning until less segments are available min_clean_segments 10% # Maximum number of clean segments max_clean_segments 20%
protection_periodとAND条件らしく、設定時間を経過しても、永遠とログが残り続けてディスクが減ってきていました……。
- protection_period
- 指定秒数経過するまで、チェックポイントを削除せずに保護します。
- min_clean_segments
- 指定した値(容量か%)より空き容量が少なくなるまで、GC(チェックポイントの回収)を停止します。0なら継続GC(無視)。
- max_clean_segments
- 指定した値より空き容量が多い場合、min_clean_segments(上の設定)以下になるまでGCを停止します。0なら継続GC。一度チェックポイントのGCを初めたとき、どこまで回収するかを設定します。max_clean_segmentsに指定した空き容量になった時点でGCを止めるという設定のようです。
容量の許す限りログを残すのはありがたいとも言えますが、ディスクの実際の空き容量をある程度把握(ないしは確保)しておきたい場合には不便です。そんなわけで、昔と同じ動作を期待する場合、min_clean_segments/max_clean_segmentsの両方を0に設定する必要があります。
2008/05/22(木)Linuxでmdadmを使ったソフトウェアRAIDの構築・管理メモ
Linux(Ubuntu 10.04 LTS Server)で mdadm を使用してソフトウェアRAIDを構築・管理する方法について述べます。特に既に稼働中のLinuxにHDDを追加してあとからRAID1を構築する方法を述べます。