Mapdb doesn't restoreOnStartup

As a complete aside now, this was worrying me …

the Item apparently not getting restored at all on reboot, rather than some older value. (The eventual change from NULL being an ordinary binding update.)

I’ll guess now the mapdb database was freshly created in zram, and not initially populated with old data from the long term storage copy. I guess that is the other consequence of permissions issue.
So when the restore task comes along, just no data to restore.

[11:49:48] root@oha2:/home/openhabian# /usr/local/bin/zram-config stop
is before
[11:50:21] root@oha2:/home/openhabian# cat /var/lib/openhab2/persistence/date
or what am i missing?

here we go again:

[12:54:19] root@oha2:/home/openhabian# rm -f /usr/local/share/zram-config/zram-device-list*
[12:56:20] root@oha2:/home/openhabian# reboot

copying zram-config from link again and another reboot, then:

[13:00:45] root@oha2:/home/openhabian# cat /etc/systemd/system/zram-config.service
[Unit]
Description=zram-config
After=local-fs.target
Before=reboot.target halt.target smbd.service openhab2.service
PartOf=openhab2.service

[Service]
Type=oneshot
ExecStartPre=-/bin/rm -f /usr/local/share/zram-config/zram-device-list /usr/local/share/zram-config/zram-device-list.rev
ExecStart=-/usr/local/bin/zram-config start
ExecStop=-/usr/local/bin/zram-config stop
TimeoutSec=180
RemainAfterExit=yes

[Install]
WantedBy=basic.target
[13:00:47] root@oha2:/home/openhabian# cat /etc/ztab
# cut most ### lines
# swap  alg     mem_limit       disk_size       swap_priority   page-cluster    swappiness
swap    lz4     200M            600M            75              0               90

# dir   alg     mem_limit       disk_size       target_dir                      bind_dir
dir     lz4     150M            500M            /var/lib/openhab2/persistence   /persistence.bind
# do not enable as long as you make substantial config changes
#dir    lz4     30M             100M            /var/lib/openhab2/jsondb        /jsondb.bind

