Linux / on tmpfs

Aus LaborWiki
Wechseln zu: Navigation, Suche
     
Linux / on tmpfs

Release status: stable [box doku]

LaborLogo2.png
Description Boot your linux to RAM
Author(s)  siro
Last Version  1




Original Artikel

http://www.silentpcreview.com/forums/viewtopic.php?t=48568

Worum gehts ?

Ziel ist es das rootfs / beim booten in eine Ramdisk / als tmpfs zu einzuhängen.

Vorteile:

  • Schnelle Dateizugriffe
  • System ist immer im Originalzustand, Änderungen werden nicht dauerhaft gespeichert
  • Bei Ausschalten der Festplatten im PC:
    • Keine Geräuschentwicklung
    • Geringerer Stromverbrauch
    • Längere Lebensdauer der Platten/ Flash

Nachteile:

  • Boot dauert lange (1-2 Minuten)
  • Speichern / Updates sind umständlicher
  • Bei Stromausfall Datenverlust
  • Großer Speicherplatz-Verbrauch im RAM (je nach Größe der root- Partition) (2 GB sind OK, bei >8GB im PC)

Voraussetzung

  • Live-CD
  • Debian oder Ubuntu
  • mkinitramfs
  • genug Arbeitsspeicher

Ramdisk / tmpfs

http://de.wikipedia.org/wiki/Tmpfs
http://de.wikipedia.org/wiki/Ramdisk
'tmpfs (engl. für Temporary File System) ist ein Dateisystem, das in vielen Unix-artigen Betriebssystemen als verbesserter Ersatz für eine Ramdisk eingesetzt wird. Im Gegensatz zur Ramdisk bei der realer Arbeitsspeicher verwendet wird, wird bei tmpfs virtueller Arbeitsspeicher statt der Festplatte als Speicher benutzt.'

Wie gehts ?

Möglichkeit A:

  • 1. Distribution mit Live-Cd installieren. Die root-Partition ( / )möglichst klein halten. /home und /boot auf separate Partitionen. /swap nicht vergessen.
  • 2. Nach der Installation in das installierte System wechseln mit chroot:
/dev/sdaX (root-Partition) und /dev/sdaY (boot-Partition) anpassen !

sudo -s
mkdir /mnt/boot
mount /dev/sdaX /mnt/
mount /dev/sdaY /mnt/boot
mount -o bind /dev /mnt/dev
mount -t proc /proc /mnt/proc
mount -o bind /sys /mnt/sys
chroot /mnt /bin/bash
cp /etc/fstab /etc/fstab.old
nano /etc/fstab
  • 3. /etc/fstab anpassen:

Die Zeile mit dem Eintrag / ändern in:

none / tmpfs defaults 0 0
  • 4. Das local-script in initramfs ändern (gibs da nen besseren weg ??)
cp /usr/share/initramfs-tools/scripts/local /usr/share/initramfs-tools/scripts/local.bak
nano /usr/share/initramfs-tools/scripts/local
  • 5. Dateien beim starten kopieren lassen

Die Zeile mit

# FIXME This has no error checking
# Mount root
mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} ${rootmnt}

auskommentieren und diesen Text einfügen:

mkdir /ramboottmp
mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} /ramboottmp
mount -t tmpfs -o size=100% none ${rootmnt}
cd ${rootmnt}
cp -rfa /ramboottmp/* ${rootmnt}
umount /ramboottmp
  • 6. Initramdisk bauen lassen
mkinitramfs -o /boot/initrd.img-ramdisk
  • 7. Aufräumen
mv /usr/share/initramfs-tools/scripts/local /usr/share/initramfs-tools/scripts/local.ram
mv /usr/share/initramfs-tools/scripts/local.bak /usr/share/initramfs-tools/scripts/local
  • 8. grub.cfg / menu.lst ändern (update-grub geht nicht ?)

Booteintrag kopieren und die Zeile ändern in

/initrd /initrd.img-ramdisk
  • 9. Alles umounten
exit
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt/boot
umount /mnt/
reboot
  • 9. Beim booten neuen Booteintrag mit erstellter initrd auswählen und einige Zeit warten.

Ergebnis

tiotest 0.3.3
test system: HP DC7900 (Q9400, 3GB DDR2-800 SD-RAM, WDVel 10k rpm 160GB)

tiotest -f 200 (tmpfs)

Tiotest results for 4 concurrent io threads:
,----------------------------------------------------------------------.
| Item                  | Time     | Rate         | Usr CPU  | Sys CPU |
+-----------------------+----------+--------------+----------+---------+
| Write         800 MBs |    0.4 s | 1935.593 MB/s |  83.2 %  | 1443.1 % |
| Random Write   16 MBs |    0.0 s | 2049.987 MB/s | 105.0 %  | 1469.5 % |
| Read          800 MBs |    0.3 s | 2850.759 MB/s | 119.7 %  | 1444.0 % |
| Random Read    16 MBs |    0.0 s | 2677.806 MB/s |  68.6 %  | 1919.6 % |
`----------------------------------------------------------------------'
Tiotest latency results:
,-------------------------------------------------------------------------.
| Item         | Average latency | Maximum latency | % >2 sec | % >10 sec |
+--------------+-----------------+-----------------+----------+-----------+
| Write        |        0.007 ms |        2.432 ms |  0.00000 |   0.00000 |
| Random Write |        0.006 ms |        0.213 ms |  0.00000 |   0.00000 |
| Read         |        0.004 ms |        0.516 ms |  0.00000 |   0.00000 |
| Random Read  |        0.004 ms |        0.141 ms |  0.00000 |   0.00000 |
|--------------+-----------------+-----------------+----------+-----------|
| Total        |        0.006 ms |        2.432 ms |  0.00000 |   0.00000 |
`--------------+-----------------+-----------------+----------+-----------'

tiotest -f 200 (dev/sdb) Read/Random Read does not seem to be correct

Tiotest results for 4 concurrent io threads:
,----------------------------------------------------------------------.
| Item                  | Time     | Rate         | Usr CPU  | Sys CPU |
+-----------------------+----------+--------------+----------+---------+
| Write         800 MBs |    9.2 s |  87.266 MB/s |  12.0 %  | 150.5 % |
| Random Write   16 MBs |    5.0 s |   3.150 MB/s |   0.0 %  |   0.0 % |
| Read          800 MBs |    0.3 s | 2889.829 MB/s |  62.1 %  | 1447.9 % |
| Random Read    16 MBs |    0.0 s | 2571.593 MB/s |  65.8 %  |   0.0 % |
`----------------------------------------------------------------------'
Tiotest latency results:
,-------------------------------------------------------------------------.
| Item         | Average latency | Maximum latency | % >2 sec | % >10 sec |
+--------------+-----------------+-----------------+----------+-----------+
| Write        |        0.159 ms |      824.659 ms |  0.00000 |   0.00000 |
| Random Write |        0.009 ms |        0.208 ms |  0.00000 |   0.00000 |
| Read         |        0.004 ms |        6.615 ms |  0.00000 |   0.00000 |
| Random Read  |        0.004 ms |        0.040 ms |  0.00000 |   0.00000 |
|--------------+-----------------+-----------------+----------+-----------|
| Total        |        0.080 ms |      824.659 ms |  0.00000 |   0.00000 |
`--------------+-----------------+-----------------+----------+-----------'