The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Composefs вместо развития отдельной ФС, теперь реализована поверх OverlayFS и EROFS

18.07.2023 13:57

Доступен экспериментальный выпуск файловой системы Composefs 0.1.4, предназначенной для совместного хранения содержимого нескольких примонтированных дисковых образов. Проект развивает Александр Ларсон (Alexander Larsson), создатель Flatpak, с целью повышения эффективности монтирования образов контейнеров и размещения Git-подобного репозитория OSTree. Код проекта написан на языке Си и распространяется под лицензией GPLv2.

Изначально первый вариант Composefs представлял собой отдельную ФС, реализованную в форме модуля для ядра Linux. В выпуске 0.1.4 подход к разработке полностью пересмотрен и поддержка работы в виде модуля ядра прекращена. Так как во многом Composefs пересекается с уже существующим кодом в ядре, решено, что проще будет развивать Composefs в виде надстройки над уже присутствующими в ядре ФС OverlayFS и EROFS.

Подобный подход даст возможность получить необходимую функциональность через включения в ядро ряда патчей к OverlayFS, без необходимости проходить длительный процесс рецензирования и согласования включения в основной состав ядра отдельной файловой системы. В текущем виде все требуемые от EROFS возможности уже присутствуют в ядре Linux, начиная с выпуска 5.15. В OverlayFS требуется добавление поддержки режима "data-only" для каталогов нижнего уровня и возможности сохранения хэшей fs-verity в расширенном атрибуте (xattr) overlay.metacopy. Первое изменение уже принято в состав ветки ядра 6.5-rc1, а второе добавлено в ветку overlayfs-next и ожидает включения в выпуске 6.6. Более того, если пользователю не требуется проверка целостности, то можно уже сейчас использовать Composefs со штатными ядрами Linux, не дожидаясь включения патчей к OverlayFS.

Помимо набора изменений к OverlayFS проектом Composefs развивается загружаемый в пространстве пользователя FUSE-модуль composefs-fuse, инструментарий для создания и монтирования ФС из пространства пользователя (mkcomposefs, mount.composefs) и формат образов (используются монтируемые образы erofs и расширенные атрибуты overlayfs). Так как проект основывается на уже готовых компонентах ядра, его стабильность оценивается как пререлиз - первый стабильный релиз планируется выпустить после принятия в ядро оставшихся патчей к OverlayFS.

Базовая функциональность Composefs сводится к построению многослойных ФС, в которых произвольные деревья ФС в режиме только для чтения накладываются поверх штатных ФС Linux, выступающих в качестве нижнего слоя. От уже существующих похожих файловых систем, таких как SquashFS и EROFS, Composefs отличает поддержка совместного хранения содержимого разных образов и наличие функций для проверки подлинности читаемых данных. В Composefs применяется модель хранения с адресацией на основе содержимого, т.е. первичным идентификатором является не имя файла, а хэш от содержимого файла. Подобная модель обеспечивает дедупликацию и позволяет хранить только одну копию одинаковых файлов, встречающихся в разных примонтированных разделах.

Образы контейнеров содержат множество типовых системных файлов и в случае применения Composefs каждый из этих файлов будет совместно использован всеми примонтированными образами, без применения трюков, таких как проброс при помощи жёстких ссылок. При этом общие файлы не только хранятся в виде одной копии на диске, но и обходятся одной записью в страничном кэше, что даёт возможность экономить как дисковую, так и оперативную память.

Для экономии дисковой памяти данные и метаданные в Composefs разделены и при монтировании отдельно указывается бинарный индекс, в котором содержатся все метаданные файловой системы, имена файлов, права доступа и другие сведения. Индексы с метаданными создаются для каждого образа ФС и хранится в отдельном файле в формате EROFS. По сути образ контейнера представляет собой монтируемый в loopback-режиме образ EROFS, в котором присутствуют только метаданные. Непосредственно файлы всех монтируемых образов хранятся в общем базовом каталоге в обычной ФС (ext4, xfs, btrfs) и связываются с образом при помощи расширенного атрибута rusted.overlay.redirect, на базе которого OverlayFS находит необходимые файлы по хэшу содержимого.

Для верификации содержимого отдельных файлов и всего образа в условиях общего хранения применяется механизм fs-verity, который при обращении к файлам проверяет соответствие указанных в бинарном индексе хэшей с фактическим содержимым - если злоумышленник внесёт изменение в файл в базовом каталоге или данные повредятся в результате сбоя, то подобная сверка выявит расхождение.

Поддержка Composefs уже интегрирована в git-подобное хранилище OSTree и поддерживается, начиная с выпуска OSTree 2023.4. Для включения в состав OSTree также переданы патчи, позволяющие выполнять проверку достоверности образов, используя цифровые подписи ed25519, что позволяет применять проверки, применяемые при загрузке в режиме UEFI Secure Boot, не только к ядру и initrd, но и ко всему пользовательскому окружению. Изменения для поддержки Composefs также подготовлены для библиотеки storage, что позволит использовать Composefs для хранения образов контейнеров в Podman.

  1. Главная ссылка к новости (https://blogs.gnome.org/alexl/...)
  2. OpenNews: Для Linux предложена файловая система Composefs
  3. OpenNews: Доступна файловая система Reiser5
  4. OpenNews: Компания Cisco предложила файловую систему PuzzleFS для ядра Linux
  5. OpenNews: Компания Huawei предложила новую ФС EROFS для ядра Linux
  6. OpenNews: Обновление кластерной файловой системы LizardFS 3.13.0-rc2
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/59460-composefs
Ключевые слова: composefs, overlayfs, erofs, mount
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (73) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 14:41, 18/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Процесс разработки здорового человека: используют по максимуму существующий функционал.

    Вообще, флатпак сам по себе для здоровых людей. Хоть я его и не использую, нахожу очень полезными его компоненты типа xdg-portal-* и bubblewrap.

    Флатпак сила, снап могила.

     
     
  • 2.2, Пётр22 (?), 14:49, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +20 +/
    флатпак это такой же кал как и снап
     
     
  • 3.4, Аноним (4), 14:58, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Почему производители софта сами не сделали нормальный способ распространения бинарного софта?
     
     
  • 4.6, Пётр22 (?), 15:04, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Потому что религия не позволяет как в винде - две копии одной зависимости, видите ли, не комильфо

    Но вообще фаерфокс в стиле винды запакован например - все зависимости в папочке лежит, просто бинарник запускаешь и всё

     
     
  • 5.9, Аноним (4), 15:07, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Надо с этими сектантами что-то делать. Похоже придется создавать новых сектантов, которые будут правильно паковать софт.
     
     
  • 6.30, Аноним (30), 17:59, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    правильно - это как в винде, по миллиону копий каждой dll в Program\ Files\ \(x86\)/ ?
     
     
  • 7.32, кк (?), 18:16, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    зато работает сразу. без приседаний и упражнений в стиле "если вы решились в линукс то обязаны все это знать и уметь"
     
  • 7.33, Аноним (4), 19:17, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ты можешь без фанатизма объяснить что в этом плохого?
     
     
  • 8.38, Анониссимус (?), 20:15, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Жрёт место на диске Долгие обновления из-за сетевого трафика Уязвимости не ф... текст свёрнут, показать
     
     
  • 9.42, Аноньимъ (ok), 21:32, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Счастья то сколько сломать все то ПО что её сразу подхватило А иногда нужно для... текст свёрнут, показать
     
     
  • 10.67, Анониссимус (?), 12:08, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Если человек хочет, то пусть ломает ... текст свёрнут, показать
     
  • 9.50, Ололоид (?), 02:41, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну камон, во времена терабайтных NVMe и гигабитного безлимита кому есть дело до ... текст свёрнут, показать
     
     
  • 10.52, User (??), 07:23, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Аргумент а вот там уязвимостей больше - по этому здесь на исправления забьем -... текст свёрнут, показать
     
     
  • 11.68, Анониссимус (?), 12:10, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Где-то кажется тут же, на опеннете читал статистику, что большинство забандлен... текст свёрнут, показать
     
  • 9.51, Аноним (4), 07:16, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Какая-то бессмыслица особенно про место на диске ... текст свёрнут, показать
     
     
  • 10.61, Аноним (61), 09:40, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Отдать терабайт-плюс на диске под систему Вместо 3 гб Тем более на ссд, свобод... текст свёрнут, показать
     
     
  • 11.62, Аноним (61), 09:43, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Главное ведь тут то что раздувает Сегодня терабайт, а завтра уже 2 терабайта, и... текст свёрнут, показать
     
  • 10.69, Анониссимус (?), 12:17, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, бессмысслица Я постоянно слышу жалобы людей, что кончается место на телефо... текст свёрнут, показать
     
     
  • 11.73, Аноньимъ (ok), 19:07, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Этому не разделяемые библиотеки виной ... текст свёрнут, показать
     
     
  • 12.76, Анониссимус (?), 11:49, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не полностью, но свою лепту вносят ... текст свёрнут, показать
     
  • 5.74, Аноним (74), 23:22, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати, абсолютно также игровой движок Godot запакован, правда, одним жирным файлом на 120 Мб.
     
  • 4.10, Аноним (1), 15:20, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > производители софта сами не сделали нормальный способ распространения бинарного софта?

    Потому что производство софта и распространение софта -- это две разные области. За производство отвечают производители софта, а за дистрибьюцию -- дистрибьюторы через свои дистрибутивы.

     
     
  • 5.17, Аноним (4), 16:19, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Посмотри как это сделано в шинде, вот так должно быть и никак иначе.
     
     
  • 6.20, Аноним (1), 16:36, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +5 +/
    в шинде каждая собака переизобретает свой велосипед-обновлятор софта/контента.
     
     
  • 7.24, Аноним (4), 17:28, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Лол, чего бы они не делали всё просто работает. Даже герои 3 работают просто используя штатные элементы ос. В отличии от нативных героев 3 которые выходили для линукса.
     
  • 4.19, Аноним (-), 16:36, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Почему производители софта сами не сделали нормальный способ распространения бинарного софта?

    Потому что те кто хотел такую мусорку в системе - юзали винду.

     
     
  • 5.25, Аноним (4), 17:29, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Вот ляликс и сидит без софта как бедный родственник.
     
  • 5.56, Аноним (56), 08:02, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А в итоге мусорка в линуксе.
     
  • 4.36, Аноним2 (?), 19:53, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Сделали - пакеты.
     
  • 4.41, Аноним (41), 21:15, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Сделали. Он называется AppImage.
     
  • 4.59, Аноним (56), 08:06, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    MSI
     
  • 3.70, Андрей04091977 (ok), 12:44, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    флатпак и снап это абсолютно разные вещи, снап это образ монтируемый как loop, флатпак это не образ и даже не пакет.
     
  • 2.5, OpenEcho (?), 15:03, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Флатпак сила, снап могила.

    оба дрянь, если уж и заменять, то только AppImage

     
     
  • 3.7, Аноним (4), 15:04, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Если заменять то вендоуз
     
     
  • 4.45, Котофалк (?), 21:50, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    на линукс
     
  • 3.49, Аноним (49), 01:45, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Как раз AppImage дрянь редкостная как по проекту, так и по реализации. Надеюсь не нужно объяснять почему?
     
     
  • 4.57, Аноним (56), 08:04, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Нужно. Вот я, например, не понимаю, почему, если всё работает.
     
     
  • 5.64, n00by (ok), 11:04, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Разрешите, попробую угадать:

    AppImage придумала корпорация Симон Питер, а правильные две системы -- по-настоящему свободные люди RedHat и Canonical.

     
  • 5.77, Stax (ok), 07:10, 21/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Почитайте TL;DR тут: https://www.reddit.com/r/linux/comments/10vv9hi/fosdem_23_i_was_wrong_about_fl или посмотрите полное видео.

    AppImage недостаточно абстрагируется от системных библиотек и ломается (как пример, дистр перешел на fuse 3, а AppImage считают что fuse 2 будет в любой системе)

    У Снапа сэндбоксинг дальше убунты не работает. Вне убунты его тяжело собирать и невозможно сделать аудит того, что собирает каноникл.

     
  • 4.66, анон (?), 11:37, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не надейся, уж найди силы и потрудись превратить свою газификацию лужи в аргументированный ответ
     
  • 3.71, Андрей04091977 (ok), 12:48, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Appimage мёртвый формат, он работает только на иксах
     

  • 1.3, Аноним (4), 14:56, 18/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Очередное подтверждение того что модули ядра для линукса это тупиковая ветвь развития. Вот скоро придет микроядерная Фуксия, где всё это модуль и нарушить интерфейс взаимодействия ни программный ни бинарный ядро бай дизайн не может. Вот тогда заживём.
     
     
  • 2.35, anodymus (?), 19:38, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Эх... не сделали бы тогда QNX коммерческим, "сейчас бы пили баварское".
     
     
  • 3.65, анон (?), 11:35, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >"сейчас бы пили баварское".

    Объсните смысл фразы

     
     
  • 4.72, Аноним (72), 16:40, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я левый аноним, но просто предположу: Тотальная победа здравого смысла и мир / дружба / жвачка? :)
     
  • 4.79, Anon3 (?), 12:45, 28/08/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Если контекста насыпать, то как то так:
    Во времена ВОВ солдатам вермахта объясняли, что они освобождают Ленинград от комуняк, а _некоторые_ умирающие от голода ленинградцы ждали освобождения Ленинграда немцами и ненавидели сопротивляющихся (и не делящихся с ними едой) комуняк.
    Вот у некоторых выживших некомуняк, после войны осталась мысль "А вот сдались бы немцам, сейчас бы пили баварское". При этом игнорируется факт, что утвержденный план Гитлера (а не пропаганда для солдат вермахта) предусматривал тотальный голодомор даже сдавшегося населения Ленинграда
     

  • 1.8, Аноним (8), 15:05, 18/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Больше надстроек богу надстроек!
    Зачем делать отдельную отработанную сущность, если можно скрестить ежа с ужом, а потом гадать откуда бажина?
     
     
  • 2.12, Аноним (1), 15:25, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Зачем делать отдельную отработанную сущность

    Читай внимательнее: Так как во многом Composefs пересекается с уже существующим кодом в ядре.

    Если возникнет бага в ядре, то ее исправление исправит как прямых пользователей overlayfs/erofs, так и все надстройки над ними. Впрочем, чего это я тебе объясняю, ты к программированию отношения не имеешь. Погугли DRY например.

     
     
  • 3.15, Аноним (8), 15:52, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А потом в overlayfs/erofs нужно будет внести улучшения которые сломают Composefs и начнется костыляние - или поддержка двух вариантов логики, или адаптация Composefs, или и то и другое в разных пропорциях.
     
     
  • 4.16, Аноним (1), 16:06, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    есть ли у тебя такое возражение, которое было бы не предусмотрено ни ядром, ни сабжем? а то пока идут аргументы уровня мимокрокодила с улицы, имеющего Экспертное Мнение™ по вопросам, которые обсасывались уже тысячи раз
     

  • 1.11, Аноним (-), 15:22, 18/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Код проекта написан на языке Си и распространяется под лицензией GPLv2.

    Учитесь господа, вот так надо делать. И это не сарказм.

     
     
  • 2.13, Аноним_5 (?), 15:29, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Ждем получения рута при чтении файла?
    И это не сарказм.
     
  • 2.14, Сишник (?), 15:39, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Дыры лет 20 будут находить в этом поделии. Инфа сотка, чекай никнейм.
     
     
  • 3.18, Аноним (4), 16:21, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Почему ты так говоришь как будто это что-то плохое?
     
     
  • 4.39, Анонимусс (?), 20:27, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Конечно это прекрасно, все работают, все при деле, можно еще 20 лет "оказывать" поддержку.
    А то вдруг все начнет работать хорошо, вы что этого хотите???
     
     
  • 5.53, Аноним (4), 07:25, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Но всё эти 20 лет софт был и приносил пользу, а не кто-то бесконечно рассказывал как он этот софт напишет, но не писал. И все баги пофикшены а конечном счёте.
     
     
  • 6.58, Аноним (56), 08:05, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Все баги в сишном софте никогда не будут пофикшены.
     
     
  • 7.78, жоск (?), 02:19, 23/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    но, как минимум, софт написан и работает
     

  • 1.21, Аноним (21), 16:59, 18/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Чего только люди не напридумывают лишь бы NixOS не использовать
     
     
  • 2.23, Аноним (23), 17:22, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вменяемые люди очень многое готовы придумывать, лишь бы только не использовать NixOS.
     
     
  • 3.26, Аноним (4), 17:31, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Почему эти ваши люди так и не придумали что-то нормальное?
     
     
  • 4.48, Аноним (48), 23:41, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    придумали - не использовать NixOS
     
  • 2.27, Аноним (4), 17:37, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Для продвижения никсоса надо чтобы кто-то официально сказал всё делаем теперь только так. Например GNU или FSF.
     
     
  • 3.28, Аноним (21), 17:45, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    GNU и FSF уже сказали, что нужно делать как в Guix. Не то чтобы это сильно что-то поменяло
     
  • 3.29, Аноним (29), 17:53, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Говорю официально от лица Анонимной Ассоциации Онанимов: ставь пакетный менеджер nix для arch и сразу кончишь.

    wiki.archlinux.org/title/Nix

     
     
  • 4.34, Аноним (4), 19:19, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А что так можно было? Надо будет попробовать.
     
     
  • 5.37, Аноним (37), 20:01, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Конечно. Это ж главная киллер-фича. Ставишь любой линукс по умолчанию, а весь свой утиль, прикладуху, конфиги, костыли на баше и прочий багаж ставишь через Nix. После этого название дистрибутива практически перестаёт иметь значение, если только религиозное.
     
  • 3.31, Аноним (1), 18:13, 18/07/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > GNU или FSF

    Бестолковые шарашкины конторы. Не оглядываюсь на их мнение при использовании NixOS.

     

  • 1.40, BrainFucker (ok), 21:01, 18/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хм, любопытно, то есть OSTree можно использовать в качестве инкрементального бекапа?
     
     
  • 2.60, Аноним (60), 09:35, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    да, но если файлуха слетит - то твой бэкап отправится в места богатые дичью
     

  • 1.47, Тот_ещё_аноним (ok), 22:52, 18/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Те механизм хранения и использования разных версий одной библиотеки средствами ОС бОльшее зло, чем таскание всех зависимостей с собой вместе со специализированной фс(ещё одной)?
     
     
  • 2.54, Аноним (4), 07:30, 19/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Что не так? Если у тебя эти зависимости уже есть руками их со слоя сотри и всё. Если на твоём диске на 10 гигов нет места.

    А если у тебя в системе нужных либ нет, то тут уже ничего не сделаешь надо нести с собой.

     

  • 1.75, Аночик (?), 05:10, 20/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Печальна новость. Изначальная задумка была отличной то что сейчас мягко говоря тихий ужас.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру