30. März 2023
StartMagazinArchos Fusion Storage: Neue Lösung für das microSD-Speicherproblem mit UnionFS

Archos Fusion Storage: Neue Lösung für das microSD-Speicherproblem mit UnionFS

Mit Archos Fusion Storage schafft Android den Schritt, den echte Linux-Rechner schon seit Jahren beherrschen. Der vorhandene Speicher wird dem OS und den Apps transparent bereitgestellt, sodass sich weder der Nutzer noch der Entwickler darum kümmern muss, wo was gespeichert wird. Android User erklärt, wie die Technik funktioniert, und wie sich Archos Fusion Storage in der Praxis schlägt.

MicroSD-Karten sind Fluch und Segen zugleich. Ein Segen deshalb, weil sich damit ein Smartphone oder Tablet mit zu wenig Speicher nachträglich noch aufrüsten lässt. Ein Fluch deshalb, weil man als Nutzer und als Entwickler nie so richtig weiß, ob man sich nun auf die kleinen Speicherkärtchen verlassen kann, oder Google mal wieder eine überraschende Neuerung einführt und Apps das Speichern in fremde Verzeichnisse verbietet, wie bei der KitKatastophe.

Das Problem mit Android und den microSD-karten ist nicht neu. Vielleicht kannst du dich noch an Wechselrahmen für PCs erinnern oder benutzt sogar noch eine Wechselfestplatte? Wenn der Speicher mal wieder voll war (oder für ein Backup), konnte man einfach eine neue Festplatte in den Rechner schieben. „Einfach reinschieben“ ging aber nur ganz früher mit den SCSI-Platten, bis die PC-Industrie mit serial ATA das Festplatten-Rad neu erfand und Hotplug erneut möglich machte. Falls du auch IT-Admin-Erfahrung hast, wirst du die Wechselrahmen vermutlich bis heute verfluchen. Denn die Dinger sorgten nicht selten für Ärger: Sei es, weil ein Mitarbeiter „aus Zufall“ mal das Laufwerk herauszog oder das System wegen eines BIOS-Upgrades kurzerhand vergaß, welches denn nun die primäre Festplatte im System ist. Auch segneten Festplatten in Wechsellaufwerken meistens deutlich früher das Zeitliche, als ihre fest verbauten Pendants. Kein Wunder also, dass sich Steve Jobs im iPhone für ein Gerät ohne erweiterbaren Speicher entschieden hat. Denn die kleinen Kärtchen machen wirklich fast nur Probleme:

  1. Wie reagiert das Android-System, wenn der Nutzer die MicroSD-Karte einfach entfernt?
  2. Woher weiß das System, welche Daten der Nutzer am liebsten auf die MicroSD-Karte speichern würde?
  3. Was tun mit Apps, die zu groß für den internen Speicher sind?
  4. Wie lassen sich sensible Daten auf der MicroSD-Karte am besten schützen, wenn die Karte jederzeit aus dem Gerät entfernt werden kann?

Die Liste ließe sich noch beliebig fortführen. Natürlich bringen die kleinen Kärtchen auch einen Vorteil mit, sonst wären sie nicht in fast jedem Android-Smartphone vorhanden: Hersteller können mit einem kleinen internen Flash-Speicher ein paar Cent pro Smartphone sparen und der Nutzer kann später den Speicher durch eine günstige Karte aufrüsten. Dieser Vorteil existiert aber nur im Kopf wirklich. Denn eine 32-GByte-Speicherkarte wird bei Amazon und Co immer deutlich mehr kosten, als wenn der Hersteller die 32 GByte gleich von Anfang an fest verbaut hätte…

Kernproblem: App-Daten

Das eigentliche Problem für den Anwender liegt bei den App-Daten. Angenommen dein Handy verfügt über 4 GByte internen Speicher und eine 32 GByte große microSD-Karte. Dann verfügt das System zwar über insgesamt 36 Gbyte Speicher, du kannst aber nach einer gewissen Zeit trotzdem keine Apps mehr installieren, weil sich nur bestimmte Bereiche einer App auf die microSD-Karte auslagern lassen. Welche das sind, legt der App-Entwickler fest, er ist aber dabei an die Vorgaben von Android gebunden. Das Android-System bietet generell die folgenden vier Ordner an:

  • /data/app Hier kommt der eigentliche Kern hin. Einmal installiert, bleiben diese Daten bis zu einem Update unverändert
  • /data/data Hier kommen die Metadaten der App sowie Cache-Dateien oder zusätzliche Bibliotheken hin. Einige Spiele legen hier auch gern binäre Datenblöcke ab.
  • /sdcard Der für App- und Nutzerdaten bestimmte Bereich des internen Speichers
  • /extsdcard Der für App- und Nutzerdaten bestimmte Bereich des externen Speichers, der microSD-Karte

