エントリー

カテゴリー「Nano Pi NEO」の検索結果は以下のとおりです。

リセット前に状態確認

新Webサーバの構築中でDNS・DHCPサーバであるnanopiシステムを調整しリセットする

その前に状態の確認を行ったところ問題なし

ws20220610_001.png

メモ

  • リセット前145日連続稼働
  • システムダウンが発生して再構成した際にユーザIDが統一されていなかったので調整
ユーザーIDの変更・グループIDの変更
# usermod -u UID username
# usermod -g groupname username

# groupmod -g GID groupname

ユーザー名の変更・グループ名の変更・HOMEの変更
# usermod -l newname oldname
# groupmod -n newgroup oldgroup
# usermod -d /home/user1 -m user1

対応するグループが存在しないオブジェクトがないかチェック
# find / -nouser
# find / -nogroup
  • DHCPが自動起動しない(エラー発生,手動起動は問題ない)
$ systemctl status isc-dhcp-server

isc-dhcp-server.service - LSB: DHCP server
Loaded: loaded (/etc/init.d/isc-dhcp-server; generated)
Active: failed (Result: exit-code) since Sat 2022-06-11 17:16:16 JST; 49s ago
Docs: man:systemd-sysv-generator(8)
CPU: 252ms

6月 11 17:16:14 nanopineo dhcpd[1140]: before submitting a bug. These pages explain the proper
6月 11 17:16:14 nanopineo dhcpd[1140]: process and the information we find helpful for debugging.
6月 11 17:16:14 nanopineo dhcpd[1140]:
6月 11 17:16:14 nanopineo dhcpd[1140]: exiting.
6月 11 17:16:16 nanopineo isc-dhcp-server[996]: Starting ISC DHCPv4 server: dhcpdcheck syslog for diagnostics. ...
6月 11 17:16:16 nanopineo isc-dhcp-server[1230]: failed!
6月 11 17:16:16 nanopineo isc-dhcp-server[1231]: failed!
6月 11 17:16:16 nanopineo systemd[1]: isc-dhcp-server.service: Control process exited, code=exited, status=1/FAILURE
6月 11 17:16:16 nanopineo systemd[1]: isc-dhcp-server.service: Failed with result 'exit-code'.
6月 11 17:16:16 nanopineo systemd[1]: Failed to start LSB: DHCP server.

$ sudo service isc-dhcp-server start
$ systemctl status isc-dhcp-server

● isc-dhcp-server.service - LSB: DHCP server
Loaded: loaded (/etc/init.d/isc-dhcp-server; generated)
Active: active (running) since Sat 2022-06-11 17:17:27 JST; 6s ago
Docs: man:systemd-sysv-generator(8)
Process: 1615 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=0/SUCCESS)
Tasks: 4 (limit: 905)
Memory: 2.9M
CPU: 260ms
CGroup: /system.slice/isc-dhcp-server.service
mq1627 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf eth0

6月 11 17:17:25 nanopineo dhcpd[1627]: Internet Systems Consortium DHCP Server 4.4.1
6月 11 17:17:25 nanopineo dhcpd[1627]: Copyright 2004-2018 Internet Systems Consortium.
6月 11 17:17:25 nanopineo dhcpd[1627]: All rights reserved.
6月 11 17:17:25 nanopineo dhcpd[1627]: For info, please visit https://www.isc.org/software/dhcp/
6月 11 17:17:25 nanopineo dhcpd[1627]: Wrote 0 deleted host decls to leases file.
6月 11 17:17:25 nanopineo dhcpd[1627]: Wrote 0 new dynamic host decls to leases file.
6月 11 17:17:25 nanopineo dhcpd[1627]: Wrote 27 leases to leases file.
6月 11 17:17:25 nanopineo dhcpd[1627]: Server starting service.
6月 11 17:17:27 nanopineo isc-dhcp-server[1615]: Starting ISC DHCPv4 server: dhcpd.
6月 11 17:17:27 nanopineo systemd[1]: Started LSB: DHCP server.

 

新WebサーバのUPSを設計

