Minimize SD Cad Usage on Raspberry Pi

Use fDisk

root@raspberrypi:/home/pi# sudo fdisk -l
Disk /dev/mmcblk0: 8068 MB, 8068792320 bytes
4 heads, 16 sectors/track, 246240 cylinders, total 15759360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000b5098Device Boot      Start         End      Blocks   Id  System/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)/dev/mmcblk0p2          122880    14878719     7377920   83  Linux
root@raspberrypi:/home/pi# tune2fs -c 0 /dev/mmcblk0p2
tune2fs 1.42.5 (29-Jul-2012)Setting maximal mount count to -1
root@raspberrypi:/home/pi#

 

Manage Linux system logs

using init-scripts:/etc/init.d/syslogd stop

We will first solve the usual corruption culprit and then move on to making sure we are covered when our programs decide to blow up.
The following two lines should be added to /etc/fstab:

      
/var/run        tmpfs   size=1M,noatime         0 0none        /var/log        tmpfs   size=1M,noatime         0 0

 

After this, /etc/fstab should look as follows:

proc            /proc               proc    defaults                    0   0/dev/mmcblk0p1  /boot               vfat    ro,noatime                  0   2/dev/mmcblk0p2  /                   ext4    defaults,noatime            0   1none            /var/run        tmpfs   size=1M,noatime             0   0none            /var/log        tmpfs   size=1M,noatime             0   0

 

Disable swapping

Run the following commands to disable swapping forever on your system:

sudo dphys-swapfile swapoff
sudo dphys-swapfile uninstall
sudo update-rc.d dphys-swapfile remove

#After doing this, call free -m in order to see your memory usage

pi@raspberrypi ~ $ free -m             

total       used       free     shared    buffers     cachedMem:           438         59        378          0          9         27-/+ buffers/cache:         22        416Swap:            0          0          0

 

see your memory usage:

free -m

 

You can tell it to keep no backups by specifying rotate 0 (or a lower number) for the specific log. Look in /etc/logrotate.d to find the specific configuration fragment. It’s been awhile since I’ve looked into logrotate but I think you can specify it to limit the size of files and such.Poszczególne logi zablokowałem # w pliku /etc/rsyslog.conf

I also changed:

/etc/logrotate.conf  >> rotate=0

Check Actual Disk IO

important:report from

iotop -obtaqqq > output.txt

14:50:27    37 be/3 root          0.00 B      4.00 K  0.00 %  0.77 % [jbd2/mmcblk0p2-]14:50:27 15706 be/4 root          0.00 B      4.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:29    37 be/3 root          0.00 B      4.00 K  0.00 %  0.71 % [jbd2/mmcblk0p2-]14:50:29 15706 be/4 root          0.00 B      4.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:30    37 be/3 root          0.00 B      4.00 K  0.00 %  0.65 % [jbd2/mmcblk0p2-]14:50:30 15706 be/4 root          0.00 B      4.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:31    37 be/3 root          0.00 B      4.00 K  0.00 %  0.76 % [jbd2/mmcblk0p2-]14:50:31 15706 be/4 root          0.00 B      4.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:33    37 be/3 root          0.00 B      4.00 K  0.00 %  0.71 % [jbd2/mmcblk0p2-]14:50:33 15706 be/4 root          0.00 B      4.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:34    37 be/3 root          0.00 B      4.00 K  0.00 %  0.67 % [jbd2/mmcblk0p2-]14:50:34 15706 be/4 root          0.00 B      4.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:35    37 be/3 root          0.00 B      4.00 K  0.00 %  0.63 % [jbd2/mmcblk0p2-]14:50:35 15706 be/4 root          0.00 B      4.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:37    37 be/3 root          0.00 B      4.00 K  0.00 %  0.59 % [jbd2/mmcblk0p2-]14:50:37 15706 be/4 root          0.00 B      4.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:38    37 be/3 root          0.00 B      4.00 K  0.00 %  0.72 % [jbd2/mmcblk0p2-]14:50:38 15706 be/4 root          0.00 B      4.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:39    37 be/3 root          0.00 B      4.00 K  0.00 %  0.69 % [jbd2/mmcblk0p2-]14:50:39 15706 be/4 root          0.00 B      4.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:41    37 be/3 root          0.00 B      4.00 K  0.00 %  0.66 % [jbd2/mmcblk0p2-]14:50:41 15706 be/4 root          0.00 B      4.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:42    37 be/3 root          0.00 B      4.00 K  0.00 %  0.63 % [jbd2/mmcblk0p2-]14:50:42 15706 be/4 root          0.00 B      4.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:43    37 be/3 root          0.00 B      4.00 K  0.00 %  0.65 % [jbd2/mmcblk0p2-]14:50:43 15706 be/4 root          0.00 B      4.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:45    37 be/3 root          0.00 B      4.00 K  0.00 %  0.62 % [jbd2/mmcblk0p2-]14:50:45 15706 be/4 root          0.00 B      4.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:46    37 be/3 root          0.00 B      4.00 K  0.00 %  0.60 % [jbd2/mmcblk0p2-]14:50:46 15706 be/4 root          0.00 B      8.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:47    37 be/3 root          0.00 B      4.00 K  0.00 %  0.61 % [jbd2/mmcblk0p2-]14:50:47 15706 be/4 root          0.00 B      8.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:49    37 be/3 root          0.00 B     40.00 K  0.00 %  0.60 % [jbd2/mmcblk0p2-]14:50:49 15706 be/4 root          0.00 B      8.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:50    37 be/3 root          0.00 B     40.00 K  0.00 %  0.58 % [jbd2/mmcblk0p2-]14:50:50 15706 be/4 root          0.00 B     12.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:51    37 be/3 root          0.00 B     40.00 K  0.00 %  0.56 % [jbd2/mmcblk0p2-]14:50:51 15706 be/4 root          0.00 B     12.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:52    37 be/3 root          0.00 B     40.00 K  0.00 %  0.54 % [jbd2/mmcblk0p2-]14:50:52 15706 be/4 root          0.00 B     12.00 K  0.00 %  0.00 % python /usr/sbin/iotop -obtaqqq14:50:54    37 be/3 root          0.00 B     40.00 K  0.00 %  0.65 % [jbd2/mmcblk0p2-]14:50:54 15706 be/4 root          0.00 B     16.00 K  0.00 %  0.01 % python /usr/sbin/iotop -obtaqqq

jbd2

jbd2 is causing disk utilization

[https://bbs.archlinux.org/viewtopic.php?id=113516&p=2]

Add commit to /etc/fstab like this:/dev/sda1 / ext4 defaults,noatime,commit=60 0 1

Add commit to /etc/fstab like this:

/dev/sda1 / ext4 defaults,noatime,commit=60    0   1

 

or

cp /usr/lib/pm-utils/power.d/journal-commit /etc/pm/power.d/journal-commit

 

and then edit /etc/pm/power.d/journal-commit and change this value there.
Of course if you have pm-utils installed at all, but I guess it’s some opendesktop depedency.

Disable ext4 jurnaling

I decided to use Ext4 with disabled journal.

# Create ext4 fs on /dev/sda10 diskmkfs.ext4 /dev/sda10

 

Enable writeback mode. This mode will typically provide the best ext4 performance.

tune2fs -o journal_data_writeback /dev/sda10

 

Delete has_journal option

 

Required fsck

e2fsck -f /dev/sda10

 

Check fs options

dumpe2fs /dev/sda10 |more

 

For more performance add fstab opions: data=writeback,noatime,nodiratime
i.e:

/dev/sda10 /opt ext4 defaults,data=writeback,noatime,nodiratime 0 0

This step disables journal

# Delete has_journal optiontune2fs -O ^has_journal /dev/sda10

 

Or when creating:

mkfs.ext4 -O ^has_journal /dev/sda10

 

List of disks:

etc/fstab

proc            /proc           proc    defaults          0     0
/dev/mmcblk0p1  /boot           vfat    defaults          0     2
/dev/mmcblk0p2  /               ext4    defaults,noatime,commit=60  0     1

 

tune2fs -o journal_data_writeback /dev/mmcblk0p2
tune2fs -O ^has_journal /dev/mmcblk0p2

 

Required fsck

e2fsck -f /dev/mmcblk0p2

 

Check fs options

dumpe2fs /dev/mmcblk0p2  | more

 

References

http://crashmag.net/disable-filesystem-check-fsck-at-boot-timehttp://www.ideaheap.com/2013/07/stopping-sd-card-corruption-on-a-raspberry-pi/http://sirlagz.net/2013/03/10/script-automatic-rpi-image-downsizer/http://www.raspberrypi-spy.co.uk/2012/06/resize-sd-card-partitions/http://www.ediy.com.my/index.php/blog/item/61-resizing-sd-card-partitions-for-raspberry-pihttp://superuser.com/questions/826951/disable-logging-on-raspian-debianhttps://bbs.archlinux.org/viewtopic.php?id=113516&p=2http://fenidik.blogspot.com/2010/03/ext4-disable-journal.html