Armadilloフォーラム

長期化同時にPLCとのシリアル通信、LED点灯制御のみ行えなくなる

ohashi_kento

2021年11月22日 14時33分

お世話になっております。大橋と申します。

Armadillo-640を使用して、外部センサー、PLCなどと通信するプログラムの動作試験を行っているのですが、
長期間稼働させた場合に、次のような症状を起こしてしまいます。

使用方法:
・近赤外分光センサー(ケイエルブイ製)とUART通信(シリアル:ttyACM0)して、光データを計測して取込む。
・PLC(Pana製)とRS232C通信(シリアル:ttymxc2)して、光データの計測指示等をPLCから受信し、
 近赤外分光センサーで計測した光データから計測対象の成分含有量を計算し、PLCへ送信する。
・LED赤、緑を点灯/点滅制御して、動作状態を通知する。

症状:
・PLCとの通信ができなくなってしまう。(送受信ともに)
・LED赤、緑の点灯/点滅が出来なくなってしまう。
※症状は、早い時で電源ONから2日以内で発生し、遅い時で1、2週間経ってから発生する場合もあります。

添付したsyslogを確認したところ、errno=28が検出されていたためdfコマンドでディスクの使用状況を調べました。
この結果、"/dev/mmcblk0p2"の使用率が100%となっていたのですが、今回の症状と関係があるのかわかりません。

考えられる原因や対応策など、ご教示願います。

dfの実行結果:

 Filesystem 1K-blocks Used Available Use% Mounted on
 udev 10240 0 10240 0% /dev
 tmpfs 102076 11728 90348 12% /run
 /dev/mmcblk0p2 3424176 3407792 0 100% /
 tmpfs 255188 0 255188 0% /dev/shm
 tmpfs 5120 0 5120 0% /run/lock
 tmpfs 255188 0 255188 0% /sys/fs/cgroup
 /dev/mmcblk0gp0 128 128 0 100% /opt/license
 /dev/sda1 15149072 19056 15130016 1% /mnt
 tmpfs 51036 0 51036 0% /run/user/0
ファイル ファイルの説明
syslog.txt
コメント

at_shiita.ishigaki

2021年11月24日 16時28分

石垣です。

> この結果、"/dev/mmcblk0p2"の使用率が100%となっていたのですが、今回の症状と関係があるのかわかりません。

今回の症状が/dev/mmcblk0p2の使用率と関係していることが現時点では断定できませんが、
関係している可能性もあるので、どのファイルの容量が大きいかを調べ、症状に影響があるか確認したいと思います。
つきましては、以下のコマンドを実行して頂き、結果を添付して頂きたいです。

[armadillo ~]# du / -a | sort -rn | head -100

naotake_ito

2021年11月25日 10時40分

> 石垣です。
>
> > この結果、"/dev/mmcblk0p2"の使用率が100%となっていたのですが、今回の症状と関係があるのかわかりません。
>
> 今回の症状が/dev/mmcblk0p2の使用率と関係していることが現時点では断定できませんが、
> 関係している可能性もあるので、どのファイルの容量が大きいかを調べ、症状に影響があるか確認したいと思います。
> つきましては、以下のコマンドを実行して頂き、結果を添付して頂きたいです。
>
>

> [armadillo ~]# du / -a | sort -rn | head -100
> 

お世話になります。伊藤と申します。

コメント返信ありがとうございます。
上記のコマンドの結果は下記のとおりです。

root@armadillo:/# du / -a | sort -rn | head -100
du: cannot access '/proc/373/task/373/fd/3': No such file or directory
du: cannot access '/proc/373/task/373/fdinfo/3': No such file or directory
du: cannot access '/proc/373/fd/4': No such file or directory
du: cannot access '/proc/373/fdinfo/4': No such file or directory
sort: write failed: /tmp/sort6JirwQ: No space left on device

よろしくお願い致します。

at_shiita.ishigaki

2021年11月25日 13時13分

石垣です。

> 上記のコマンドの結果は下記のとおりです。
>
> root@armadillo:/# du / -a | sort -rn | head -100
> du: cannot access '/proc/373/task/373/fd/3': No such file or directory
> du: cannot access '/proc/373/task/373/fdinfo/3': No such file or directory
> du: cannot access '/proc/373/fd/4': No such file or directory
> du: cannot access '/proc/373/fdinfo/4': No such file or directory
> sort: write failed: /tmp/sort6JirwQ: No space left on device

sortコマンドを実行時に作成される一時ファイルが容量不足により作成できていないようなので、下記のコマンドを実行して頂けますでしょうか

du / -a /run | sort -rnT /run | head -100

以上よろしくお願い致します。

naotake_ito

2021年11月25日 15時48分

お世話になります。伊藤です

> 石垣です。
>
> > 上記のコマンドの結果は下記のとおりです。
> >
> > root@armadillo:/# du / -a | sort -rn | head -100
> > du: cannot access '/proc/373/task/373/fd/3': No such file or directory
> > du: cannot access '/proc/373/task/373/fdinfo/3': No such file or directory
> > du: cannot access '/proc/373/fd/4': No such file or directory
> > du: cannot access '/proc/373/fdinfo/4': No such file or directory
> > sort: write failed: /tmp/sort6JirwQ: No space left on device
>
> sortコマンドを実行時に作成される一時ファイルが容量不足により作成できていないようなので、下記のコマンドを実行して頂けますでしょうか
>

> du / -a /run | sort -rnT /run | head -100
> 

> 以上よろしくお願い致します。

上記コマンドの実行結果は以下のとおりです。

root@armadillo:~# du / -a /run | sort -rnT /run | head -100
du: cannot access '/proc/382/task/382/fd/3': No such file or directory
du: cannot access '/proc/382/task/382/fdinfo/3': No such file or directory
du: cannot access '/proc/382/fd/3': No such file or directory
du: cannot access '/proc/382/fdinfo/3': No such file or directory
3427794 /
2648660 /var
2475608 /var/log
1225740 /var/log/daemon.log.1
1173452 /var/log/syslog.1
603852 /usr
304460 /usr/lib
239640 /usr/share
153524 /usr/lib/arm-linux-gnueabihf
116744 /var/lib
102908 /var/lib/apt
102876 /var/lib/apt/lists
93208 /home
93204 /home/atmark
69308 /usr/lib/python3.5
67880 /usr/share/locale
55156 /var/cache
51816 /var/cache/apt
46800 /usr/lib/gcc
46796 /usr/lib/gcc/arm-linux-gnueabihf
46792 /usr/lib/gcc/arm-linux-gnueabihf/6
45428 /usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf
44084 /usr/share/doc
41380 /home/atmark/archives_back
36912 /var/lib/apt/lists/ftp.jp.debian.org_debian_dists_stretch_main_binary-armhf_Packages
35988 /var/log/syslog
35592 /var/log/daemon.log
34372 /usr/bin
33640 /usr/share/keyrings
33020 /var/lib/apt/lists/ftp.jp.debian.org_debian_dists_stretch_main_source_Sources
31256 /usr/lib/arm-linux-gnueabihf/libLLVM-3.9.so.1
29472 /lib
29464 /usr/share/keyrings/debian-keyring.gpg
25900 /var/cache/apt/pkgcache.bin
25900 /home/atmark/srcpkgcache.bin
25896 /var/cache/apt/srcpkgcache.bin
25896 /home/atmark/pkgcache.bin
25816 /var/lib/apt/lists/ftp.jp.debian.org_debian_dists_stretch_main_i18n_Translation-en
25076 /usr/lib/arm-linux-gnueabihf/libicudata.so.57.1
22728 /usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf/libpython3.5m-pic.a
22524 /usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf/libpython3.5m.a
20020 /usr/include
20016 /usr/share/perl
20012 /usr/share/perl/5.24.1
19056 /mnt
16328 /usr/share/man
14232 /lib/udev
13476 /var/lib/dpkg
13104 /usr/lib/arm-linux-gnueabihf/perl
13040 /usr/lib/arm-linux-gnueabihf/perl/5.24.1
12808 /usr/lib/gcc/arm-linux-gnueabihf/6/cc1plus
12584 /var/lib/dpkg/info
12332 /usr/lib/python3
12328 /usr/lib/python3/dist-packages
11980 /usr/lib/gcc/arm-linux-gnueabihf/6/cc1
11752 /usr/lib/python2.7
11448 /usr/lib/gcc/arm-linux-gnueabihf/6/lto1
10688 /mnt/root_back_20210826
10584 /lib/arm-linux-gnueabihf
9916 /usr/include/c++
9912 /usr/include/c++/6
9844 /usr/share/i18n
9604 /usr/lib/arm-linux-gnueabihf/dri
8244 /lib/udev/hwdb.bin
7896 /run
7656 /run/log/journal/844d35b451d1429bae66c37b46da782f
7656 /run/log/journal
7656 /run/log
7096 /usr/lib/arm-linux-gnueabihf/perl/5.24.1/auto
6972 /root
6920 /usr/share/terminfo
6832 /usr/share/GeoIP
6716 /usr/lib/arm-linux-gnueabihf/dri/r600_dri.so
6640 /usr/lib/arm-linux-gnueabihf/guile
6636 /usr/lib/arm-linux-gnueabihf/guile/2.0
6460 /usr/share/i18n/locales
6448 /mnt/root_back_20210826/backup
6428 /boot
6420 /root/backup
6400 /mnt/root_back_20210826/backup/uImage
6396 /boot/uImage
6388 /root/backup/uImage
6316 /usr/lib/arm-linux-gnueabihf/guile/2.0/ccache
6288 /usr/lib/arm-linux-gnueabihf/gconv
5676 /lib/udev/hwdb.d
5544 /usr/share/mime
5532 /home/atmark/archives_back/g++-6_6.3.0-18+deb9u1_armhf.deb
5480 /home/atmark/archives_back/libpython3.5-dev_3.5.3-1+deb9u1_armhf.deb
5388 /usr/share/GeoIP/GeoIPv6.dat
5384 /home/atmark/archives_back/gcc-6_6.3.0-18+deb9u1_armhf.deb
5116 /home/atmark/archives_back/cpp-6_6.3.0-18+deb9u1_armhf.deb
4928 /bin
4776 /usr/lib/file
4772 /usr/lib/file/magic.mgc
4648 /usr/include/linux
4592 /usr/lib/arm-linux-gnueabihf/perl-base
4492 /usr/lib/arm-linux-gnueabihf/perl/5.24.1/auto/Encode
4464 /usr/share/perl/5.24.1/unicore
4380 /lib/systemd
4352 /usr/lib/gcc/arm-linux-gnueabihf/6/libstdc++.a