現在は異常なく動作しているが,OSの更新もなくハードウェアも古く流石にやばそうなのでWebサーバを更新(コツコツやる予定)

CPUボード

CPUは既に準備している「Nano Pi NEO2」と専用ケースを使う

IMG_20181215_213250855.jpg

当初はケースにFANが必要かと考え加工するつもりだったがSSD(1GB)を使うつもりなのでFANは無しの予定(以下は120GBで試験中の物)

IMG_20181209_175709473.jpg

UPS

この街は瞬断どころか停電することがあるのでUPSが必須

初夏には一度直ぐ側で雷サージも起きて4時間近く停電になったこともある(落雷だったら生きていなかったかも)

fig20220528001.png

バッテリーは単4サイズのニッケル水素充電池を考えている

IMG_20220530_192208.jpg

  • 必要電圧は12V(10V位で大丈夫なので)入力を12V,出力を10~11.5V位にする
  • ニッケル水素充電池は8本の9.6VにしてDCDCで出力を調整(ニッケル水素充電池はスポット溶接で組電池化)
  • 充電は50~80mAの定電流,満充電電圧は11~12V位になる

NanoPi NEOサーバを復旧させる

優先すべきだが予定外の事態だったので後回しになってしまった

原因を探る

サーバからmicroSDカードを取り出してバックアップ機にセットしてコンソールで調査

IMG_20220116_132241.jpg

再起動しないのでネックは何かと思っていたら,microSDカードの異常というかRO(リードオンリー)ロックになっていた

コンソール出力ではrootファイルシステムのfsckで異常となり起動せずメンテナンスモードになっている

U-Boot SPL 2021.04-armbian (May 06 2021 - 17:50:40 +0000)
DRAM: 512 MiB
Trying to boot from MMC1



Starting kernel ...

Loading, please wait...
Starting version 241
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... Scanning for Btrfs filesystems
done.
Begin: Will now check root file system ... fsck from util-linux 2.33.1
[/sbin/fsck.ext4 (1) -- /dev/mmcblk0p1] fsck.ext4 -a -C0 /dev/mmcblk0p1
fsck.ext4: Read-only file system while trying to open /dev/mmcblk0p1
Disk write-protected; use the -n option to do a read-only
check of the device.
fsck exited with status code 8
done.
Warning: File system check failed but did not detect errors
mount: Read-only file system
Failed to mount /dev/mmcblk0p1 as root file system.
(initramfs)

手動でrootファイルシステムをチェックしたところROのため書込みできない事態となっている

(initramfs) fsck.ext4 -n /dev/mmcblk0p1
e2fsck 1.44.5 (15-Dec-2018)
Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/mmcblk0p1: clean, 46517/2789280 files, 740918/7666688 blocks
(initramfs)

この現象は前にもあって原因はメディアが強制的に(ROにして)書込みできないよう処理していることで起こると思われ「メディア自体の異常」の要因もあるが,ほぼ間違いなく「メディアの書込み壽命」だと考える

実際は本当の壽命ということでフラッシュメモリ自体の書込みエラーで発生させているのではなく,書込み回数の上限を決めておいて超えたら記録内容を保護するためROにしているのだろうと考える

つまり,まだ読むことは可能ということである(実際に全部読める)

利用していたmicroSDは以下の「KLEVV NEO」という安価なメモリで,9月から4~5箇月とうことなので約150日間となる

IMG_20220116_133551.jpg

microSDには書込み回数があるのでいつかはエラーになると考えていたが32GBもあり僅かなログの書込みだけなのであまりにも短すぎる

MLCフラッシュは約1万回の書込みが可能であることが(かなり以前に)公表されている(今だともっと回数が増えてるかも)

論理的には書込み回数が1万回として32GBなら,32GB×10000=320000GB(320TB)の(ワンタイム)記録ができるということになる(実際は書込み単位があるので少なくなる)

これを150(日)で割ると,320000GB÷150=2133GBとなり毎日約2TBもの書込みがあったことになるが・・・

