Linux-on-Linux KVM: какую файловую систему я должен использовать для гостя и хоста?

Я нахожусь в процессе игры с KVM и настройки linux на linux-сервере, так что я могу

  • перезагрузите (гостевой) сервер
  • зашифруйте rootFS гостя без необходимости выполнять initramfs-трюки, чтобы удаленная перезагрузка заработала.

Я думаю об использовании btrfs в качестве файловой системы, так как это один SSD-диск и не RAID.

Следующие мысли:

  • Если я использую btrfs на хосте, у меня отличная целостность данных, все контрольные суммы и т. Д.
  • Так что я могу использовать что-то быстрое и простое, может быть, даже ext2 для гостя?

Или я должен сделать это наоборот?

3 ответа

Решение

Запуск BTRFS на хосте для образов дисков (qcow2 и т. Д.) - очень плохая идея. Стиль записи на диск в файл образа является худшим шаблоном ввода-вывода для btrfs, страница настройки KVM не содержит много советов:

http://www.linux-kvm.org/page/Tuning_KVM

Но в этом они ясны:

"Не используйте btrfs файловой системы linux на хосте для файлов изображений. Это приведет к низкой производительности ввода-вывода. Гость kvm может даже зависнуть, когда на госте выполняется высокий трафик ввода-вывода".

Я использую ext4 для локальных файлов и хранилище NFS через ZFS на Solaris для образов удаленных дисков. В ближайшее время мы перейдем на акции iscsi на базе zfs. Если вам не нужно хранилище файлов nas / central и у вас будет относительно стабильное количество виртуальных машин, лучше всего использовать DukeLion.

Мы используем кластер для тестирования программного обеспечения, поэтому мы создаем тысячи виртуальных машин каждый день, используя оверлейные файлы qcow2. LVM не поддерживает это.

Все зависит от того, чего вы хотите достичь.

Я бы не рекомендовал использовать ext2 для root fs на любом сервере - виртуальном или физическом. В некоторых случаях производительность может снизиться, а несоответствия файловой системы все еще возможны, что делает перезагрузки невероятно медленными.

Если вам нужна простота и производительность - я бы посоветовал вам поместить гостевой образ на логический том lvm и использовать btrfs/ext4/xfs в гостевой системе.

На момент написания этой статьи прошло более 10 лет с момента первоначального вопроса. И я осмелюсь сказать, что ответ в настоящее время не так очевиден, как это могло быть раньше.

BTRFS имеет интересную функцию для использования на хосте виртуальной машины: снимки на подтомах. По сути, это позволяет вам создать снимок «каталога» (на самом деле, подобъема). Подтом может содержать несколько файлов.

Это правда, что, как файловая система COW, btrfs действительно страдает от ударов со стороны виртуальной машины, работающей с ее образом диска. То есть, если вы не отключите алгоритм COW. Вы можете отключить COW двумя способами:

  1. используяnodatacowопция монтирования на весь том (не работает выборочно на подтомах)

  2. с использованиемchattr -C. Чтобы проверить результат, используйтеlsattr. Если вы хотите, чтобы это применялось к подкаталогу или подтому, примените атрибут «no COW» к только что созданному подкаталогу или подтому, чтобы все вновь созданные файлы унаследовали этот атрибут.

Отключение COW приведет к тому, что BTRFS будет избегать трюков COW, если это вообще возможно. Только в случае крайней необходимости, например, когда моментальный снимок создается и используется, минимальное количество COW все равно происходит.

В гостевой системе я бы использовал любую надежную файловую систему с поддерживаемой кодовой базой, которая желательно не требует ресурсов. Ext4 звучит как «неплохой вариант».

Чтобы сэкономить дисковое пространство на хосте, вы можете указать QEMU, чтобы он следил за командами «отбросить» или TRIM, поступающими от гостевой виртуальной машины. В-driveопределение, включитьdiscard=unmap,detect-zeroes=unmap. В гостевом экземпляре виртуальной машины у вас есть выбор:

а) не используйте опцию «отбросить» при монтировании томов. Традиционно для флэш-накопителей операция сброса/TRIM имеет тенденцию быть блокирующей и длительной. Это вредит производительности во время выполнения. Таким образом, вскоре после того, как в Linux был реализован сброс/TRIM, был дан совет: предпочитайте избегать TRIM и запускайте толькоfstrim -avвремя от времени вручную, когда вам удобно, т.е. в тот момент, когда нагрузка на систему невелика. Также были проведены некоторые оптимизации дисковой подсистемы ввода-вывода для достижения шаблонов трафика, которые приводят к «поведению, подобному TRIM, и эффективности распределения» без фактического использования команды TRIM/discard. Две старые статьи по теме: 1 , 2 .

б) если у вас нет твердотельного накопителя под ним, то есть ваши диски на самом деле ржавеют, вы все равно можете использовать TRIM/discard в гостевой виртуальной машине, чтобы сигнализировать хосту виртуальной машины, что он может освободить некоторое пространство в базовом образе QCOW2.. «Пробить дырку» в буквальном смысле. Образ QCOW2 разреженный, и правильно освободив неиспользуемое пространство, вы сэкономите много фактической емкости диска.

У меня нет долгосрочного опыта, я фактически только что установил такую ​​систему (хост + 1 гость, около 55 ГБ данных в двух образах QCOW2), и она, кажется, работает довольно хорошо. Перенося ОС и данные с «голого железа» на виртуальную машину, я продолжал наблюдать за системой с помощью top и iostat, и цифры, катящиеся на экране, казались вполне правдоподобными.

В качестве оптимизации я используюnoatimeопция монтирования как на хосте, так и на госте, и мне также нравится настраиватьгрязные_ратио,грязные_фоновые_ратио игрязные_expire_centisecs, чтобы увеличить «кэш обратной записи». Кажется, у меня работает.

Другие вопросы по тегам