以上です。よろしくご確認ください。

at_shiita.ishigaki

2021年11月25日 17時02分

石垣です。

> 3427794 /
> 2648660 /var
> 2475608 /var/log
> 1225740 /var/log/daemon.log.1
> 1173452 /var/log/syslog.1

logファイルの容量が大きくなっているようです。
/etc/logrotate.d/rsyslogを次のように編集して頂けますでしょうか。

/var/log/syslog
{
        rotate 7
        daily
        maxsize 1M (追加)
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                /usr/lib/rsyslog/rsyslog-rotate
        endscript
}
 
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
{
        maxsize 1M (追加)
}
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
        rotate 4
        weekly
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts
        postrotate
                /usr/lib/rsyslog/rsyslog-rotate
        endscript
}

次に、logrotateを更新してください。

[armadillo ~]# logrotate -f /etc/logrotate.d/rsyslog

※logrotateを更新すると、既存のlogファイルは削除されます。
更新後再起動してください。

これにより、ディスク容量をログファイルが圧迫することを防ぐことができると思いますので、
再度、稼働させ問題が起こるかテストしてみてください。
以上よろしくお願い致します。

naotake_ito

2021年11月26日 10時42分

お世話になります。伊藤です

> 石垣です。
>
> > 3427794 /
> > 2648660 /var
> > 2475608 /var/log
> > 1225740 /var/log/daemon.log.1
> > 1173452 /var/log/syslog.1
>
> logファイルの容量が大きくなっているようです。
> /etc/logrotate.d/rsyslogを次のように編集して頂けますでしょうか。
>

> /var/log/syslog
> {
>         rotate 7
>         daily
>         maxsize 1M (追加)
>         missingok
>         notifempty
>         delaycompress
>         compress
>         postrotate
>                 /usr/lib/rsyslog/rsyslog-rotate
>         endscript
> }
> 
> /var/log/mail.info
> /var/log/mail.warn
> /var/log/mail.err
> /var/log/mail.log
> /var/log/daemon.log
> {
>         maxsize 1M (追加)
> }
> /var/log/kern.log
> /var/log/auth.log
> /var/log/user.log
> /var/log/lpr.log
> /var/log/cron.log
> /var/log/debug
> /var/log/messages
> {
>         rotate 4
>         weekly
>         missingok
>         notifempty
>         compress
>         delaycompress
>         sharedscripts
>         postrotate
>                 /usr/lib/rsyslog/rsyslog-rotate
>         endscript
> }
> 

>
> 次に、logrotateを更新してください。
>

> [armadillo ~]# logrotate -f /etc/logrotate.d/rsyslog
> 

> ※logrotateを更新すると、既存のlogファイルは削除されます。
> 更新後再起動してください。
>
> これにより、ディスク容量をログファイルが圧迫することを防ぐことができると思いますので、
> 再度、稼働させ問題が起こるかテストしてみてください。
> 以上よろしくお願い致します。

上記のとおり、rsyslogを書き換えて、logrotateを更新しましたが、下記のようなメッセージがでました。
うまくいっているか少し不安でありますので、ご確認いただけたらと思います。

root@armadillo:~# logrotate -f /etc/logrotate.d/rsyslog
error: Compressing program wrote following message to stderr when compressing log /var/log/syslog.1:

gzip: stdout: No space left on device
error: failed to compress log /var/log/syslog.1
error: stat of /var/log/mail.info failed: No such file or directory
error: stat of /var/log/mail.warn failed: No such file or directory
error: stat of /var/log/mail.err failed: No such file or directory
error: stat of /var/log/mail.log failed: No such file or directory
error: stat of /var/log/daemon.log failed: No such file or directory

さらに、再起動をかけた後、一応 /varの容量が減ったか先日のduコマンドで確認したところ、30Mほどしか減っていませんでした。
これで問題ないでしょうか?

root@armadillo:~# du / -a | sort -rn | head -100
du: cannot access '/proc/549/task/549/fd/3': No such file or directory
du: cannot access '/proc/549/task/549/fdinfo/3': No such file or directory
du: cannot access '/proc/549/fd/4': No such file or directory
du: cannot access '/proc/549/fdinfo/4': No such file or directory
[ 42.070687] random: crng init done
[ 42.074320] random: 6 urandom warning(s) missed due to ratelimiting
3376666 /
2619644 /var
2446584 /var/log
1225740 /var/log/daemon.log.2
1173452 /var/log/syslog.1
603852 /usr
304460 /usr/lib
239640 /usr/share
153524 /usr/lib/arm-linux-gnueabihf
116744 /var/lib
102908 /var/lib/apt
102876 /var/lib/apt/lists
93208 /home
93204 /home/atmark
69308 /usr/lib/python3.5
67880 /usr/share/locale
55156 /var/cache
51816 /var/cache/apt
46800 /usr/lib/gcc
46796 /usr/lib/gcc/arm-linux-gnueabihf
46792 /usr/lib/gcc/arm-linux-gnueabihf/6
45428 /usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf
44084 /usr/share/doc
41380 /home/atmark/archives_back
36912 /var/lib/apt/lists/ftp.jp.debian.org_debian_dists_stretch_main_binary-armhf_Packages
36052 /var/log/syslog
34372 /usr/bin
33640 /usr/share/keyrings
33020 /var/lib/apt/lists/ftp.jp.debian.org_debian_dists_stretch_main_source_Sources
31256 /usr/lib/arm-linux-gnueabihf/libLLVM-3.9.so.1
29472 /lib
29464 /usr/share/keyrings/debian-keyring.gpg
25900 /var/cache/apt/pkgcache.bin
25900 /home/atmark/srcpkgcache.bin
25896 /var/cache/apt/srcpkgcache.bin
25896 /home/atmark/pkgcache.bin
25816 /var/lib/apt/lists/ftp.jp.debian.org_debian_dists_stretch_main_i18n_Translation-en
25076 /usr/lib/arm-linux-gnueabihf/libicudata.so.57.1
22728 /usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf/libpython3.5m-pic.a
22524 /usr/lib/python3.5/config-3.5m-arm-linux-gnueabihf/libpython3.5m.a
20020 /usr/include
20016 /usr/share/perl
20012 /usr/share/perl/5.24.1
16328 /usr/share/man
14232 /lib/udev
13476 /var/lib/dpkg
13104 /usr/lib/arm-linux-gnueabihf/perl
13040 /usr/lib/arm-linux-gnueabihf/perl/5.24.1
12808 /usr/lib/gcc/arm-linux-gnueabihf/6/cc1plus
12584 /var/lib/dpkg/info
12332 /usr/lib/python3
12328 /usr/lib/python3/dist-packages
11980 /usr/lib/gcc/arm-linux-gnueabihf/6/cc1
11752 /usr/lib/python2.7
11448 /usr/lib/gcc/arm-linux-gnueabihf/6/lto1
10584 /lib/arm-linux-gnueabihf
9916 /usr/include/c++
9912 /usr/include/c++/6
9844 /usr/share/i18n
9604 /usr/lib/arm-linux-gnueabihf/dri
8868 /var/log/syslog.1.gz-2021091408.backup
8244 /lib/udev/hwdb.bin
7096 /usr/lib/arm-linux-gnueabihf/perl/5.24.1/auto
6972 /root
6920 /usr/share/terminfo
6832 /usr/share/GeoIP
6716 /usr/lib/arm-linux-gnueabihf/dri/r600_dri.so
6640 /usr/lib/arm-linux-gnueabihf/guile
6636 /usr/lib/arm-linux-gnueabihf/guile/2.0
6460 /usr/share/i18n/locales
6428 /boot
6420 /root/backup
6396 /boot/uImage
6388 /root/backup/uImage
6316 /usr/lib/arm-linux-gnueabihf/guile/2.0/ccache
6288 /usr/lib/arm-linux-gnueabihf/gconv
5676 /lib/udev/hwdb.d
5544 /usr/share/mime
5532 /home/atmark/archives_back/g++-6_6.3.0-18+deb9u1_armhf.deb
5480 /home/atmark/archives_back/libpython3.5-dev_3.5.3-1+deb9u1_armhf.deb
5388 /usr/share/GeoIP/GeoIPv6.dat
5384 /home/atmark/archives_back/gcc-6_6.3.0-18+deb9u1_armhf.deb
5116 /home/atmark/archives_back/cpp-6_6.3.0-18+deb9u1_armhf.deb
4928 /bin
4776 /usr/lib/file
4772 /usr/lib/file/magic.mgc
4648 /usr/include/linux
4592 /usr/lib/arm-linux-gnueabihf/perl-base
4492 /usr/lib/arm-linux-gnueabihf/perl/5.24.1/auto/Encode
4464 /usr/share/perl/5.24.1/unicore
4380 /lib/systemd
4352 /usr/lib/gcc/arm-linux-gnueabihf/6/libstdc++.a
4184 /usr/sbin
4024 /usr/lib/arm-linux-gnueabihf/libpthread.a
3856 /usr/share/guile
3852 /usr/share/guile/2.0
3812 /home/atmark/archives_back/binutils_2.28-5_armhf.deb
3756 /sbin
3724 /usr/lib/python3.5/__pycache__
3640 /usr/share/tcltk

