2021/01/05
今回できたこと
Raspberry Piクラスタの構築(つづき)。
Docker入りRaspberry Pi OSイメージの作成。
今後の作業
Raspberry Pi OSクラスタのK8sからK3sの移行。
お約束
文章化作業
定例作業
Raspberry Piの温度チェック用スクリプトの作成
Raspberry Piで温度を調べるたびにコマンドラインで入力するのが面倒になってきたので、以下のようなスクリプトを作成した。
code:~/bin/health.sh
while true
do
vcgencmd measure_temp
vcgencmd measure_clock arm
vcgencmd get_throttled
sleep 10
done
Raspbery Pi OSの~/.profileでは、${HOME}にbin/ディレクトリがあると、自動的にPATHに追加されるので、このスクリプトを作成するだけで、health.shとして利用可能になる。
Raspberry Piクラスタの温度特性
Raspberry Piクラスタで5つのファンがフル実装になったことと、新たにRaspberry Pi 4 (4GB)とRaspberry Pi 3+が追加されたため、2020/11/27と同様にしてstressによる温度特性の調査を行う。 table:5台構成の温度特性
段数(上から) ホスト名 高負荷時温度(C) 備考
1段目 設定中 63前後 Grove HATがついており、Fanとの距離も大きい
2段目 master-rpi4 60前後
3段目 worker-rpi4 57前後
4段目 設定中 58前後
5段目 worker-rpi3 60前後
熱がこもると思われる中段でも、60度前後であり、ファンの効果があると考えられる。
Dockerのインストールまで終わったRaspberry Piイメージの作成
K8sに関しては、負荷があまりにも高いため、後日K3sに置き換える予定のため、入れなかった。
IPアドレスの衝突を防ぐため、起動時のIPアドレスはDHCPで取得するものとして、固定IPの設定はコメントアウトしている。
code:/etc/dhcpcd.conf
#### Setup correct IP address
#static ip_address=192.168.3.104/24 #static domain_name_servers=8.8.8.8 #static ip_address=192.168.2.104/24 #static domain_name_servers=8.8.8.8 また、以下のホスト名の設定も変更する必要がある。
code:/etc/hosts
127.0.1.1 docker-image
code:/etc/hostname
docker-image
このスクリプトでは、コピー元のSDが/mnt/bootと/mnt/rootfsに、作成されたディスクイメージを保存するSD/USBメモリが/mnt/MYDISKに、既にマウントされていることを仮定しているため、以下のようにマウントした。
code:shell
$ sudo mkdir /media/pi/rootfs
$ sudo mkdir /media/pi/boot
$ sudo mkdir /media/pi/MYDISK
$ sudo mount /dev/sdb1 /media/pi/boot
$ sudo mount /dev/sdb2 /media/pi/rootfs
$ sudo mount /dev/sdc1 /media/pi/MYDISK/
スクリプトでは、/media/pi/MYDISK/にバックアップイメージをraspi-%Y-%m-%d-%H-%M.img という名前のファイルに出力するようになっているが、強制的に/mnt/に出力したかったため、以下のように変更を行った。
code:backup_shrink_image.py.diff
--- backup_shrink_image.py.20210105 2021-01-05 13:37:43.907878029 +0900
+++ backup_shrink_image.py 2021-01-05 13:51:45.089681727 +0900
@@ -164,7 +164,8 @@
# バックアップ
logger.critical("バックアップ中です、そのままお待ち下さい")
+ backup(src"dev", "/mnt/", fileName, count) finally:
# パーティション変更(戻す)
完成したイメージは、以下の大きさとなった。
code:shell
$ ls -l /mnt/raspi-2021-01-05-13-51.img
-rwxr-xr-x 1 pi pi 4294967295 1月 5 14:06 /mnt/raspi-2021-01-05-13-51.img
このディスクイメージを、以下のように別のSDに焼いた。
code:shell
$ sudo dd if=/mnt/raspi-2021-01-05-13-51.img of=/dev/sdb bs=4096
1048575+1 レコード入力
1048575+1 レコード出力
4294967295 bytes (4.3 GB, 4.0 GiB) copied, 449.935 s, 9.5 MB/s
ディスクイメージが焼かれたSDをマウントして確認すると、shrinkされた大きさであることがわかった。
code:shell
$ sudo mount /dev/sdb1 /media/pi/boot/
$ sudo mount /dev/sdb2 /media/pi/rootfs/
$ df|grep sd
/dev/sda1 30017184 4197920 25819264 14% /mnt
/dev/sdb1 258095 55948 202148 22% /media/pi/boot
/dev/sdb2 3944072 3785308 0 100% /media/pi/rootfs
このイメージでブートすると、ディスクは拡張されていない状態である。
code:shell
$ df
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
/dev/root 3944072 3785536 0 100% /
devtmpfs 1827800 0 1827800 0% /dev
tmpfs 1959896 0 1959896 0% /dev/shm
tmpfs 1959896 8720 1951176 1% /run
tmpfs 5120 4 5116 1% /run/lock
tmpfs 1959896 0 1959896 0% /sys/fs/cgroup
/dev/mmcblk0p1 258095 55948 202148 22% /boot
tmpfs 391976 0 391976 0% /run/user/1000
ファイルシステムの拡張を行うため、raspi-configで、6 Advanced Options -> A1 Expand Filesystem を選択し、再起動する。
再起動後、ファイルシステムが拡張されていることが確認できる。
code:shell
$ df
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
/dev/root 14647928 3787896 10241388 27% /
devtmpfs 1827800 0 1827800 0% /dev
tmpfs 1959896 0 1959896 0% /dev/shm
tmpfs 1959896 8716 1951180 1% /run
tmpfs 5120 4 5116 1% /run/lock
tmpfs 1959896 0 1959896 0% /sys/fs/cgroup
/dev/mmcblk0p1 258095 55948 202147 22% /boot
tmpfs 391976 0 391976 0% /run/user/1000
変更が必要なファイルを以下のように修正する。
ここでは、修正が必要な設定情報は以下のように仮定している。
ホスト名: worker-rpi4-2
固定IP: 192.168.3.104/24, 192.168.2.104/24
code:/etc/hostname
worker-rpi4-2
code:/etc/hosts
127.0.1.1 worker-rpi4-2
code:/etc/dhcpcd.conf
#### Setup correct IP address
interface wlan0
static ip_address=192.168.3.104/24
static routers=192.168.3.1
static domain_name_servers=8.8.8.8
interface eth0
static ip_address=192.168.2.104/24
static routers=192.168.2.1
static domain_name_servers=8.8.8.8
再起動を行う。
code:shell
$ sudo shutdown -r now
Raspberry Pi OSのcmdline.txtでroot設定を壊した場合の復旧方法
Raspberry Pi OSの/boot/cmdline.txtでは、Linuxのルートファイルシステムをroot=PARTUUID=d2960e88-02の形式で指定しており、他のところの設定から単純にコピーしてしまうと、bootできない状態となる。
これに関してfacebookで情報をいただいた。
方法は、以下のように二つある。
今後、ディスクイメージをコピーしていくため、PARTUUIDが変わる可能性があると思われるため、とりあえず1の方法で設定する。
このイメージをUSBメモリにコピーして、USBメモリからブートする時に問題が生じる可能性があることには注意が必要である。