Различия между версиями 6 и 7
Версия 6 от 2017-02-20 20:54:25
Размер: 9468
Редактор: ArsenyMaslennikov
Комментарий:
Версия 7 от 2017-02-20 20:54:45
Размер: 9469
Редактор: ArsenyMaslennikov
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 8: Строка 8:
 * ??? /!\ Чтото ещё?  * ??? /!\ Что-то ещё?

LXC и другие огороды

Проигрыватель виртуалок в качестве инструмента запуска заранее подготовленного чего угодно, конечно, хорош, но обладает несколькими недостатками

  • Невозможность по-полной использовать аппаратуру (например, 3D-видео)
  • Прожорливость по ресурсам
    • Понижение производительности
    • Медленная работа виртуализованного железа
  • ??? /!\ Что-то ещё?

Тут на поверхность выплывают системы частичной виртуализации и изоляции

  1. Unix-way: chroot
  2. (antic) VServer
  3. Xen
  4. Virtuozzo/OpenVZ
  5. LXC (о нём здесь)

LXC

Вопросы

  • Что это?
  • Какими механизмами (ядра?) и как пользуется?
  • Какие фичи предоставляет админу/пользователю?
  • Где и для чего используется?
  • Типичная практика эксплуатации
  • Безопасность?
    • Можно ли давать root, если да, то на каких условиях?
  • Можно ли и как честно поделить память/CPU между VE?
  • Зачем оно нам в плеере?
    • Можно ли VE запускать «из образа» (1-5 файлов), или нужно целое дерево в ФС?
    • Можно ли иметь доступ к видео/другому HW и чем это грозит плееру?
    • В каком виде?
    • Почему бы не сделать просто другой плеер, и не морочиться с LXC?

Ответы (будет дополнено после unиховки)

  • Q: Что это?
    • A: Механизм виртуализации Linux-userland или конкретного приложения на одном ядре (призванный заменить OpenVZ, но на ванильном ядре).
  • Q: Какими механизмами (ядра?) и как пользуется?
    • Представляет собой обёртку над Linux cgroups/namespaces
      • cgroups занимаются контролем ресурсов
      • namespaces обеспечивают изоляцию.
        • Из man namespaces(7):

          Linux provides the following namespaces:
          
                 Namespace   Constant          Isolates
                 Cgroup      CLONE_NEWCGROUP   Cgroup root directory
                 IPC         CLONE_NEWIPC      System V IPC, POSIX message queues
                 Network     CLONE_NEWNET      Network devices, stacks, ports, etc.
                 Mount       CLONE_NEWNS       Mount points
                 PID         CLONE_NEWPID      Process IDs
                 User        CLONE_NEWUSER     User and group IDs
                 UTS         CLONE_NEWUTS      Hostname and NIS domain name
    • На самом деле контейнеры, эквивалентные LXC, можно делать и без userspace-утилит LXC, просто прося ядро выделить cgroup и обособить некоторые (или все) пространства имён для init-процесса контейнера.
  • Q: Какие фичи предоставляет админу/пользователю?
    • TODO
  • Q: Где и для чего используется?
    • Здесь надо приводить примеры успешного внедрения ("а вот у них работает!")? -- ArsenyMaslennikov 2017-01-05 12:44:24

    • A: Для чего:
      • Изоляция целых юзерспейсов друг от друга с общим ядром
      • Запуск приложения с изолированным окружением (namespaces)
  • Q: Типичная практика эксплуатации
    • TODO
  • Безопасность?
    • Q: Можно ли давать root, если да, то на каких условиях?
      • A: Не вижу пока проблем, копаю в эту сторону, но фантазией в этой области не обладаю. Сюда бы какого-нибудь энтузиаста типа Августа. - -- ArsenyMaslennikov 2017-01-05 12:44:24

  • Q: Можно ли и как честно поделить память/CPU между VE?
    • A: Ответ вида "на, отвяжись": цыгруппами!
      • TODO: привести пример, как.
  • Зачем оно нам в плеере?
    • Q: Можно ли VE запускать «из образа» (1-5 файлов), или нужно целое дерево в ФС?
      1. А шо плохого в дереве, если правильно его rsync-ать?
      2. Можно в конфиге контейнера (или опцией -B тип) указать, где rootfs. Из man lxc-create:

        • -B, --bdev backingstore
          
          'backingstore'  is one of 'dir', 'lvm', 'loop', 'btrfs', 'zfs', 'rbd', or 'best'. The default is 'dir', meaning that the container root filesystem will be a directory under /var/lib/lxc/container/rootfs.  This backing store type allows the optional --dir ROOTFS to be specified, meaning that the container  rootfs  should  be placed under the specified path, rather than the default. (The 'none' backingstore type is an alias for 'dir'.) If 'btrfs' is specified, then the target filesystem must be btrfs, and the container rootfs will be created as a new subvolume. This allows snapshotted clones to be created, but also causes rsync --one-filesystem to treat  it  as a separate filesystem.  If backingstore is 'lvm', then an lvm block device will be used and the following further options are available: --lvname lvname1 will create an LV named lvname1 rather than the default, which is the container name. --vgname vgname1 will create the LV in volume group vgname1 rather than the  default, lxc. --thinpool thinpool1 will create the LV as a thin-provisioned volume in the pool named thinpool1 rather than the default, lxc.  --fstype FSTYPE will create an FSTYPE filesystem on the LV, rather than the default, which is ext4.  --fssize SIZE will create a LV (and filesystem) of size SIZE rather  than  the default, which is 1G.
          
          If backingstore is 'loop', you can use --fstype FSTYPE and --fssize SIZE as 'lvm'. The default values for these options are the same as 'lvm'.
          If backingstore is 'rbd', then you will need to have a valid configuration in ceph.conf and a ceph.client.admin.keyring defined.  You can specify the following options : --rbdname RBDNAME will create a blockdevice named RBDNAME rather than the default, which is the container name.  --rbdpool POOL will create the blockdevice in the pool named POOL, rather than the default, which is 'lxc'.
          If backingstore is 'best', then lxc will try, in order, btrfs, zfs, lvm, and finally a directory backing store.
        • Заранее мы все знаем, что Рома предпочтёт zfs (ради этого он и пропагандирует, что пора уходить с OpenVZ).
      3. Если мыслить о практикуме и образах ОС-контейнеров, то либо лупдевайс (меееедленно), либо tar/cpio/squashfs и распаковка/монтирование, либо ZFS на хостах;
        • Здесь возникает шаловливая мысль о Linux-прошивке и LXC-контейнерах-гостях, но нуждается в проработке (у нас уже есть легаси, и оно почти работает).
      4. В случае контейнера для приложения (голый браузер, например)... да с точки зрения bdev то же самое.
    • Q: Можно ли иметь доступ к видео/другому HW и чем это грозит плееру?
      • А мы на Ы14 X запустили? Можно попробовать запустить и в контейнере.
        • Такие вещи, возможно, лучше гонять на домашних машинах, а потом портировать на Ы14.
    • В каком виде?
    • Q: Почему бы не сделать просто другой плеер, и не морочиться с LXC?
      • A: Скорость запуска. Надо осознать, каково дефолтное состояние машины, когда в класс приходит препод: скорее всего, она включена и загружен наш плеер. В предложенном варианте, чтобы загрузить другой для задачи "броузер+мудль", например, преподу придётся ребутать весь класс.
      • A: перегрузка функциональности груб-прошивки. Хороший вопрос: где мороки больше?


Category762

Meetings/762/2017-01-10 (последним исправлял пользователь ArsenyMaslennikov 2017-02-20 20:54:45)