→ 連続でも書込みは最低10MB/s,最大は良くても100MB/s位として,100(MB)×3600(s)×24(H)=8640000(MB)=8640(GB)

かなり譲って1/100の,20GB/日としても(ほとんどがログになるので)考えられない書込み量である

このあたりの書込み量も予想試算して1年以上余裕で持つだろうと考えていたので想定外であった

前回も「KLEVV NEO」のmicroSDで発生しており,この時は書き込むことは起きていないのにROになってしまった(マイクロSDカードが壊れた

今回の件も含め,このメーカーのmicroSDはもう使用しないほうが賢明だろう(メディアは永久保証となっているけど交換しても使えない物はいらない)

最初の復旧手順

microSDへの書込みはできないが読むことはできるので別のmicroSDへデットコピーして復旧させる

新しいmicroSDは「Gigastone」にした

IMG_20220116_142334.jpg

ところが,コピーの段階で2つのmicroSDの(セクター)サイズが異なることが判明(これには驚いたが)

「KLEVV NEO」の方が「Gigastone」よりセクター数が多いのである

逆なら問題ないのだが,しかたないので無視してデットコピーした・・・けど・・・やはり途中で起動停止

(initramfs) fsck.ext4 /dev/mmcblk0p1
e2fsck 1.44.5 (15-Dec-2018)
The filesystem size (according to the superblock) is 7666688 blocks
The physical size of the device is 7632640 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort<y>? yes
(initramfs)

34048 blocksも食い違っていてfsckは(ファイルシステムが破壊されていると判断して)動作しなかった

残念ながらデットコピーでの復旧は失敗に終わる

さて,どうやってNanoPi NEOサーバを復旧させるかだが,時間待ちもあったこともあり再構築とコピー復活の2つの手段を実施

システムの再構築(手段1)

前回のOSバージョンも置いていたが,新しいのがリリースされていたので新しい方で再構築する(要するに全部作り直し)

最新OSイメージ: Armbian_21.08.1_Nanopineo_bullseye_current_5.10.60.img

ネックは設定のバックアップで本当の最新の設定へ戻せるかである(なのでメディアから設定データを取り出し検証する必要がある → これが復活手順にもなる)

IMG_20220116_142320.jpg

設定は(NanoPi NEOのサーバ化(ソフトウェア))で記録されている通りで不足や注意事項を追加

・armbianの最初の起動(root/1234)時にsudo権限の管理者用のユーザ追加を行うが,このユーザのuidが1000になる

・既にセットアップされているパッケージがあった(問題になる事はない)

・NTPは前回の設定方法では動作しない(現在,未解決)

・bindについては記録の記事から変更がある(バックアップの利用で問題なし)

・dhcpが起動しない問題で以下のように(ターミナルではカラム落ちして)表示される(前回もあったが記録されていないので注意)

● isc-dhcp-server.service - LSB: DHCP server
Loaded: loaded (/etc/init.d/isc-dhcp-server; generated)
Active: failed (Result: exit-code) since Sun 2022-01-16 19:53:43 JST; 48s ago
Docs: man:systemd-sysv-generator(8)
Process: 8928 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=1/FAILURE)
Tasks: 12 (limit: 905)
Memory: 8.5M
CPU: 406ms
CGroup: /system.slice/isc-dhcp-server.service
tq7964 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf
tq8339 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf
mq8943 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf

1月 16 19:53:41 nanopineo dhcpd[8955]: exiting.
1月 16 19:53:43 nanopineo isc-dhcp-server[8928]: Starting ISC DHCPv6 server: dhcpd6check syslog for diagnostics. ...
1月 16 19:53:43 nanopineo isc-dhcp-server[8960]: failed!
1月 16 19:53:43 nanopineo isc-dhcp-server[8961]: failed!
1月 16 19:53:43 nanopineo systemd[1]: isc-dhcp-server.service: Control process exited, code=exited, status=1/FAILURE
1月 16 19:53:43 nanopineo systemd[1]: isc-dhcp-server.service: Failed with result 'exit-code'.
1月 16 19:53:43 nanopineo systemd[1]: isc-dhcp-server.service: Unit process 7964 (dhcpd) remains running after unit stopped.
1月 16 19:53:43 nanopineo systemd[1]: isc-dhcp-server.service: Unit process 8339 (dhcpd) remains running after unit stopped.
1月 16 19:53:43 nanopineo systemd[1]: isc-dhcp-server.service: Unit process 8943 (dhcpd) remains running after unit stopped.
1月 16 19:53:43 nanopineo systemd[1]: Failed to start LSB: DHCP server.

 これは「/etc/default/isc-dhcp-server」を修正する前にdhcp serverを起動すると「/var/run/dhcpd.pid」が残存してserverが再起動しないためで,正常にserverが起動しない場合にロックファイルを削除しないバグがあると思われる

