Аватар пользователя B.X

Quis est enim qui totum...

Quis est enim qui totum diem iaculans non aliquando conlineet. — Найдётся ли такой человек, который, бросая дротик целый день напролёт, не попадёт хоть разок в цель?

Top.Mail.Ru Каталог webplus.info Яндекс.Метрика

Пользователей онлайн: 0.

«Они считали чувство вины ошибкой, а угрызения совести — слабостью. Они всегда были практичны и никогда — сентиментальны. Но дружба их не имела границ.»

Файловая система ( / rootfs) полностью в RAM... | [Харзах]-[РУ]

Аватар пользователя B.X

Давно наблюдаю за Puppyrus Linux очень мне нравится идея работать полностью в оперативной памяти. И быстро и диски не вырабатывают свой ресурс. И надёжно, так как чтобы ни случилось, после перезагрузки, у тебя новая система. Но, почему-то никто не хочет видеть очевидное и все основные дистрибутивы (и не основные тоже) ничего не делают, чтобы дать возможность работать всем в оперативной памяти. Хотя, технология довольно проста, правда не для всех дистрибутивов. На эту тему я нашёл всего две статьи, 2011 и 2015 годов. Одна на английском, вторая на русском.

Почему я вообще затронул эту тему и решил провести такой эксперимент, всё очень просто, у меня полетел SSD-диск, а на HDD, на который я переустановил систему, всё работает очень уж неторопливо. И мне это не нравится. Покупать новый диск? Так он тоже может полететь, причём весьма неожиданно. Если HDD-диски становятся нежизнеспособными не в один момент (хотя, не всегда), то SSD у меня умер сразу, буквально за пару минут. Очень неприятное чувство, хорошо, что у меня были бэкапы и системных настроек и тем, которые мне нравятся.

Итак, приступим. Начнём с того, что HOWTO для первого способа были написаны только для Debian-совместимых дистрибутивов, поэтому мне пришлось, установить на соседний раздел, MXLinux и сделать всё с его помощью. Конечно, некоторые настройки изменились и в файлах всё не так, как четыре и девять лет назад, но слава всевышним силам, до initramfs шаловливые руки Поттеринга и иже с ним, ещё не добрались и код рабочий. Сначала приведу две статьи источника, вот эту (сразу скажу, что код там с ошибками и надо будет кое-что поправить) и вот эту, здесь предлагается использовать дополнительно файл, в который надо было бы загрузить всю систему, которая находится на диске, так как это лишняя сущность, то этот код я использовал больше для справки.

Первый способ:
1. В файле /usr/share/initramfs-tools/scripts/local ищем на строках 179-185 (предварительно сделав бэкап файла):

checkfs "${ROOT}" root "${FSTYPE}" # Mount root # shellcheck disable=SC2086 if ! mount ${roflag} ${FSTYPE:+-t "${FSTYPE}"} ${ROOTFLAGS} "${ROOT}" "${rootmnt?}"; then panic "Failed to mount ${ROOT} as root file system." fi

И меняем этот код на такой:

#checkfs "${ROOT}" root "${FSTYPE}" # Mount root # shellcheck disable=SC2086 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

2. Сохраняем файл. И вводим команду в терминале от рута:

mkinitramfs -o /boot/initrd.img-ramboot

3. Проверяем, что файл создан в папке /boot и возращаем старый local в папке /usr/share/initramfs-tools/scripts/local на место (или удаляем все наши изменения, которые мы сделали в шаге 1).
4. Идём в папку /etc и находим файл fstab, сохраняем его копию и редактируем его, ищем в первых строках что-то вроде этого:

UUID=35378150-4a4b-4405-b856-c5f533a971e2 / ext4 defaults 1 1

и меняем на:

none / tmpfs defaults 0 0

5. Сохраняем и идём в папку /boot/grub, находим grub.cfg и изменяем (предварительно сохранив копию) эти строки 106-121:

menuentry 'MX 19.2 patito feo, with Linux 4.19.0-12-amd64' --class mx --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-12-amd64-advanced-35378250-4a4b-4405-b956-c5f546a970e2' { load_video insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod part_msdos insmod ext2 set root='hd2,msdos3' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos3 --hint-efi=hd2,msdos3 --hint-baremetal=ahci2,msdos3 35378250-4a4b-4405-b956-c5f546a970e2 else search --no-floppy --fs-uuid --set=root 35378250-4a4b-4405-b956-c5f546a970e2 fi echo 'Loading Linux 4.19.0-12-amd64 ...' linux /boot/vmlinuz-4.19.0-12-amd64 root=UUID=35378250-4a4b-4405-b956-c5f546a970e2 ro quiet hush echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-4.19.0-12-amd64 }

на тот код, что находится ниже, то есть, просто добавляем ещё одно меню, немного видоизменённое в названии и на строчке initrd (для других систем, этот код меню, естественно, будет другой, но те изменения, которые сделали мы, будут те же самые):

menuentry 'RAMBOOT' --class mx --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-12-amd64-advanced-35378250-4a4b-4405-b956-c5f546a970e2' { load_video insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod part_msdos insmod ext2 set root='hd2,msdos3' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos3 --hint-efi=hd2,msdos3 --hint-baremetal=ahci2,msdos3 35378250-4a4b-4405-b956-c5f546a970e2 else search --no-floppy --fs-uuid --set=root 35378250-4a4b-4405-b956-c5f546a970e2 fi echo 'Loading Linux 4.19.0-12-amd64 ...' linux /boot/vmlinuz-4.19.0-12-amd64 root=UUID=35378250-4a4b-4405-b956-c5f546a970e2 ro quiet hush echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-ramboot } menuentry 'MX 19.2 patito feo, with Linux 4.19.0-12-amd64' --class mx --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-12-amd64-advanced-35378250-4a4b-4405-b956-c5f546a970e2' { load_video insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod part_msdos insmod ext2 set root='hd2,msdos3' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos3 --hint-efi=hd2,msdos3 --hint-baremetal=ahci2,msdos3 35378250-4a4b-4405-b956-c5f546a970e2 else search --no-floppy --fs-uuid --set=root 35378250-4a4b-4405-b956-c5f546a970e2 fi echo 'Loading Linux 4.19.0-12-amd64 ...' linux /boot/vmlinuz-4.19.0-12-amd64 root=UUID=35378250-4a4b-4405-b956-c5f546a970e2 ro quiet hush echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-4.19.0-12-amd64 }

Теперь у нас два варианта меню. Если надо зайти в быструю систему и комфортно работать, то мы идём в RAMBOOT, а если надо обновиться или что-то сделать с системой, то идём во второе меню, которое никак не изменилось. Конечно, нельзя не сказать о недостатках, а именно о долгой загрузке такой системы, то есть, чем больше у вас на диске занимает файловая система ( / rootfs), тем дольше будет загружаться компьютер. Но на самом деле это не так страшно. Дело привычки, да и систему можно постараться уменьшить в размере. Наверняка возможны какие-то варианты со сжатыми файловыми системами только для чтения и тд. Лучше всего, конечно, всё это реализовано в Puppyrus Linux, но там другая проблема, нет стабильного репозитария и собирают пакеты все, кто может и часто нет того, что нужно.

Добавлено(1) - через несколько часов: После нескольких часов работы, могу сказать, что ощущения от работы в оперативной памяти просто несравнимы. Ни с SSD, ни с HDD. Особенно это заметно при просмотре сайтов в интернете. Всё просто летает, открывается мгновенно, браузер не тормозит, ни при возвращении на предыдущую страницу, ни при открытии новых (которые теперь зависят действительно только от интернета). И это Vivaldi (основанный на Хроме), что уж говорить о других, более легковесных браузерах, там вообще даже минимальных задержек нет. Интересное ощущение, удивительное...