# log   alg     mem_limit       disk_size       target_dir                      bind_dir                oldlog_dir
log     lzo     150M            500M            /var/log                        /log.bind
[13:02:20] root@oha2:/home/openhabian# zramctl
[13:03:05] root@oha2:/home/openhabian#
[13:03:05] root@oha2:/home/openhabian# /usr/local/bin/zram-config start
+ ZSHARE=/usr/local/share/zram-config
+ ZLOG=/usr/local/share/zram-config/log/zram-config.log
+ ZDIR=/opt/zram
+ [[ -f /boot/cmdline.txt ]]
+ grep -q init=/bin/ro-root.sh /boot/cmdline.txt
+ ZEPHEMERAL=false
+ case "$1" in
++ date +%Y-%m-%d-%H:%M:%S
+ echo 'zram-config start 2020-07-28-13:03:27'
+ rm -f /usr/local/share/zram-config/zram-device-list.new
+ file=/etc/ztab
+ ZTAB_EMPTY=true
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ set -- swap lz4 200M 600M 75 0 90
+ echo 'ztab create swap lz4 200M 600M 75 0 90  '
+ ZTAB_EMPTY=false
+ ZTYPE=swap
+ ALG=lz4
+ MEM_SIZE=200M
+ DISK_SIZE=600M
+ '[' -f /usr/local/share/zram-config/zram-device-list ']'
+ test -f /usr/local/share/zram-config/zram-device-list.new
+ case "$1" in
+ PRIORITY=75
+ PAGE_CLUSTER=0
+ SWAPPINESS=90
+ createZswap
+ createZdevice
+ '[' '!' -d /sys/class/zram-control ']'
+ modprobe --verbose zram
+ RAM_DEV=0
+ '[' '!' -z 200M ']'
+ echo 200M
+ '[' '!' -z 600M ']'
+ echo 600M
+ '[' '!' -z lz4 ']'
+ echo lz4
+ echo 'zram0 created comp_algorithm=lz4 mem_limit=200M disksize=600M'
+ mkswap --label zram-config0 /dev/zram0
+ '[' '!' -z 75 ']'
+ swapon -v -p 75 /dev/zram0
+ '[' '!' -z 0 ']'
+ sysctl vm.page-cluster=0
+ '[' '!' -z 90 ']'
+ sysctl vm.swappiness=90
+ echo 'swap            /zram0          zram-config0'
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ set -- dir lz4 150M 500M /var/lib/openhab2/persistence /persistence.bind
+ echo 'ztab create dir lz4 150M 500M /var/lib/openhab2/persistence /persistence.bind   '
+ ZTAB_EMPTY=false
+ ZTYPE=dir
+ ALG=lz4
+ MEM_SIZE=150M
+ DISK_SIZE=500M
+ '[' -f /usr/local/share/zram-config/zram-device-list ']'
+ '[' dir = swap ']'
++ egrep 'dir.*/var/lib/openhab2/persistence' /usr/local/share/zram-config/zram-device-list
+ entry=
+ '[' -n '' ']'
+ test -f /usr/local/share/zram-config/zram-device-list.new
+ case "$1" in
+ TARGET_DIR=/var/lib/openhab2/persistence
+ BIND_DIR=/persistence.bind
+ '[' false = false ']'
+ createZdir
+ '[' '!' -z /persistence.bind ']'
+ mkdir -p /opt/zram/persistence.bind
+ '[' '!' -z /var/lib/openhab2/persistence ']'
++ stat -c %a /var/lib/openhab2/persistence
+ dirPerm=755
++ stat -c %u /var/lib/openhab2/persistence
+ dirUser=110
++ stat -c %g /var/lib/openhab2/persistence
+ dirGroup=115
+ echo 'dirPerm /var/lib/openhab2/persistence 755 110:115'
+ mount --verbose --bind /var/lib/openhab2/persistence/ /opt/zram/persistence.bind/
+ mount --verbose --make-private /opt/zram/persistence.bind/
++ awk -v a=/opt/zram/persistence.bind '$2 == a {print $4}' /proc/mounts
++ head -1
+ dirMountOpt=rw,noatime
++ awk -v a=/opt/zram/persistence.bind '$2 == a {print $3}' /proc/mounts
++ head -1
+ dirFsType=ext4
+ echo 'dirMountOpt rw,noatime dirFsType ' ext4
+ createZdevice
+ '[' '!' -d /sys/class/zram-control ']'
++ cat /sys/class/zram-control/hot_add
+ RAM_DEV=1
+ '[' '!' -z 150M ']'
+ echo 150M
+ '[' '!' -z 500M ']'
+ echo 500M
+ '[' '!' -z lz4 ']'
+ echo lz4
+ echo 'zram1 created comp_algorithm=lz4 mem_limit=150M disksize=500M'
+ mke2fs -v -t ext4 /dev/zram1
+ mkdir -p /opt/zram/zram1
+ mount --verbose --types ext4 -o rw,noatime /dev/zram1 /opt/zram/zram1/
+ mkdir -p /opt/zram/zram1/upper /opt/zram/zram1/workdir /var/lib/openhab2/persistence
+ mount --verbose --types overlay -o redirect_dir=on,lowerdir=/opt/zram/persistence.bind,upperdir=/opt/zram/zram1/upper,workdir=/opt/zram/zram1/workdir overlay1 /var/lib/openhab2/persistence
+ chown 110:115 /opt/zram/zram1/upper /opt/zram/zram1/workdir /var/lib/openhab2/persistence
+ chmod 755 /opt/zram/zram1/upper /opt/zram/zram1/workdir /var/lib/openhab2/persistence
+ echo 'dir             /zram1          /var/lib/openhab2/persistence           /persistence.bind'
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ set -- log lzo 150M 500M /var/log /log.bind
+ echo 'ztab create log lzo 150M 500M /var/log /log.bind   '
+ ZTAB_EMPTY=false
+ ZTYPE=log
+ ALG=lzo
+ MEM_SIZE=150M
+ DISK_SIZE=500M
+ '[' -f /usr/local/share/zram-config/zram-device-list ']'
+ '[' log = swap ']'
++ egrep 'log.*/var/log' /usr/local/share/zram-config/zram-device-list
+ entry=
+ '[' -n '' ']'
+ test -f /usr/local/share/zram-config/zram-device-list.new
+ case "$1" in
+ TARGET_DIR=/var/log
+ BIND_DIR=/log.bind
+ OLDLOG_DIR=
+ '[' false = false ']'
+ createZlog
+ invoke-rc.d rsyslog stop
+ invoke-rc.d nginx stop
+ return 1
+ read -r line
+ '[' false = true ']'
[13:03:29] root@oha2:/home/openhabian# zramctl
NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram1 lzo-rle       500M 16.4M  7.1K   84K       4 /opt/zram/zram1
/dev/zram0 lzo-rle       600M    4K   87B   12K       4 [SWAP]
[13:04:11] root@oha2:/home/openhabian# date > /var/lib/openhab2/persistence/date
[13:04:29] root@oha2:/home/openhabian# /usr/local/bin/zram-config stop
+ ZSHARE=/usr/local/share/zram-config
+ ZLOG=/usr/local/share/zram-config/log/zram-config.log
+ ZDIR=/opt/zram
+ [[ -f /boot/cmdline.txt ]]
+ grep -q init=/bin/ro-root.sh /boot/cmdline.txt
+ ZEPHEMERAL=false
+ case "$1" in
++ date +%Y-%m-%d-%H:%M:%S
+ echo 'zram-config stop 2020-07-28-13:04:50'
+ tac /usr/local/share/zram-config/zram-device-list
+ file=/usr/local/share/zram-config/zram-device-list.rev
+ read -r line
+ case "$line" in
+ set -- dir /zram1 /var/lib/openhab2/persistence /persistence.bind
+ echo 'ztab remove dir /zram1 /var/lib/openhab2/persistence /persistence.bind'
+ case "$1" in
+ ZTYPE=dir
+ ZRAM_DEV=/zram1
+ TARGET_DIR=/var/lib/openhab2/persistence
+ BIND_DIR=/persistence.bind
+ '[' false = false ']'
+ removeZdir
+ echo /zram1
++ echo /zram1
++ tr -dc 0-9
+ DEV_NUM=1
+ '[' '!' -z /var/lib/openhab2/persistence ']'
+ umount --verbose /var/lib/openhab2/persistence/
+ echo 'umount /var/lib/openhab2/persistence/'
+ mergeOverlay
+ '[' '!' -z /zram1 ']'
+ umount --verbose /opt/zram/zram1/
+ umount overlay1
umount: overlay1: no mount point specified.
+ rm -rv /opt/zram/zram1
+ '[' '!' -z /persistence.bind ']'
+ umount --verbose /opt/zram/persistence.bind/
+ rm -rv /opt/zram/persistence.bind
+ echo 1
+ /sbin/zramctl -r /dev/zram1
+ echo '/dev/zram1 removed'
+ read -r line
+ case "$line" in
+ set -- swap /zram0 zram-config0
+ echo 'ztab remove swap /zram0 zram-config0 '
+ case "$1" in
+ ZTYPE=swap
+ ZRAM_DEV=/zram0
+ LABEL=zram-config0
+ removeZswap
++ echo /zram0
++ tr -dc 0-9
+ DEV_NUM=0
+ swapoff /dev/zram0
+ echo 0
+ /sbin/zramctl -r /dev/zram0
+ echo '/dev/zram0 removed'
+ read -r line
+ rm -fv /usr/local/share/zram-config/zram-device-list.rev /usr/local/share/zram-config/zram-device-list
[13:04:51] root@oha2:/home/openhabian# zramctl
[13:05:14] root@oha2:/home/openhabian#
[13:05:14] root@oha2:/home/openhabian# cat /var/lib/openhab2/persistence/date
Tue 28 Jul 13:04:29 CEST 2020
[13:05:38] root@oha2:/home/openhabian# zram-config
+ ZSHARE=/usr/local/share/zram-config
+ ZLOG=/usr/local/share/zram-config/log/zram-config.log
+ ZDIR=/opt/zram
+ [[ -f /boot/cmdline.txt ]]
+ grep -q init=/bin/ro-root.sh /boot/cmdline.txt
+ ZEPHEMERAL=false
+ case "$1" in
+ echo 'Usage: zram-config {start|stop|sync|enable-ephemeral|disable-ephemeral}'
Usage: zram-config {start|stop|sync|enable-ephemeral|disable-ephemeral}
+ exit 1
[13:06:09] root@oha2:/home/openhabian# cat /usr/local/share/zram-config/log/zram-config.log
ztab remove dir /zram1 /var/lib/openhab2/persistence /persistence.bind
/zram1
umount /var/lib/openhab2/persistence/
+ echo 'overlay --lowerdir=/opt/zram/persistence.bind --upperdir=/opt/zram/zram1/upper'
overlay --lowerdir=/opt/zram/persistence.bind --upperdir=/opt/zram/zram1/upper
+ cd /usr/local/lib/zram-config/
+ echo y
+ ./overlay merge -l /opt/zram/persistence.bind -u /opt/zram/zram1/upper
The script overlay-tools-E5dbaR.sh is created. Run the script to do the actual work please. Remember to run it when the OverlayFS is not mounted.
+ sh -x overlay-tools-E5dbaR.sh
+ set -x
+ rm -rf /opt/zram/persistence.bind/date
+ mv -T /opt/zram/zram1/upper/date /opt/zram/persistence.bind/date
+ rmdir /opt/zram/zram1/upper
+ rm -v overlay-tools-E5dbaR.sh
removed 'overlay-tools-E5dbaR.sh'
umount: /opt/zram/zram1/ unmounted
removed directory '/opt/zram/zram1'
umount: /opt/zram/persistence.bind/ unmounted
removed directory '/opt/zram/persistence.bind'
/dev/zram1 removed
ztab remove swap /zram0 zram-config0
/dev/zram0 removed
removed '/usr/local/share/zram-config/zram-device-list.rev'
removed '/usr/local/share/zram-config/zram-device-list'

