Linux: [HS]DD unterstützen - Responsiveness erhöhen
Geizhals » Forum » Tipps & Tricks » Linux: [HS]DD unterstützen - Responsiveness erhöhen (1 Beitrag, 55 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Linux: [HS]DD unterstützen - Responsiveness erhöhen
04.01.2013, 16:32:42
Hi !

Weil ich jetzt in 2 Rechnern (ein Lappy plus mein Serverchen) mit je einer SSD ausgestattet habe, kam ich auf folgende Möglichkeit, die ich empfehle:

Tipp für PCs, wo auch nicht-SSD-Platten verbaut sind (so wie mein Server mit  6x2TB im SW-Raid5):
/, /usr, /home auf die SSD.
Zusätzlich für alle anderen Filesysteme (also die, die noch auf den SATA/...-Platten sind): Für jede LV/Partition/... ein eigenes LV auf der SSD einrichten (bei mir: 512MB).

Beispiel: Für ein /dev/sata/usr_src ein /dev/ssd/usr_src_log einrichten.
Diese SSD-LVs dann als externes Log verwenden. Die Performance der Filesysteme auf dem Raid5 erhöht sich drastisch.


Tipp für PCs, wo nur eine SSD drin ist (so wie mein Lappy):
Es gilt also die Lebensdauer zu erhöhen - sprich die Schreibzugriffe zu senken.

Schreibbelastete Dateisysteme sind bei mir:
/home/USER/.cache
/home/USER/.mozilla
/var/log

Die Idee ist nun folgende:
Beim Booten wird ein Ordner /dev/shm/ssd-sicherung angelegt.

In diesen Ordner kommen Directories wie
- _home_user1_.cache
- _home_user1_.mozilla
- _home_user2_.cache
- _home_user2_.mozilla
- ...
- _var_log

Der weitere Ablauf ist wie folgt:
über /home/user1/.cache wird bindly nach /dev/shm/ssd-sicherung/_home_user1_.cache gemountet... Genauso bei den anderen Verzeichnissen.
Danach wird über das /home/user1/.cache, ... ein tmpfs gemountet - und die Daten von /dev/shm/ssd-sicherung/_home_user1_.cache hineinkopiert.

Ab dann passieren die Lese- und Schreibzugriffe auf die Ramdisk. Damit beim runterfahren die Information nicht verloren geht - einfach ein rsync (um nur das nötige zu schreiben) von /home/user1/.cache nach  /dev/shm/ssd-sicherung/_home_user1_.cache.

Vorteile:
- Die stark belasteten Teile (bei mir eben der Cache beim Surfen) belasten nicht die SSD
- Es geht nichts "verloren" - beim Reboot wird automatisch gesynct.
- Dadurch, dass die Original-Blockdevices immer zur Verfügung stehen, kann man auch zwischendurch syncen um auch bei Stromausfall nichts/wenig zu verlieren.

Nachteile:
- Das Kopieren von SSD in die Ramdisk dauert natürlich und verlängert den Bootvorgang - bei mir ca. 1 Sekunde.
- Etwas Ram wird abgeknuspert - bei mir ca. 800MB.


Script, das bei mir mit insmod klappt (noch nicht elegant):


#!/bin/bash
### BEGIN INIT INFO
# Provides:          ssd-schone
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# X-Start-Before:    rsyslog
# X-Stop-After:    rsyslog
# Should-Start:
# Default-Start:     1 2 3 4 5
# Default-Stop:      0 6	
# X-Interactive:     true
# Short-Description: Kümmert sich darum, SSDs zu schonen.
# Description:       Kopiert konfigurierbare Verzeichnisse in Ramdisk
#                    Beim Runterfahren werden sie wieder auf Platte geschrieben.
### END INIT INFO


SICHERUNG=/dev/shm/ssd-sicherung

TO_BE_SAVED="
/home/*/.cache
/home/*/.mozilla
/var/cache
"
# ENDE CONFIG

if [ "$1" == "start" ] 
then
	COPY_TO_RAM=1
else
	if [ "$1" == "stop" ] 
	then
		COPY_TO_RAM=0
	else
		echo "Parameter muss start oder stop sein"
		exit 1
	fi
fi

if [ ! -d $SICHERUNG ]
then
	mkdir -p $SICHERUNG
fi

if [ $COPY_TO_RAM -eq 1 ]
then
	echo "Kopiere Daten in Ramdisk"
	
else
	echo "Beginne mit der Sicherung der Daten aus der Ramdisk"
fi

for a in $TO_BE_SAVED
do
	SAVE_SRC_DIR=$a
	SAVE_TGT_DIR=$SICHERUNG/$( echo $SAVE_SRC_DIR | tr "/" "_" )

	if [ -r $a ]
	then
		if [ $COPY_TO_RAM == 1 ] 
		then
			# wir fahren hoch und kopieren ins Ram
			echo "Kopiere ins Ram: $SAVE_SRC_DIR"
			mkdir -p $SAVE_TGT_DIR
			mount --bind $SAVE_SRC_DIR $SAVE_TGT_DIR
			if [ $? -ne 0 ]
			then
				echo "Bindly-mount $SAVE_TGT_DIR klappt nicht"
				exit
			fi
			mount -t tmpfs keines $SAVE_SRC_DIR
			if [ $? -ne 0 ]
			then
				echo "TMPFS in $SAVE_SRC_DIR klappt nicht"
				umount $SAVE_TGT_DIR
				exit
			fi
			rsync -a $SAVE_TGT_DIR/ $SAVE_SRC_DIR
			if [ $? -ne 0 ]
			then
				echo "rsync $SAVE_SRC_DIR klappt nicht"
				umount $SAVE_TGT_DIR
				umount $SAVE_SRC_DIR
				exit
			fi
		else
			# Wir fahren runter und Kopieren auf Disk
			echo "Kopiere auf Disk: $SAVE_SRC_DIR"
			rsync -a --delete $SAVE_SRC_DIR/ $SAVE_TGT_DIR
			umount $SAVE_SRC_DIR	# Ramdisk über Ziel
			umount $SAVE_TGT_DIR	# Bindly-Mount in /dev/shm
			rmdir $SAVE_TGT_DIR
		fi
	fi
done





Antworten PM Alle Chronologisch
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung