====== Reduce SD Card wearing ====== [[https://www.debian-administration.org/article/661/A_transient_/var/log|Transient log]] \\ [[https://wiki.gentoo.org/wiki/SDCard|Finding SD card erase size]] \\ ===== Check who is writing ===== Start logging disc access and kernel log: sysctl vm.block_dump=1 dmesg -e -T -w Stop logging: sysctl vm.block_dump=0 ===== Set noop elevator ===== ... echo noop > /sys/block/mmcblk0/queue/scheduler exit 0 ===== Use tmpfs ===== tmpfs /tmp tmpfs defaults,nosuid,nodev,mode=1777,size=10% 0 0 tmpfs /var/tmp tmpfs defaults,nosuid,nodev,mode=1777,size=10% 0 0 tmpfs /var/cache/apt/archives tmpfs defaults,nosuid,nodev,mode=1777,size=80% 0 0 Move some volatile dirs to tmp folder: rm -rf /var/run /var/lock ln -s /run /var/run ln -s /run/lock /var/lock rm -rf /var/lib/dhcp/ /var/spool ln -s /tmp /var/lib/dhcp ln -s /tmp /var/spool; ===== Disable logging to disc ===== systemctl stop mosquitto systemctl disable mosquitto apt-get remove anacron Remove syslog dpkg --purge rsyslog Use syslog from busybox package with circular log buffer in RAM: apt-get install busybox-syslogd SYSLOG_OPTS="-C256 -L -R remote.host.org" KLOG_OPTS="" Use journald and configure it to use RAM: Storage=volatile Compress=yes ===== Run fstrim weekly ===== Check TRIM support sudo hdparm -I /dev/sda | grep "TRIM supported" [Unit] Description=Discard unused blocks [Service] Type=oneshot ExecStart=/sbin/fstrim -av [Unit] Description=Discard unused blocks once a week Documentation=man:fstrim [Timer] OnCalendar=weekly AccuracySec=1h Persistent=true [Install] WantedBy=multi-user.target systemctl daemon-reload systemctl enable fstrim.timer ===== Broken SD Card ===== Bad magic number in super-block [ 7000.203888] F2FS-fs (sda2): Magic Mismatch, valid(0xf2f52010) - read(0x0) [ 7000.203926] F2FS-fs (sda2): Can't find valid F2FS filesystem in 1th superblock e2fsck /dev/sda2 e2fsck 1.42.12 (29-Aug-2014) ext2fs_open2: Bad magic number in super-block e2fsck: Superblock invalid, trying backup blocks... /dev/sda2: recovering journal e2fsck: unable to set superblock flags on /dev/sda2 /dev/sda2: ***** FILE SYSTEM WAS MODIFIED ***** /dev/sda2: ********** WARNING: Filesystem still has errors ********** To get superblock backups, simulate fs creation sudo mke2fs -n /dev/xxx Then run fsck with superblock backup sudo e2fsck -b block_number /dev/xxx