On Tue, Aug 02, 2005 at 09:06:52AM +0300, Michael Shigorin wrote: > On Tue, Aug 02, 2005 at 09:29:10AM +0400, Alexey Tourbin wrote: > > > > Одно из преимуществ hasher -- в том, что это всё в пределах > > > > POSIX API. > > > в vserver тоже все в пределах POSIX API (если я правильно > > > понял эти пределы) - он затрагивает только linux caps. > > Просто я не в курсе, что такое vserver. По моим > > представлениям, это какай-то хак на ядро. Попробую > > просветиться. > Это клёвый хак на ядро :-) Уже все серверы посъезжали. В докладе ldv перечислены некоторые популярные "виртуализаторы", но нет сравнительного анализа. Интересно, кому-нибудь попадался сравнительный анализ? Меня прежде всего интересует "виртуализация для разработчика", по следующим критериям: 1) Минимально необходимые привилегии для порождения виртуальной среды. В идеале, виртуальная среда должно порождаться без изменения credentials вообще, и так же просто, как запуск /bin/vi. В хешере используется суидный хелпер, но для получения доступа к нему требуется разовое действие со стороны администратора (суидный хелпер в любом случае необходим как минимум для вызова chroot(2)). В vserver, как я подозреваю, для создания виртуальной среды требуются права рута в хост-системе, что неприемлемо для сборочных серверов. В UML требуются какие-нибудь права (в частности, для монтирования внешних по отношению к среде каталогов)? 2) Максимально правдоподобная эмуляция внутри виртуальной среды. То есть рут внутри виртуальной среды должен чувствовать себя рутом (например, в части изменения ownership у файлов в среде). У хешера с этим никак, ${USER}_a на самом деле бесправен даже по отношению к ${USER}_b, просто используется fakeroot. Пример: $ hsh-run --rooter ~/build chgrp builder /var/cache/apt $ hsh-run --rooter ~/build -- ls -dl /var/cache/apt drwxrws--- 3 root root 72 Aug 2 10:49 /var/cache/apt $ hsh-run --save-fakeroot --rooter ~/build chgrp builder /var/cache/apt fakeroot: database file `/.fakedata' does not exist. $ touch ~/build/chroot/.fakedata $ hsh-run --save-fakeroot --rooter ~/build chgrp builder /var/cache/apt $ hsh-run --save-fakeroot --rooter ~/build -- ls -dl /var/cache/apt drwxrws--- 3 root root 72 Aug 2 10:49 /var/cache/apt $ То есть никак. (В этом примере я хочу отдать каталог /var/cache/apt пользователю builder, чтобы он смог сделать "apt-get source"). В vserver и UML с этим, похоже, проблем нет; но это виртуализаторы другого класса; все виртуализаторы на основе чрута будут этой проблеме подвержены (потому что настоящего рута в чруте быть не должно; а рут в системе всего один, притом настоящий). 3) Достаточно гибкие инструмены для передачи информации между виртуальной и внешней средами; у хешера с этим хорошо; у UML, я так подозреваю, что плохо.