Sorry my fault. Yes. And as you can see, the file is still there after you stopped ZRAM so that works
assuming you don’t “reboot” by simply pulling the plug.
zram-config stop will be executed before the reboot.

I’m fairly you sure you did not properly replace zram-config with the latest copy.
Line 67 must read

        invoke-rc.d nginx stop >>${ZLOG} 2>&1

Try again. And add -x again and remove the date file.

this is line 67 (copied directly from file, not from link):
invoke-rc.d nginx stop >>${ZLOG} 2>&1 || return 1
that’s the same as in the link.
should i delete the || return 1 part and start again?

you could do that but it needs to be deleted elsewhere, too, so better download again.

ookay.

[14:16:42] root@oha2:/home/openhabian# rm -f /usr/local/share/zram-config/zram-device-list*
[14:16:57] root@oha2:/home/openhabian# reboot

this time i downloaded directly into folder (and had to change permissions?):

[14:18:27] root@oha2:/usr/local/bin# rm zram-config
[14:18:32] root@oha2:/usr/local/bin# wget https://raw.githubusercontent.com/mstormi/openhabian-zram/master/zram-config
...
2020-07-28 14:18:40 (5.70 MB/s) - ‘zram-config’ saved [11554/11554]
[14:19:17] root@oha2:/usr/local/bin# chmod 755 zram-config
[14:19:26] root@oha2:/usr/local/bin# ls -l zram-config
-rwxr-xr-x 1 root root 11554 Jul 28 14:18 zram-config

line 67: invoke-rc.d nginx stop >>${ZLOG} 2>&1

reboot

[14:22:19] root@oha2:/home/openhabian# cat /etc/systemd/system/zram-config.service
[Unit]
Description=zram-config
After=local-fs.target
Before=reboot.target halt.target smbd.service openhab2.service
PartOf=openhab2.service