Der Entwickler baut seine App oder sein Spiel optimalerweise so, dass dieses aus einem möglichst kleinen Kern besteht, der in jedem Fall auf den internen Speicher (/data/app) muss und den App-Daten, die sich auf Wunsch auch auf die microSD-Karte auslagern lassen, oder auch nicht. So kannst du zum Beispiel ein 1 GByte großes Spiel installieren, weil die 800 MByte Spieldaten automatisch auf die microSD-Karte gelangen und nur die 200 MByte an App-Kern auf dem Telefonspeicher landen.

Soweit die stark vereinfachte Theorie. In der Praxis ist aber bei einem Handy mit 4 GByte Speicher recht schnell der interne Speicher voll. Das bedeutet nicht nur, dass du keine weiteren Apps mehr installieren kannst, sondern üblicherweise kannst du dann auch keine Updates mehr für die bereits installierten Apps herunterladen. Mit Fusion Storage hat Archos nun eine Lösung für dieses Problem entwickelt.

Wie funktioniert Fusion Storage?

Im Grunde genommen, ist die Lösung von Archos ganz einfach. Anstatt die externe und die interne SD-Karte in zwei separaten Verzeichnissen anzuzeigen, werden die beiden Speicher einfach zu einem kombiniert. Das passiert über das Fuse-Kernelmodul, wobei Archos den frei verfügbaren UnionFS-Quellcode leicht angepasst hat. UnionFS kennst du bereits, wenn du schon einmal eine Linux-Distribution von einem USB-Stick aus getestet hast, der sich auch beschreiben lässt. Dort werden die Nutzerdaten dann transparent über die bestehenden, nicht veränderbaren Daten des Live-Systems eingeblendet.

Archos Fusion Storage kommt per Software-Update auf dein Handy. Du siehst dann nach dem ersten Start diesen Hinweis.
Archos Fusion Storage kommt per Software-Update auf dein Handy. Du siehst dann nach dem ersten Start diesen Hinweis.

Archos macht nun das Gleiche unter Android. Doch nicht nur /sdcard/ und /extsdcard kombiniert Archos zu diesem Pool, auch /data/app und /data/data wandern in einen UnionFS-Topf. Archos verfolgt dabei einen ganz praktischen Ansatz: So lange auf der microSD-Karte noch mindestens 2 GByte an Speicher frei sind, wandern sämtliche Daten auf die MicroSD-Karte. Wird der Speicher auf der MicroSD-Karte knapp, dann schreibt das System auch auf den internen Speicher des Smartphones. Dabei benutzt Archos das veraltete aber idiotensichere VFAT als Dateisystem. Fusion Storage kann damit also nur grundlegende Dateirechte sicherstellen, aber zum Beispiel keinen Mehrbenutzermodus. Das 4-GByte-Limit von VFAT „umgeht“ Archos Fusion Storage, indem größere Dateien automatisch auf 2-GByte-Blöcke verteilt gespeichert werden.

Auf Wunsch packt Archos die Dateien vom internen Speicher automatisch auf die microSD-Karte.
Auf Wunsch packt Archos die Dateien vom internen Speicher automatisch auf die microSD-Karte.
Unter dem  Menüpunkt Archos Fusion Storage in den Einstellungen findest du eine exakte Übersicht, wo noch wie viel Speicher frei ist.
Unter dem Menüpunkt Archos Fusion Storage in den Einstellungen findest du eine exakte Übersicht, wo noch wie viel Speicher frei ist.