パーティーションコピーで復旧(手段2)

resize2fsを使えばファイスシステムのサイズを変えられるので旧microSDからシステム部分だけ取り出してサイズを変更して新microSDへ書き込めば復旧できる

この場合,元のOSイメージでの復旧なので設定した情報は最新,さらに設定内容を参照したりバックアップすることができる

ただし別途microSDを操作するためのlinuxシステムが必要となる(エミュで遊ぶため構築していたUbuntuDesktopを利用した)

今回は1つのパーティションなので手間が掛からなかった

①Ubuntuで旧microSDを接続してデバイス名を確認(/dev/sdc)

※デバイス名の確認方法として,接続前に「fdisk -l」でデバイスリストを表示させて,接続後に再度リストに増えたデバイスが対象

パーティションを確認すると1つだけある

# fdisk -l /dev/sdc
ディスク /dev/sdc: 29.6 GiB, 31724666880 バイト, 61962240 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0xc236f75e

デバイス 起動 開始位置 最後から セクタ サイズ Id タイプ
/dev/sdc1 8192 61341695 61333504 29.3G 83 Linux
#

②/dev/sdc1をコピーする

# dd if=/dev/sdc1 of=disk.img bs=1G

# ls -l
-rw-r--r-- 1 root root 31402754048 1月 16 17:45 disk.img
#

③fsckで修正

# e2fsck -f disk.img

④ファイルシステムをリサイズ(8GBとした)

# resize2fs disk.img 8G
resize2fs 1.44.1 (24-Mar-2018)
Resizing the filesystem on disk.img to 2097152 (4k) blocks.
The filesystem on disk.img is now 2097152 (4k) blocks long.
# ls -l
-rw-r--r-- 1 root root 8589934592 1月 16 20:00 disk.img
#

disk.imgはファイルシステムなのでmountして中身を参照することができる(必要ならファイルをバックアップする)

# mount disk.img /mnt
# ls -l /mnt
合計 80
lrwxrwxrwx 1 root root 7 5月 6 2021 bin -> usr/bin
drwxr-xr-x 4 root root 4096 9月 5 20:28 boot
drwxr-xr-x 2 root root 4096 5月 8 2021 dev
drwxr-xr-x 96 root root 4096 9月 27 17:53 etc
drwxr-xr-x 13 root root 4096 6月 26 2021 home
lrwxrwxrwx 1 root root 7 5月 6 2021 lib -> usr/lib
drwx------ 2 root root 16384 5月 8 2021 lost+found
drwxr-xr-x 2 root root 4096 5月 6 2021 media
drwxr-xr-x 2 root root 4096 5月 6 2021 mnt
drwxr-xr-x 2 root root 4096 5月 6 2021 opt
drwxr-xr-x 2 root root 4096 3月 20 2021 proc
drwx------ 5 root root 4096 9月 7 20:43 root
drwxr-xr-x 3 root root 4096 5月 8 2021 run
lrwxrwxrwx 1 root root 8 5月 6 2021 sbin -> usr/sbin
drwxrwxr-x 2 root root 4096 5月 8 2021 selinux
drwxr-xr-x 3 root root 4096 8月 29 15:27 srv
drwxr-xr-x 2 root root 4096 3月 20 2021 sys
drwxrwxrwt 2 root root 4096 5月 8 2021 tmp
drwxr-xr-x 10 root root 4096 5月 6 2021 usr
drwxr-xr-x 12 root root 4096 8月 28 19:53 var
#