Добавлено(2) - 26.10.2020: Для изменения последующей загрузки, чтобы не работать в вечно неизменной системе, я изменяю состояние раздела, с которого загрузился. Например, добавил ссылку в закладки браузера или наоборот, удалил что-нибудь ненужное, монтирую (разделы наверняка будет примонтированы автоматически при загрузке, тогда их сначала отмонтируем и перемонтируем в ручном режиме) тот раздел, который у меня теперь в RAM и меняю там файлы, которые нужно. У браузера просто копирую папку настроек, которые находятся в домашнем разделе (/home//"user"), у других программ - аналогично. Таким образом, все изменения в системе находятся под моим контролем и если мне что-то не нужно, то этого у меня не будет. Также, могу тестировать какие-нибудь программы, не опасаясь за целостность ОС (код для примера, на других компьютерах нужно указать другие значения диска):

sudo mkdir /mnt/root sudo mount /dev/sdc3 -v /mnt/root

Добавлено(3) - 28.10.2020: Использую в течение нескольких дней такую систему. Очень всё быстро работает, постепенно начинаю привыкать к такой скорости, но всё равно, всё радует. Например, фильмы онлайн если смотреть, на youtube всё стало отзывчивей. Единственный недостаток, это долгая загрузка ОС. С моими почти 10GB, загружается 7 минут 10 секунд (специально секундомером мерил). Также приобретаю привычку, при нужных изменениях (закладки, изменения в настройках), записывать сразу изменения на диск, чтобы не забыть. Зато выключение компьютера почти мгновенное. На самом деле, со скоростью загрузки можно, наверное, что-то сделать... почистить логи, кеши, а может быть вообще всё поотключать, но это сделаю позднее. Кстати, с SSD-диска скорость загрузки должна быть выше. Не знаю, насколько, но должно быть существенно, так что имеет смысл подумать об этом...

Второй способ:
Нашёл его в обсуждении на ЛОРе. Оригинал кода здесь. Это уже изменённый мной скрипт. По умолчанию, он создавал rootfs в памяти только 10GB, чего естественно мне не хватало. Я поправил код и теперь root раздел в RAM занимает 80% от существующей памяти. Можно и меньше сделать, я думаю... Чтобы всё работало, перед выполнением этого кода, создайте в папке /mnt папку mnt - или измените пути в скрипте.

# Script to copy / to tmpfs and continue boot from there # Do not run this from a child shell. Use ". ramify" or exec. # The shell running this script must be the only process on the system. # Ensure this runs in / cd / # Create and mount tmpfs file system for / mount -t tmpfs -o size=80% tmpfs mnt/mnt # Copy everything from / filesystem to tmpfs # Tar will restore proper owners and permissions when run as root # FIXME: This is very slow because it reads / in many small pieces # TODO: Add --exclude to prevent copying unneeded stuff tar --one-file-system -c . | tar -C /mnt/mnt -x # Move other mounts mount --move dev mnt/mnt/dev mount --move proc mnt/mnt/proc mount --move run mnt/mnt/run mount --move sys mnt/mnt/sys # Create fstab with just new root file system sed -i '/^[^#]/d;' mnt/mnt/etc/fstab echo 'tmpfs / tmpfs defaults 0 0' >> mnt/mnt/etc/fstab # Pivot root using instructions from pivot_root(8) man page cd mnt/mnt mkdir old_root pivot_root . old_root # Old root can only be unmounted once sh running from old root # finishes. Continue startup normally using init. exec chroot . bin/sh -c "umount old_root ; exec sbin/init"

После этого убиваем дисплейный менеджер (у меня Slim) и заходим заново (меня выбрасывает в консоль и я стартую через startx) и смотрим, что осталось от старой системы, командой:

lsof /old_root

Всё это убиваем. И собственно, всё. Я для этого запускаю небольшой скрипт, типа такого (в другом окружении наверняка убивать надо будет что-то другое, но как пример):

#!/bin/sh sudo killall /old_root/usr/bin/python3.9 sudo killall /old_root/usr/sbin/NetworkManager sudo killall /old_root/sbin/udevd sudo killall /old_root/sbin/dhclient sudo killall /old_root/bin/udevadm sudo killall /old_root/usr/sbin/anacron

Третий способ:
Разработано специально для ArchLinux. Так что, скорее всего, не работает в других дистрибутивах (не протестирован) ramroot.

Ну и несколько скриншотов напоследок, по работающей системе, в conky видно, что десять с лишним гигабайт заполнены (раньше было меньше 1GB) в оперативной памяти и ещё десять свободны, используемые гигабайты - это именно наша rootfs:

Аватар пользователя Гость

Kräftige Beiträge! Ich habe es genossen. Wird es einen 2.

Teil geben?

Feel free to surf to my web blog; Gedanken-Power

Аватар пользователя Гость

Großer Post, ich stehe auch vor einigen dieser Probleme…

Take a look at my web blog; Online Coaching

Аватар пользователя Гость

Klar mag ich deine Seite, aber prüf mal deine Rechtschreibung in einigen Artikeln. Manche haben ein paar Fehler, und es fällt schwer, den Inhalt ganz
zu verstehen. Trotzdem komme ich bestimmt wieder.

Feel free to surf to my web-site; Gedanken-Power

Аватар пользователя Гость

Ich mag was ihr so macht. Solch ein solcher kreative Arbeit und Präsentation! Macht
weiter so, fabelhafte Arbeit Leute, ich habe euch in meine
Blogroll aufgenommen.

Look at my blog - Life Coach

Аватар пользователя Гость

Ich denke, der Admin dieser Website arbeitet sehr hart, denn jeder Inhalt hier ist qualitätsfokussiert.

My web site Gedanken-Power

Аватар пользователя Гость

Hallo, ich lese regelmäßig alle deine Artikel. Ich wollte nur einen kleinen Kommentar hinterlassen, um
dich zu unterstützen.

Also visit my website; Gedanken-Power

Аватар пользователя Гость

Zuerst möchte ich sagen, großartiger Blog! Ich habe eine kurze Frage, falls du nichts dagegen hast: Wie schaffst du es, dich zu sammeln und die Gedanken zu klären, bevor du schreibst?

Ich habe Schwierigkeiten, meinen Kopf freizubekommen und meine
Gedanken zu ordnen. Ich genieße das Schreiben, aber die ersten 10-15 Minuten gehen nur
drauf, um zu überlegen, wie ich anfange. Hast du Tipps?

Dankeschön!

Here is my webpage - Gedanken-Power

Аватар пользователя Гость

Es ist nicht leicht, Leute zu finden, die sich in diesem Thema wirklich auskennen, aber du klingst, als würdest
du genau wissen, wovon du sprichst! Danke.

Here is my website :: Gedanken-Power

Аватар пользователя Гость

Jetzt gehe ich, um mein Frühstück zu machen, nach dem Frühstück lese ich mehr.

Also visit my blog :: Gedanken-Power

Аватар пользователя Гость

Selbstverständlich mag ich deine Website, aber du solltest bei einigen Beiträgen die Rechtschreibung
checken. Einige davon haben kleine Fehler
und es ist etwas schwierig, die Aussage zu verstehen. Ich komme trotzdem wieder.

My web page; Gedanken-Power

Аватар пользователя Гость

Hey da, würdest du mir verraten, bei welchem Hosting-Anbieter du bist?
Ich habe deinen Blog in 3 verschiedenen Internetbrowsern geladen und er war viel flotter als die meisten anderen. Kannst du einen soliden Hoster zu einem akzeptablen Preis empfehlen? Danke, ich bin dankbar!

Feel free to surf to my site: Online Coach

Аватар пользователя Гость

Am Ende meines Tages, aber bevor er endet, lese ich diesen tollen Artikel,
um mein Wissen zu erweitern.

my website; Gedanken-Power

Аватар пользователя Гость

Dieser Website war ... wie sagt man ... zutreffend! Endlich habe
ich etwas gefunden, das mir weiterhalf. Danke!

Check out my web site ... Gedanken-Power

Аватар пользователя Гость

Alles ist sehr transparent mit einer klaren Beschreibung der Probleme.
Das war wirklich informativ. Deine Website ist
sehr hilfreich. Danke fürs Teilen!

Feel free to surf to my web site - Online Coaching

Аватар пользователя Гость

Ich liebe deinen Blog.. sehr schöne Farben & Theme.

Hast du das selbst designt oder jemanden damit beauftragt?
Bitte antworten, denn ich würde meinen eigenen Blog gerne aufbauen und würde gern wissen,
woher du das hast. Danke!

Also visit my page ... Gedanken-Power

Аватар пользователя Гость

Netter Blog hier! Außerdem lädt deine Website sehr rasch!

Welchen Hoster verwendest du? Dürfte ich deinen Affiliate-Link haben?
Ich hoffe, meine Seite lädt auch so schnell wie deine :
D

Feel free to surf to my webpage - Gedanken-Power

Аватар пользователя Гость

Mein(e) Gatt(in) und ich sind zufällig von einer anderen Adresse rüber gekommen und
dachten, wir gucken mal. Wir mögen, was wir sehen, also bleiben wir dran. Wir freuen uns auf
deine Posts.

Here is my website ... Gedanken-Power

Аватар пользователя Гость

Hallo, ich weiß, das ist etwas off-topic, aber weißt du, wo ich ein Captcha-Plugin für mein Kommentarfeld bekommen kann?

Ich nutze die gleiche Blog-Plattform wie du und finde keines.
Danke!

my web blog :: Gedanken-Power

Аватар пользователя Гость

Mir wurde dieser Blog von meinem Cousin empfohlen. Ich bin nicht sicher, ob dieser Beitrag von ihm verfasst wurde,
da niemand sonst so ausführlich über mein Problem Bescheid weiß.
Du bist toll! Danke!

Look into my web-site; Gedanken-Power

Аватар пользователя Гость

Jetzt gehe ich, um zu frühstücken, danach lese ich mehr Infos.

Visit my homepage - Coaching

Аватар пользователя Гость

Nachdem ich ein paar Blogposts auf deiner Seite angesehen habe,
gefällt mir deine Schreibweise sehr. Ich setze dich auf
meine Lesezeichenliste und werde bald wiederkommen. Bitte schau auch
mal auf meiner Webseite vorbei und sag mir deine Meinung.

Here is my website: Gedanken-Power

Аватар пользователя Гость

Ich wollte dir für diesen super Beitrag danken!! Ich
habe jede Menge Spaß beim Lesen gehabt. Ich habe dich als Favorit gespeichert, um neue
Beiträge zu lesen...

My web page: Gedanken-Power

Аватар пользователя Гость

Hallo, ich glaube, ich habe dich auf meinem Blog besucht, also
bin ich gekommen, um den Gefallen zu erwidern. Ich versuche, meine Website zu verbessern! Ich glaube, es
ist ok, wenn ich einige deiner Ideen nutze!!

Here is my blog ... Life Coach Online

Аватар пользователя Гость

Ich verschicke diesen Weblog immer an alle meine Bekannten, weil wenn sie
ihn anschauen, dann werden sie es auch tun.

Feel free to surf to my web site - Life Coach - Vernon,

Аватар пользователя Гость

Dieses Layout ist echt klasse! Du weißt offensichtlich, wie man einen Leser am
Ball hält. Mit deinem Humor und den Videos war ich fast geneigt, meinen eigenen Blog zu starten (naja, fast… HaHa!).
Genial. Ich mochte deinen Inhalt und wie du
ihn präsentierst. Richtig cool!

Have a look at my site: Gedanken-Power

Аватар пользователя Гость

Mir gefällt das Design/Thema deines Blogs. Hast du Probleme mit Browserkompatibilität?
Einige meiner Besucher haben angemerkt, dass meine Website in Explorer nicht richtig funktioniert, aber in Safari gut aussieht.
Hast du Ideen, um das Problem zu beheben?

Here is my web page; Gedanken-Power

Аватар пользователя Гость

Ich habe ein wenig gestöbert, um hochwertige Artikel oder Blogposts
in diesem Themenbereich zu finden. Beim Stöbern bei Yahoo bin ich am Ende über diese Website gestolpert.
Während ich Lesen dieser Infos bin ich echt froh, dass ich genau das
gefunden habe, was ich brauchte. Ich werde bestimmt nicht versäumen, diese Seite im Blick zu behalten.

Here is my blog post: Gedanken-Power

Аватар пользователя Гость

Klasse Blog hier! Deine Seite lädt sehr schnell. Welchen Anbieter nutzt du?
Könnte ich bitte deinen Affiliate-Link haben? Ich hoffe,
meine Seite lädt auch so schnell wie deine :D

Also visit my web page :: Coaching

Аватар пользователя Гость

Als Lesezeichen gespeichert!! Ich liebe deinen dein Webangebot!

Also visit my homepage :: Gedanken-Power

Аватар пользователя Гость

Super Beitrag, ich schaue immer hier und bin angetan! Extrem nützliche Infos,
speziell der letzte Teil :) Ich hab nach sowas gesucht, danke und viel Glück.