Um den Dienst benutzen zu können, musst du Fusion Storage in den Einstellungen deines Android-Smartphones zunächst aktivieren und anschließend das Gerät neu starten. Ein separates Init-Script von Archos sorgt dann dafür, dass die Dateisysteme richtig eingehängt werden (und prüft dabei auch, ob wirklich eine microSD-Karte vorhanden ist. Dieses Script haben wir direkt im Wurzelverzeichnis des Archos 50 Diamond gefunden:

#!/system/bin/sh
export PATH=$PATH:/system/bin/:/sbin//system/xbin/

if [ "$(getprop ro.archos.storage_type)" == "mono-user" ];then
final=/storage/sdcard0/
suffix=""
else
final=/mnt/shell/emulated/
suffix="/0/"
fi

opts="allow_other,hide_meta_files,balanced_split"

#Forced union
if [ "$(getprop ro.archos.unioned)" == 1 ];then
setprop persist.sys.archos.unioned 1

#If union forced, it means internal sdcard
#So we want to balance split files across both devices
opts="${opts},balanced_split"
fi

if [ "$(getprop persist.sys.archos.unioned)" == 1 ];then
mkdir -p /sd/external/$suffix/Android/obb

#If it's multiuser, we need /obb
[ -n "$suffix" ] && mount -o bind /sd/external/$suffix/Android/obb /sd/external/obb

#mount -o bind /sd/external// /sd/external/legacy

setprop storage.union 1

#/sd/debug and /sd/debug-sd are available for debugging purpose
#They create logs in /sd/logs
if [ "$(getprop persist.archos.debug)" == 1 ];then

/unionfs -o ${opts},debug_file=/sd/logs /sd/external/=RW:/data/media/=RW /sd/debug &
sdcard -u 1023 -g 1023 -l /sd/debug/ /sd/debug-sd &
fi

/unionfs -o $opts /sd/external/=RW:/data/media/=RW /sd/emulated &
#Wait for unionfs to be in place
while ! cat /proc/mounts |grep /sd/emulated > /dev/null;do sleep .1;done
#Now run standard sdcard daemon to handle permissions
sdcard -u 1023 -g 1023 -l /sd/emulated/ $final &
else
#If it's not unioned, run standard sdcard daemon
setprop storage.union 0

sdcard -u 1023 -g 1023 -l /data/media $final &
fi

while ! cat /proc/mounts |grep -E "$final?" > /dev/null;do sleep .1;done
setprop sdcard_sh_running 1
wait
shell@ac50da:/ $

So sieht die Ausgabe von mount im Falle von Fusion Storage aus (nur die entscheidenden zwei Zeilen, die restlichen Einträge sind identisch):

/dev/block/mmcblk1p1 /sd/external/obb vfat rw,relatime,uid=1023,gid=1023,fmask=0007,dmask=0007,allow_utime=0020,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
unionfs /sd/emulated fuse.unionfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other 0 0
d23 3

In der Grundeinstellung speichert Archos dann alle neuen Dateien auf der microSD-Karte bis zur erwähnten 2-GByte-Grenze. Falls du möchtest, kannst du die zusätzliche Optimierung einschalten. Dann verschiebt das Android-System von Archos zusätzlich große Dateien vom internen Speicher auf die microSD-Karte. Dieser Weg ist dann zu empfehlen, wenn du Fusion Storage nicht von Anfang an benutzt hast und nun nach dem Kauf einer microSD-Karte die Technologie benutzen möchtest.

 

Und wo liegt der Haken?

Auch Archos kann nicht zaubern. Wenn du erst mal sämtliche Daten auf die MicroSD-Karte verschoben hast und nun zum Beispiel von einer 16-GByte-Karte auf eine 32-Gbyte-Karte upgraden möchtest, dann musst du die alte Karte zuerst entfernen und dazu wieder auf die klassische Lösung ohne Fusion Storage umsteigen. Falls dazu aber zu wenig interner Speicher vorhanden ist, werden wohl oder übel einige Apps nicht mehr richtig funktionieren. Du solltest die Lösung also nicht benutzen, wenn du öfters mal die Speicherkarte wechselst (zum Beispiel weil du eine microSD-Karte voll mit Spielen besitzt und eine andere mit deiner Musik bestückt ist). Archos Fusion Storage ist vielmehr auf eine permanente Nutzung ausgelegt.

archos-50-diamond-yelow-v3-klein
Das Archos 50 Diamond gehört zu den ersten Smartphones, die mit der neuen Fusion-Storage-Technologie von Archos ausgestattet sind.

Zudem solltest du in jedem Fall eine schnelle Class-10-Karte in dein Handy einsetzen, um es nicht unnötig zu verlangsamen. Einen Testbericht von microSD-Karten findest du im Android-User-Archiv.

 

Fazit

Aktuell testen wir das Archos 50 Diamond (UVP 229 Euro)  in der Redaktion, das die neue Technologie Anfang Mai mit einer Handvoll Archos-Geräten zusammen als Software-Update erhalten hat, weitere Archos-Geräte sollen folgen. Nachteile der Lösung habe ich bisher keine gefunden, alle Apps und Spiele haben in den Tests problemlos funktioniert. Es wäre schön, wenn andere Hersteller mit microSD-Slot eine ähnliche Lösung einsetzen würden.

 

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

EMPFEHLUNGEN DER REDAKTION

MAGAZIN

APPS & SPIELE