FreeBSD virtual environment management and repository

2020-10 upd: we reached the first fundraising goal and rented a server in Hetzner for development! Thank you for donating !

Внимание! Данные страницы описывают CBSD версии 13.0.x. Если вы используете более раннюю версию, рекомендуется сначала обновиться.

Обратите внимание! Данные команды поддерживают маску (wildcard) в качестве jname, например: jname='*', jname='ja*l*'

Чекпоинты, спящий режим и паузы виртуальной машины

Команда bcheckpoint, bsuspend, bpause

Для использования этой особенности, ядро (модуль vmm.ko) и userland утилиты ( bhyve и bhyvectl ) должны быть пересобраны с флагом BHYVE_SNAPSHOT. Добавьте в /etc/src.conf строчку:

WITH_BHYVE_SNAPSHOT=yes

И в конфигурационный файл ядра опцию:

options         BHYVE_SNAPSHOT

Функциональность чекпоинтов (checkpoint) и спящий режим (suspend) виртуальной машины - это заморозка виртуального окружения с сохранением всего состояния на диск, из которого вы можете вновь вернуть систему в прежнее состояние без необходимости перезагрузки окружения.

Чекпоинты

В CBSD для работы с чекпоинтами служит команда bcheckpoint, имеющая следующий синтаксис:

	cbsd bcheckpoint [jname=] [mode=] [name=] [poweroff=]
	

где:

  • - jname: (обязательно) имя окружения, например: freebsd1
  • - mode: (обязательно) действие относительно окружения: create (создать чекпоинт), list (список созданных чекпоинтов), destroyall (уничтожить все чекпоинты)
  • - name: (опционально) указать альтернативное имя чекпоинту, по-умолчанию: checkpoint
  • - poweroff: (опционально). Если poweroff=1, CBSD автоматически выключит виртуальную машину моментально (через bstop noacpi=1) по факту создания чекпоинта.

		% cbsd bls
		JNAME     JID    VM_RAM  VM_CURMEM  VM_CPUS  PCPU  VM_OS_TYPE  IP4_ADDR  STATUS  VNC_PORT
		freebsd1  21923  1024    24         1        0     freebsd     DHCP      On      127.0.0.1:5900  
		
		% cbsd bcheckpoint mode=create jname=freebsd1
		Waiting and sure that the info is written on the disk: 1/5
		Waiting and sure that the info is written on the disk: 2/5
		Waiting and sure that the info is written on the disk: 3/5
		Waiting and sure that the info is written on the disk: 4/5
		Waiting and sure that the info is written on the disk: 5/5
		Checkpoint was created!: /usr/jails/jails-system/freebsd1/checkpoints/checkpoint.ckp
		
		% cbsd bcheckpoint mode=create jname=freebsd1 name=after_update
		Waiting and sure that the info is written on the disk: 1/5
		Waiting and sure that the info is written on the disk: 2/5
		Waiting and sure that the info is written on the disk: 3/5
		Waiting and sure that the info is written on the disk: 4/5
		Waiting and sure that the info is written on the disk: 5/5
		Checkpoint was created!: /usr/jails/jails-system/freebsd1/checkpoints/after_update.ckp
		
		% cbsd bcheckpoint mode=list jname=freebsd1
		Created checkpoint for freebsd1:
		after_update
		checkpoint
	

Имея созданные чекпоинты, вы можете возвращаться в нужное состояние через команду bstart с аргументом checkpoint

Небольшое демо на ранней стадии разработки на Youtube

Спящий режим

WIP

Пауза виртуальной машины

WIP