問題なければ、これで進めてみようと思います。
症状が出るか出ないかを判断するには長丁場になると思います。
変化がありましたら、またコメントさせていただきたいと思います。
とりあえず上記の結果で問題がないかだけ教えてください。
よろしくお願い致します。

at_shiita.ishigaki

2021年11月26日 11時20分

石垣です。

> root@armadillo:~# logrotate -f /etc/logrotate.d/rsyslog
> error: Compressing program wrote following message to stderr when compressing log /var/log/syslog.1:
>
> gzip: stdout: No space left on device
> error: failed to compress log /var/log/syslog.1

logファイルを削除する前に行われる、logファイルを圧縮して保存する作業が失敗しているようです。
容量不足によるものだと思われますので、一度下記のコマンドを実行して、logファイルを削除して頂けますでしょうか。

[armadillo ~]# rm /var/log/daemon.log.* /var/log/syslog.*

logファイルを削除したうえで、もう一度下記コマンドを実行し、再起動してください。

[armadillo ~]# logrotate -f /etc/logrotate.d/rsyslog
[armadillo ~]# reboot

また、他のエラーについてですが、

> error: stat of /var/log/mail.info failed: No such file or directory
> error: stat of /var/log/mail.warn failed: No such file or directory
> error: stat of /var/log/mail.err failed: No such file or directory
> error: stat of /var/log/mail.log failed: No such file or directory

/var/log/mail.*は初期状態では存在しないため、問題ありません。

> error: stat of /var/log/daemon.log failed: No such file or directory

/var/log/daemon.logはdaemonからログが出力されれば、ファイルが作成されるため、問題ないと思われます。

以上よろしくお願いいたします。