⑤新microSDを起動できるようにする(IPLを書き込むとかBoot strapできるようにするという)

IPLのみ書き込む方法があるのだけど思い出せなかったので(DLして初期に書き込む)OSイメージを書き込む

何で書き込んでも良いが,Windows10で利用している「Win32DiskImager」を使った

WS_20220116_01.png

⑥Ubuntuで新microSDを接続してパーティションを操作する

パーティション1を削除して新規に8Gでパーティション1を作成(つまりパーティーションサイズを変更)

# fdisk /dev/sdc

fdisk (util-linux 2.31.1) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。


コマンド (m でヘルプ): p
ディスク /dev/sdc: 29.1 GiB, 31267487744 バイト, 61069312 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0xc236f75e

デバイス 起動 開始位置 最後から セクタ サイズ Id タイプ
/dev/sdc1 8192 2744319 2736128 1.3G 83 Linux

コマンド (m でヘルプ): d
パーティション 1 を選択
パーティション 1 を削除しました。

コマンド (m でヘルプ): n
パーティションタイプ
p 基本パーティション (0 プライマリ, 0 拡張, 4 空き)
e 拡張領域 (論理パーティションが入ります)
選択 (既定値 p): p
最初のセクタ (2048-61069311, 既定値 2048): 2048
最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (2048-61069311, 既定値 61069311): +8G

新しいパーティション 1 をタイプ Linux、サイズ 8 GiB で作成しました。

コマンド (m でヘルプ): w
パーティション情報が変更されました。
ioctl() を呼び出してパーティション情報を再読み込みします。
ディスクを同期しています。

#

⑦リサイズしたファイルシステムを書き込む

# disk.img of=/dev/sdc1 bs=64M
128+0 レコード入力
128+0 レコード出力
8589934592 bytes (8.6 GB, 8.0 GiB) copied, 549.08 s, 15.6 MB/s
#

⑧起動確認

U-Boot SPL 2021.04-armbian (May 06 2021 - 17:50:40 +0000)
DRAM: 512 MiB
Trying to boot from MMC1



Starting kernel ...

Loading, please wait...
Starting version 241
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... Scanning for Btrfs filesystems
done.
Begin: Will now check root file system ... fsck from util-linux 2.33.1
[/sbin/fsck.ext4 (1) -- /dev/mmcblk0p1] fsck.ext4 -a -C0 /dev/mmcblk0p1
/dev/mmcblk0p1: clean, 46546/762880 files, 611829/2097152 blocks
done.
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.

Welcome to Armbian 21.08.1 Buster!



[ OK ] Started Authorization Manager.
[FAILED] Failed to start LSB: DHCP server.
See 'systemctl status isc-dhcp-server.service' for details.
[ OK ] Started LSB: RPi-Monitor daemon.
[ OK ] Reached target Multi-User System.
[ OK ] Reached target Graphical Interface.
Starting Update UTMP about System Runlevel Changes...
[ OK ] Started Update UTMP about System Runlevel Changes.

Armbian 21.08.1 Buster ttyS0

nanopi login:

(※)ネットワークに接続していないのでDHCPがエラーとなっている

復旧

結果,新しいOSバージョンで運用したかったので手段1で復旧させている

バックアップ用に手段2のmicroSDは保管

NanoPi NEOサーバ異常による通信障害発生

タブレットの無線LANが接続できず調査したところDNS・DHCPサーバーの異常であった

つい最近長い間確認してなかったので心配して確認したところ問題なしだったのだが突如としてダウンしたようだ

再起動しても復旧しなかったため重大な問題であるが,旧対応サーバであるWebサーバを代替えとして一時的に復旧できている

これは即座に対応できる代替えサーバを準備しておかないとならないようだ

二重化も視野にいれてみるかな

ページ移動

  • ページ
  • 1
  • 2
  • 3
  • 4
  • 5

ユーティリティ

検索

エントリー検索フォーム
キーワード

過去ログ

Feed