[Service]
Type=oneshot
ExecStartPre=-/bin/rm -f /usr/local/share/zram-config/zram-device-list /usr/local/share/zram-config/zram-device-list.rev
ExecStart=-/usr/local/bin/zram-config start
ExecStop=-/usr/local/bin/zram-config stop
TimeoutSec=180
RemainAfterExit=yes

[Install]
WantedBy=basic.target
[14:22:28] root@oha2:/home/openhabian# cat /etc/ztab
# swap  alg     mem_limit       disk_size       swap_priority   page-cluster    swappiness
swap    lz4     200M            600M            75              0               90

# dir   alg     mem_limit       disk_size       target_dir                      bind_dir
dir     lz4     150M            500M            /var/lib/openhab2/persistence   /persistence.bind
# do not enable as long as you make substantial config changes
#dir    lz4     30M             100M            /var/lib/openhab2/jsondb        /jsondb.bind

# log   alg     mem_limit       disk_size       target_dir                      bind_dir                oldlog_dir
log     lzo     150M            500M            /var/log                        /log.bind
[14:22:48] root@oha2:/home/openhabian# zramctl
[14:23:18] root@oha2:/home/openhabian#

[14:23:18] root@oha2:/home/openhabian# /usr/local/bin/zram-config start
+ ZSHARE=/usr/local/share/zram-config
+ ZLOG=/usr/local/share/zram-config/log/zram-config.log
+ ZDIR=/opt/zram
+ [[ -f /boot/cmdline.txt ]]
+ grep -q init=/bin/ro-root.sh /boot/cmdline.txt
+ ZEPHEMERAL=false
+ case "$1" in
++ date +%Y-%m-%d-%H:%M:%S
+ echo 'zram-config start 2020-07-28-14:23:33'
+ rm -f /usr/local/share/zram-config/zram-device-list.new
+ file=/etc/ztab
+ ZTAB_EMPTY=true
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ set -- swap lz4 200M 600M 75 0 90
+ echo 'ztab create swap lz4 200M 600M 75 0 90  '
+ ZTAB_EMPTY=false
+ ZTYPE=swap
+ ALG=lz4
+ MEM_SIZE=200M
+ DISK_SIZE=600M
+ '[' -f /usr/local/share/zram-config/zram-device-list ']'
+ test -f /usr/local/share/zram-config/zram-device-list.new
+ case "$1" in
+ PRIORITY=75
+ PAGE_CLUSTER=0
+ SWAPPINESS=90
+ createZswap
+ createZdevice
+ '[' '!' -d /sys/class/zram-control ']'
+ modprobe --verbose zram
+ RAM_DEV=0
+ '[' '!' -z 200M ']'
+ echo 200M
+ '[' '!' -z 600M ']'
+ echo 600M
+ '[' '!' -z lz4 ']'
+ echo lz4
+ echo 'zram0 created comp_algorithm=lz4 mem_limit=200M disksize=600M'
+ mkswap --label zram-config0 /dev/zram0
+ '[' '!' -z 75 ']'
+ swapon -v -p 75 /dev/zram0
+ '[' '!' -z 0 ']'
+ sysctl vm.page-cluster=0
+ '[' '!' -z 90 ']'
+ sysctl vm.swappiness=90
+ echo 'swap            /zram0          zram-config0'
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ set -- dir lz4 150M 500M /var/lib/openhab2/persistence /persistence.bind
+ echo 'ztab create dir lz4 150M 500M /var/lib/openhab2/persistence /persistence.bind   '
+ ZTAB_EMPTY=false
+ ZTYPE=dir
+ ALG=lz4
+ MEM_SIZE=150M
+ DISK_SIZE=500M
+ '[' -f /usr/local/share/zram-config/zram-device-list ']'
+ '[' dir = swap ']'
++ egrep 'dir.*/var/lib/openhab2/persistence' /usr/local/share/zram-config/zram-device-list
+ entry=
+ '[' -n '' ']'
+ test -f /usr/local/share/zram-config/zram-device-list.new
+ case "$1" in
+ TARGET_DIR=/var/lib/openhab2/persistence
+ BIND_DIR=/persistence.bind
+ '[' false = false ']'
+ createZdir
+ '[' '!' -z /persistence.bind ']'
+ mkdir -p /opt/zram/persistence.bind
+ '[' '!' -z /var/lib/openhab2/persistence ']'
++ stat -c %a /var/lib/openhab2/persistence
+ dirPerm=755
++ stat -c %u /var/lib/openhab2/persistence
+ dirUser=110
++ stat -c %g /var/lib/openhab2/persistence
+ dirGroup=115
+ echo 'dirPerm /var/lib/openhab2/persistence 755 110:115'
+ mount --verbose --bind /var/lib/openhab2/persistence/ /opt/zram/persistence.bind/
+ mount --verbose --make-private /opt/zram/persistence.bind/
++ awk -v a=/opt/zram/persistence.bind '$2 == a {print $4}' /proc/mounts
++ head -1
+ dirMountOpt=rw,noatime
++ awk -v a=/opt/zram/persistence.bind '$2 == a {print $3}' /proc/mounts
++ head -1
+ dirFsType=ext4
+ echo 'dirMountOpt rw,noatime dirFsType ' ext4
+ createZdevice
+ '[' '!' -d /sys/class/zram-control ']'
++ cat /sys/class/zram-control/hot_add
+ RAM_DEV=1
+ '[' '!' -z 150M ']'
+ echo 150M
+ '[' '!' -z 500M ']'
+ echo 500M
+ '[' '!' -z lz4 ']'
+ echo lz4
+ echo 'zram1 created comp_algorithm=lz4 mem_limit=150M disksize=500M'
+ mke2fs -v -t ext4 /dev/zram1
+ mkdir -p /opt/zram/zram1
+ mount --verbose --types ext4 -o rw,noatime /dev/zram1 /opt/zram/zram1/
+ mkdir -p /opt/zram/zram1/upper /opt/zram/zram1/workdir /var/lib/openhab2/persistence
+ mount --verbose --types overlay -o redirect_dir=on,lowerdir=/opt/zram/persistence.bind,upperdir=/opt/zram/zram1/upper,workdir=/opt/zram/zram1/workdir overlay1 /var/lib/openhab2/persistence
+ chown 110:115 /opt/zram/zram1/upper /opt/zram/zram1/workdir /var/lib/openhab2/persistence
+ chmod 755 /opt/zram/zram1/upper /opt/zram/zram1/workdir /var/lib/openhab2/persistence
+ echo 'dir             /zram1          /var/lib/openhab2/persistence           /persistence.bind'
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ continue
+ read -r line
+ case "$line" in
+ set -- log lzo 150M 500M /var/log /log.bind
+ echo 'ztab create log lzo 150M 500M /var/log /log.bind   '
+ ZTAB_EMPTY=false
+ ZTYPE=log
+ ALG=lzo
+ MEM_SIZE=150M
+ DISK_SIZE=500M
+ '[' -f /usr/local/share/zram-config/zram-device-list ']'
+ '[' log = swap ']'
++ egrep 'log.*/var/log' /usr/local/share/zram-config/zram-device-list
+ entry=
+ '[' -n '' ']'
+ test -f /usr/local/share/zram-config/zram-device-list.new
+ case "$1" in
+ TARGET_DIR=/var/log
+ BIND_DIR=/log.bind
+ OLDLOG_DIR=
+ '[' false = false ']'
+ createZlog
+ invoke-rc.d rsyslog stop
+ invoke-rc.d nginx stop
+ createZdir
+ '[' '!' -z /log.bind ']'
+ mkdir -p /opt/zram/log.bind
+ '[' '!' -z /var/log ']'
++ stat -c %a /var/log
+ dirPerm=755
++ stat -c %u /var/log
+ dirUser=0
++ stat -c %g /var/log
+ dirGroup=0
+ echo 'dirPerm /var/log 755 0:0'
+ mount --verbose --bind /var/log/ /opt/zram/log.bind/
+ mount --verbose --make-private /opt/zram/log.bind/
++ awk -v a=/opt/zram/log.bind '$2 == a {print $4}' /proc/mounts
++ head -1
+ dirMountOpt=rw,noatime
++ awk -v a=/opt/zram/log.bind '$2 == a {print $3}' /proc/mounts
++ head -1
+ dirFsType=ext4
+ echo 'dirMountOpt rw,noatime dirFsType ' ext4
+ createZdevice
+ '[' '!' -d /sys/class/zram-control ']'
++ cat /sys/class/zram-control/hot_add
+ RAM_DEV=2
+ '[' '!' -z 150M ']'
+ echo 150M
+ '[' '!' -z 500M ']'
+ echo 500M
+ '[' '!' -z lzo ']'
+ echo lzo
+ echo 'zram2 created comp_algorithm=lzo mem_limit=150M disksize=500M'
+ mke2fs -v -t ext4 /dev/zram2
+ mkdir -p /opt/zram/zram2
+ mount --verbose --types ext4 -o rw,noatime /dev/zram2 /opt/zram/zram2/
+ mkdir -p /opt/zram/zram2/upper /opt/zram/zram2/workdir /var/log
+ mount --verbose --types overlay -o redirect_dir=on,lowerdir=/opt/zram/log.bind,upperdir=/opt/zram/zram2/upper,workdir=/opt/zram/zram2/workdir overlay2 /var/log
+ chown 0:0 /opt/zram/zram2/upper /opt/zram/zram2/workdir /var/log
+ chmod 755 /opt/zram/zram2/upper /opt/zram/zram2/workdir /var/log
+ echo 'log             /zram2          /var/log                /log.bind'
+ invoke-rc.d rsyslog start
+ invoke-rc.d nginx start
+ journalctl --flush
+ '[' '!' -z '' ']'
+ echo 'createZlog no oldlog dir in ztab'
+ read -r line
+ '[' false = true ']'
[14:23:35] root@oha2:/home/openhabian# zramctl
NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram2 lzo-rle       500M 16.4M    7K   96K       4 /opt/zram/zram2
/dev/zram1 lzo-rle       500M 16.4M  7.1K   84K       4 /opt/zram/zram1
/dev/zram0 lzo-rle       600M    4K   87B   12K       4 [SWAP]
[14:24:10] root@oha2:/home/openhabian# date > /var/lib/openhab2/persistence/date
[14:24:43] root@oha2:/home/openhabian# /usr/local/bin/zram-config stop
+ ZSHARE=/usr/local/share/zram-config
+ ZLOG=/usr/local/share/zram-config/log/zram-config.log
+ ZDIR=/opt/zram
+ [[ -f /boot/cmdline.txt ]]
+ grep -q init=/bin/ro-root.sh /boot/cmdline.txt
+ ZEPHEMERAL=false
+ case "$1" in
++ date +%Y-%m-%d-%H:%M:%S
+ echo 'zram-config stop 2020-07-28-14:25:07'
+ tac /usr/local/share/zram-config/zram-device-list
+ file=/usr/local/share/zram-config/zram-device-list.rev
+ read -r line
+ case "$line" in
+ set -- log /zram2 /var/log /log.bind
+ echo 'ztab remove log /zram2 /var/log /log.bind'
+ case "$1" in
+ ZTYPE=log
+ ZRAM_DEV=/zram2
+ TARGET_DIR=/var/log
+ BIND_DIR=/log.bind
+ '[' false = false ']'
+ removeZlog
+ '[' '!' -z '' ']'
+ echo /zram2
++ echo /zram2
++ tr -dc 0-9
+ DEV_NUM=2
+ '[' '!' -z /var/log ']'
+ invoke-rc.d rsyslog stop
+ invoke-rc.d nginx stop
+ umount --verbose /var/log/
+ sleep .1
+ invoke-rc.d rsyslog stop
+ invoke-rc.d nginx stop
+ umount --verbose -l /var/log/
+ mergeOverlay
+ '[' '!' -z /zram2 ']'
+ umount --verbose /opt/zram/zram2/
+ umount overlay2
umount: overlay2: no mount point specified.
+ rm -rv /opt/zram/zram2
+ '[' '!' -z /log.bind ']'
+ umount --verbose /opt/zram/log.bind/
+ rm -rv /opt/zram/log.bind
+ invoke-rc.d rsyslog stop
+ invoke-rc.d nginx stop
+ echo 2
+ /sbin/zramctl -r /dev/zram2
+ invoke-rc.d rsyslog start
+ invoke-rc.d nginx start
+ journalctl --flush
+ echo '/dev/zram2 removed'
+ read -r line
+ case "$line" in
+ set -- dir /zram1 /var/lib/openhab2/persistence /persistence.bind
+ echo 'ztab remove dir /zram1 /var/lib/openhab2/persistence /persistence.bind'
+ case "$1" in
+ ZTYPE=dir
+ ZRAM_DEV=/zram1
+ TARGET_DIR=/var/lib/openhab2/persistence
+ BIND_DIR=/persistence.bind
+ '[' false = false ']'
+ removeZdir
+ echo /zram1
++ echo /zram1
++ tr -dc 0-9
+ DEV_NUM=1
+ '[' '!' -z /var/lib/openhab2/persistence ']'
+ umount --verbose /var/lib/openhab2/persistence/
+ echo 'umount /var/lib/openhab2/persistence/'
+ mergeOverlay
+ '[' '!' -z /zram1 ']'
+ umount --verbose /opt/zram/zram1/
+ umount overlay1
umount: overlay1: no mount point specified.
+ rm -rv /opt/zram/zram1
+ '[' '!' -z /persistence.bind ']'
+ umount --verbose /opt/zram/persistence.bind/
+ rm -rv /opt/zram/persistence.bind
+ echo 1
+ /sbin/zramctl -r /dev/zram1
+ echo '/dev/zram1 removed'
+ read -r line
+ case "$line" in
+ set -- swap /zram0 zram-config0
+ echo 'ztab remove swap /zram0 zram-config0 '
+ case "$1" in
+ ZTYPE=swap
+ ZRAM_DEV=/zram0
+ LABEL=zram-config0
+ removeZswap
++ echo /zram0
++ tr -dc 0-9
+ DEV_NUM=0
+ swapoff /dev/zram0
+ echo 0
+ /sbin/zramctl -r /dev/zram0
+ echo '/dev/zram0 removed'
+ read -r line
+ rm -fv /usr/local/share/zram-config/zram-device-list.rev /usr/local/share/zram-config/zram-device-list
[14:25:09] root@oha2:/home/openhabian# zramctl
[14:25:41] root@oha2:/home/openhabian#
[14:25:41] root@oha2:/home/openhabian# cat /var/lib/openhab2/persistence/date
Tue 28 Jul 14:24:43 CEST 2020
[14:26:03] root@oha2:/home/openhabian# zram-config
+ ZSHARE=/usr/local/share/zram-config
+ ZLOG=/usr/local/share/zram-config/log/zram-config.log
+ ZDIR=/opt/zram
+ [[ -f /boot/cmdline.txt ]]
+ grep -q init=/bin/ro-root.sh /boot/cmdline.txt
+ ZEPHEMERAL=false
+ case "$1" in
+ echo 'Usage: zram-config {start|stop|sync|enable-ephemeral|disable-ephemeral}'
Usage: zram-config {start|stop|sync|enable-ephemeral|disable-ephemeral}
+ exit 1
[14:26:21] root@oha2:/home/openhabian# cat /usr/local/share/zram-config/log/zram-config.log
ztab remove log /zram2 /var/log /log.bind
/zram2
Warning: Stopping rsyslog.service, but it can still be activated by:
  syslog.socket
Failed to stop nginx.service: Unit nginx.service not loaded.
invoke-rc.d: initscript nginx, action "stop" failed.
umount: /var/log (overlay2) unmounted
+ echo 'overlay --lowerdir=/opt/zram/log.bind --upperdir=/opt/zram/zram2/upper'
overlay --lowerdir=/opt/zram/log.bind --upperdir=/opt/zram/zram2/upper
+ cd /usr/local/lib/zram-config/
+ ./overlay merge -l /opt/zram/log.bind -u /opt/zram/zram2/upper
+ echo y
The script overlay-tools-aNINBw.sh is created. Run the script to do the actual work please. Remember to run it when the OverlayFS is not mounted.
+ sh -x overlay-tools-aNINBw.sh
+ set -x
+ rm -rf /opt/zram/log.bind/daemon.log
+ mv -T /opt/zram/zram2/upper/daemon.log /opt/zram/log.bind/daemon.log
+ rm -rf /opt/zram/log.bind/messages
+ mv -T /opt/zram/zram2/upper/messages /opt/zram/log.bind/messages
+ rm -rf /opt/zram/log.bind/syslog
+ mv -T /opt/zram/zram2/upper/syslog /opt/zram/log.bind/syslog
+ rm -rf /opt/zram/log.bind/auth.log
+ mv -T /opt/zram/zram2/upper/auth.log /opt/zram/log.bind/auth.log
+ rmdir /opt/zram/zram2/upper
+ rm -v overlay-tools-aNINBw.sh
removed 'overlay-tools-aNINBw.sh'
umount: /opt/zram/zram2/ unmounted
removed directory '/opt/zram/zram2'
umount: /opt/zram/log.bind/ unmounted
removed directory '/opt/zram/log.bind'
Warning: Stopping rsyslog.service, but it can still be activated by:
  syslog.socket