Here is my web-site Gedanken-Power

Аватар пользователя Гость

Hey, hattest du je Probleme mit Hackern? Mein alter Blog (Wordpress) wurde gehackt, und
ich verlor Monate an Arbeit, da kein Backup da war.

Hast du Tipps?

Feel free to visit my website Gedanken-Power

Аватар пользователя Гость

Mir gefällt die hilfreiche Info, die du in deinen Artikeln anbietest.
Ich speichere deinen Blog als Lesezeichen und prüfe regelmäßig,
was es Neues gibt. Ich bin ziemlich sicher, dass ich
hier noch viel Neues lernen werde! Viel Erfolg als Nächstes!

Here is my page - Gedanken-Power

Аватар пользователя Гость

Es ist fast das Ende meines Tages, aber bevor ich
fertig werde, lese ich diesen tollen Artikel, um mein Wissen zu erweitern.

my webpage Gedanken-Power

Аватар пользователя Гость

Alles sehr offen und klar erläutert. Wirklich aufschlussreich.
Deine Seite ist sehr hilfreich. Danke fürs Teilen!

Feel free to visit my homepage ... Life Coach (Elden)

Аватар пользователя Гость

Mein Partner und ich sind zufällig von einer anderen Webseite gelandet und dachten uns, wir
sehen mal rein. Was ich sehe, gefällt mir, also folge ich dir ab jetzt.
Ich freu mich darauf, deine Seite nochmals zu besuchen.

