You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
StuartIanNaylor edb9129fce
Update README.md
5 年之前
LICENSE Update 7 年之前
README.md Update README.md 5 年之前
install.sh exclude oldlog initial copy 5 年之前
log2ram --exclude oldlog comment 5 年之前
log2ram-lastcheck Add oldlog funct 5 年之前
log2ram.conf Tweak Prune conf level 5 年之前
log2ram.hourly Use env instead of /bin/sh 6 年之前
log2ram.logrotate Removed unneeded postrotate support 7 年之前
log2ram.service Add oldlog funct 5 年之前
uninstall.sh Add oldlog funct 5 年之前

README.md

Log2Zram

Usefull for IoD / maker projects for reducing SD, Nand and Emmc block wear via log operations. Uses Zram to minimise precious memory footprint and extremely infrequent write outs.

Log2Zam is a lower write fork https://github.com/azlux/log2ram based on transient log for Systemd here : A transient /var/log

Can not be used for mission critical logging applications where a system crash and log loss is unaceptable. If the extremely unlikely event of a system crash is not a major concern then L2Z can massively reduce log block wear whilst maintinaing and extremely tiny memory footprint.


Menu

  1. Install
  2. Config
  3. It is working ?
  4. Uninstall

Install

sudo apt-get install git rsync
git clone https://github.com/StuartIanNaylor/log2zram
cd log2zram
sudo sh install.sh

Customize

variables :

In the file /etc/log2zram.conf sudo nano /etc/log2zram.conf to edit:

# Configuration file for Log2Ram (https://github.com/azlux/log2ram) under MIT license.
# This configuration file is read by the log2ram service

# Size for the ram folder, it defines the size the log folder will reserve into the RAM.
# If it's not enough, log2ram will not be able to use ram. Check you /var/log size folder.
# The default is 40M and is basically enough for a lot of applications.
# You will need to increase it if you have a server and a lot of log for example.
SIZE=20M

# This variable can be set to true if you prefer "rsync" rather than "cp".
# I use the command cp -u and rsync -X, so I don't copy the all folder every time for optimization.
# You can choose which one you want. Be sure rsync is installed if you use it.
USE_RSYNC=false

# If there are some errors with available RAM space, a system mail will be send
# Change it to false and you will have only a log if there is no place on RAM anymore.
MAIL=false

# **************** Zram backing conf  *************************************************

# ZL2R Zram Log 2 Ram enables a zram drive when ZL2R=true ZL2R=false is mem only tmpfs
ZL2R=true
# COMP_ALG this is any compression algorithm listed in /proc/crypto
# lz4 is fastest with lightest load but deflate (zlib) and Zstandard (zstd) give far better compression ratios
# lzo is very close to lz4 and may with some binaries have better optimisation
# COMP_ALG=lz4 for speed or Zstd for compression, lzo or zlib if optimisation or availabilty is a problem
COMP_ALG=lz4
# LOG_DISK_SIZE is the uncompressed disk size. Note zram uses about 0.1% of the size of the disk when not in use
# LOG_DISK_SIZE is expected compression ratio of alg chosen multiplied by log SIZE
# lzo/lz4=2.1:1 compression ratio zlib=2.7:1 zstandard=2.9:1
# Really a guestimate of a bit bigger than compression ratio whilst minimising 0.1% mem usage of disk size
LOG_DISK_SIZE=60M
# PRUNE_LEVEL if log size is below this level then old logs will be moved to hdd.log enter as %
# Moving the old logs will restart log rotation as old logs will no longer exist in /var/log/oldlog
# In normal operation hitting 50% or above can take many hourly cycles so a higher prune level is a balance
# 55-60% is probably a good level as too high will restart logrotation and create less history  
PRUNE_LEVEL=60
``

#### refresh time:
By default Log2Zram checks available log space every hour. It them makes a comparison of the percentage set via Prune_Level and only writes out old logs to disk when triggered and then removes the collected old logs from zram space.

### It is working?
You can now check the mount folder in ram with (You will see lines with log2ram if working)

df -h

… log2ram 40M 532K 40M 2% /var/log …

mount

… log2ram on /var/log type tmpfs (rw,nosuid,nodev,noexec,relatime,size=40960k,mode=755) …

### Testing

sudo service log2ram reload

Checks PRUNE_LEVEL < available free space if true will move and clean /var/log/oldlog to hdd.log

sudo logrotate -vf /etc/logrotate.conf

Force the daily logrotate with verbose output

If you have issue with apache2, you can try to add `apache2.service` next to other services on the `Before` parameter in `/etc/systemd/system/log2ram.service` it will solve the pb

The log for log2ram will be written at: `/var/log/log2ram.log`

| Compressor name	     | Ratio	| Compression | Decompress. |
|------------------------|----------|-------------|-------------|
|zstd 1.3.4 -1	         | 2.877	| 470 MB/s	  | 1380 MB/s   |
|zlib 1.2.11 -1	         | 2.743    | 110 MB/s    | 400 MB/s    |
|brotli 1.0.2 -0	     | 2.701	| 410 MB/s	  | 430 MB/s    |
|quicklz 1.5.0 -1	     | 2.238	| 550 MB/s	  | 710 MB/s    |
|lzo1x 2.09 -1	         | 2.108	| 650 MB/s	  | 830 MB/s    |
|lz4 1.8.1	             | 2.101    | 750 MB/s    | 3700 MB/s   |
|snappy 1.1.4	         | 2.091	| 530 MB/s	  | 1800 MB/s   |
|lzf 3.6 -1	             | 2.077	| 400 MB/s	  | 860 MB/s    |


## Uninstall :(

chmod +x /usr/local/bin/uninstall-log2ram.sh && sudo /usr/local/bin/uninstall-log2ram.sh

Also /var/oldlog contains the pruned logs from install delete if not required (prob not)