Failed to stop nginx.service: Unit nginx.service not loaded.
invoke-rc.d: initscript nginx, action "stop" failed.
/dev/zram2 removed
ztab remove dir /zram1 /var/lib/openhab2/persistence /persistence.bind
/zram1
umount /var/lib/openhab2/persistence/
+ echo 'overlay --lowerdir=/opt/zram/persistence.bind --upperdir=/opt/zram/zram1/upper'
overlay --lowerdir=/opt/zram/persistence.bind --upperdir=/opt/zram/zram1/upper
+ cd /usr/local/lib/zram-config/
+ echo y
+ ./overlay merge -l /opt/zram/persistence.bind -u /opt/zram/zram1/upper
The script overlay-tools-Co87VB.sh is created. Run the script to do the actual work please. Remember to run it when the OverlayFS is not mounted.
+ sh -x overlay-tools-Co87VB.sh
+ set -x
+ rm -rf /opt/zram/persistence.bind/date
+ mv -T /opt/zram/zram1/upper/date /opt/zram/persistence.bind/date
+ rmdir /opt/zram/zram1/upper
+ rm -v overlay-tools-Co87VB.sh
removed 'overlay-tools-Co87VB.sh'
umount: /opt/zram/zram1/ unmounted
removed directory '/opt/zram/zram1'
umount: /opt/zram/persistence.bind/ unmounted
removed directory '/opt/zram/persistence.bind'
/dev/zram1 removed
ztab remove swap /zram0 zram-config0
/dev/zram0 removed
removed '/usr/local/share/zram-config/zram-device-list.rev'
removed '/usr/local/share/zram-config/zram-device-list'