My homepage - Gedanken-Power

Аватар пользователя Гость

Alles sehr transparent mit wirklich einer klaren Darstellung
der Probleme. Auf jeden Fall informativ. Deine Seite ist
extrem nützlich. Danke fürs Teilen!

My web page - Online Coach

Аватар пользователя Гость

Jetzt gehe ich, um zu frühstücken, danach lese ich mehr Infos.

Also visit my web site - Gedanken-Power

Аватар пользователя Гость

Hi da, ich habe deine Webseite zufällig über Google gefunden, während ich nach einem
ähnlichen Thema suchte. Deine Seite tauchte auf und sie sieht toll aus.

Ich habe sie in meinen Google-Lesezeichen gespeichert.
Hi, ich bin nur auf deine Seite über Google gestoßen und
merkte, dass sie sehr informativ ist. Ich passe auf, wie es in Brüssel
so ist. Ich wäre dankbar, wenn du das in Zukunft weitermachst.
Viele Leute werden von deinen Beiträgen profitieren. Danke!

Feel free to surf to my web page - Online Coach (Chassidy)

Аватар пользователя Гость

Schreib mehr, das ist mein Rat. Anscheinend verlässt du dich zu sehr
auf Videos, um deinen Punkt klarzumachen. Du kennst dich gut aus.

Warum dein Können nur in Videos stecken? Gib uns doch etwas
Lesematerial!

my blog post; Gedanken-Power

Аватар пользователя Гость

Hey da, würdest du mir verraten, bei welchem Webhost du bist?
Ich habe deinen Blog in 3 unterschiedlichen Browsern geladen und er war viel
schneller als die meisten anderen. Kannst du einen soliden Hoster zu einem akzeptablen Preis empfehlen?
Vielen Dank, ich bin dankbar!

Look into my page - Gedanken-Power

Страницы