looks good (better at least?), right?
(so i really did matter that i didn’t edit the existing zram-config file but instead deleted old one and downloaded new one?)

That looks fine, yes.

Now see if that changed anything about your problem

systemctl enable zram-config
systemctl enable openhab2
reboot

… and create another file in /var/lib/openhab2/persistence before you reboot.

(And enable debug level logging for mapdb to be sure it gets written to disk.)

hmm… something like this?

[15:36:25] root@oha2:/var/lib/openhab2/persistence# hostname > /var/lib/openhab2/persistence/host

according to log (DEBUG!) mapdb doesn’t do anything.

[15:36:54] root@oha2:/var/lib/openhab2/persistence# cat /var/lib/openhab2/persistence/host
oha2

i just set mapdb as preferred service before doing this :slight_smile:

and between these commands I assume you stopped OH ?
Change directory to somewhere other than the persistence dir.
And check the permissions on there while ZRAM is off.

what debug exactly ?

Bad move, you must not do this.

okay? undid it!

openhab> log:set DEBUG org.openhab.persistence.mapdb

no. i really just executed the 2 command (hostname > … / cat …) posted above.

:astonished: if i start guessing i’m pretty sure i won’t find the right directory…

i think i’m lost o_O

:roll_eyes: any other dir is ok, just not that one which must get unmounted.

what’s the point of your post then. You must have ZRAM and openhab running, then create the file, then reboot, then check if the file is still there.

i’m sorry, but i really don’t understand what i’m doing and why…
in the previous steps at least i had an idea of why i did what you told me…

but this last step is above me…

so i should create “another file” somewhere on the system?
if i create “some file” in /home/openhabian/ mapdb wouldn’t bother, would it?

i’m not trying to tease you - i really am this … “unskillful”. :disappointed:

:roll_eyes:
was bitte ist daran so schwer zu verstehen ? Du bist mit deiner Shell in genau dem Verzeichnis das beim Reboot abgemountet werden soll, was dazu führen kann dass ebendas nicht funktioniert. Also wechsel das Verzeichnis BEVOR du rebootest! z.B. cd /tmp.

unglaublich :man_facepalming:
i was thinking about the directory where i should create the file - not where i should run the reboot command from… sorry

still don’t understand what mapdb should do.
anyway:

[16:55:30] root@oha2:/home/openhabian# hostname > /var/lib/openhab2/persistence/host
[16:56:07] root@oha2:/home/openhabian# cat /var/lib/openhab2/persistence/host
oha2

reboot

[17:16:23] openhabian@oha2:~$ cat /var/lib/openhab2/persistence/host
oha2

okay, file still there!

and ZRAM was running for sure when you created the file ?

It should write to the persistence dir. I think on OH shutdown so browse the messages it gives after you issue reboot. If it does not your problem is with mapdb configuration and not ZRAM.
Is it enabled ? (persistence= line in /etc/openhab2/services/addons.cfg or the respective tab in PaperUI)
Does /var/lib/openhab2/persistence/mapdb exist ? Can user openhab write to it ?

mhm…
persisted data (mapdb) are still not restored properly:

[17:29:26] openhabian@oha2:~$ zramctl
NAME       ALGORITHM DISKSIZE  DATA  COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram2 lzo-rle       500M 26.1M 432.9K  860K       4 /opt/zram/zram2
/dev/zram1 lzo-rle       500M 17.3M 284.7K  704K       4 /opt/zram/zram1
/dev/zram0 lzo-rle       600M    4K    87B   12K       4 [SWAP]
2020-07-28 17:38:48.954 [ome.event.ItemCommandEvent] - Item 'WT_RN_1' received command OFF
2020-07-28 17:38:48.961 [vent.ItemStateChangedEvent] - WT_RN_1 changed from ON to OFF

2020-07-28 17:38:48.959 [DEBUG] [pdb.internal.MapDBPersistenceService] - store called for WT_RN_1
2020-07-28 17:38:48.963 [DEBUG] [pdb.internal.MapDBPersistenceService] - Stored 'WT_RN_1' with state 'OFF' in mapdb database

REBOOT

2020-07-28 17:41:39.869 [vent.ItemStateChangedEvent] - WT_RN_1 changed from NULL to ON

persistence
if it were disabled i wouldn’t get the log msg, would i?

yes:

[18:03:39] openhabian@oha2:~$ ls -l /var/lib/openhab2/persistence/mapdb
total 280
-rwxr-xr-x 1 openhab openhab     32 Jul 27 18:13 Readme.txt
-rw-r--r-- 1 openhab openhab  33064 Jul 28 18:03 storage.mapdb
-rw-r--r-- 1 openhab openhab 228192 Jul 28 18:03 storage.mapdb.p
-rw-r--r-- 1 openhab openhab     16 Jul 28 18:03 storage.mapdb.t

yes:

[18:06:27] openhabian@oha2:~$ sudo -u openhab touch /var/lib/openhab2/persistence/mapdb/testfile
[18:08:24] openhabian@oha2:~$ ls -l /var/lib/openhab2/persistence/mapdb
total 280
-rwxr-xr-x 1 openhab openhab     32 Jul 27 18:13 Readme.txt
-rw-r--r-- 1 openhab openhab  33064 Jul 28 18:08 storage.mapdb
-rw-r--r-- 1 openhab openhab 228192 Jul 28 18:08 storage.mapdb.p
-rw-r--r-- 1 openhab openhab     16 Jul 28 18:08 storage.mapdb.t
-rw-r--r-- 1 openhab openhab      0 Jul 28 18:08 testfile

mapdb.persist:

Strategies {
    everyHour       : "0 0 * * * ?"
    everyDay        : "0 0 0 * * ?"
    
    default = everyChange
}

Items {

        *   :   strategy = everyChange,restoreOnStartup

}

Okay, you have a log showing mapdb writing to (zram) file.
Now shut down openHAB tidily, then check to see if mapdb “hard” database file got touched.

sudo systemctl stop openhab2 ?

could you explain this?

Better systemctl disable openhab2 and then reboot so OH does not auto-start. Then check timestamps of the mapdb files. If they’re from the time of shutdown it’s not ZRAM.

BTW it takes some time after OH start until persistence gets restored. You should see a log message when.

are you sure you yourself caused the item to change or can it have been a message at restoration time ?

on the contrary! i didn’t do anything, this comes without me doing anything. i’m just looking at the log.

[18:59:08] root@oha2:/home/openhabian# systemctl disable openhab2
Removed /etc/systemd/system/multi-user.target.wants/openhab2.service.
[18:59:16] root@oha2:/home/openhabian# reboot
[19:05:49] openhabian@oha2:~$ ls -l /var/lib/openhab2/persistence/mapdb
total 268
-rwxr-xr-x 1 openhab openhab     32 Jul 27 18:13 Readme.txt
-rw-r--r-- 1 openhab openhab  33064 Jul 28 17:06 storage.mapdb
-rw-r--r-- 1 openhab openhab 228192 Jul 28 17:06 storage.mapdb.p
-rw-r--r-- 1 openhab openhab     16 Jul 28 17:06 storage.mapdb.t

and i don’t know where the testfile from before went. i didn’t delete it :frowning: