virsh 기본 스토리지 풀을 설정하기위한 systemd 서비스


0

킥 스타트 자동 설치 후 시스템 부팅시 스크립트를 실행하려고합니다. 스크립트는 KVM의 기본 저장 영역 풀만 변경합니다. 그러나 어떤 이유로 든 스크립트를 수동으로 실행하거나 systemctl start pool.service모든 것을 systemctl enable pool.service올바르게 실행하면 기본 풀이 설정되지만 변경 사항이 적용되지 않지만 ks.cfg를 통해 또는 설치 후 수동으로 실행 한 다음 재부팅하면 아무런 변화가 없습니다. pool.service를 몇 가지 유형 (일반, 유휴 등)으로 설정하려고 시도했지만 아무것도 도움이되지 않는 것 같습니다.

CentOS 7 x64에서 작업하고 있습니다.

ks.cfg

wget http://my_server/scripts/virsh/pool.service -O /etc/systemd/system/pool.service
wget http://my_server/scripts/virsh/pool -O /usr/bin/pool
chmod 755 /usr/bin/pool
systemctl enable pool.service

pool.service 파일

[Unit]
Description=Set default storage pool

[Service]
Type=idle
ExecStart=/usr/bin/pool

[Install]
WantedBy=multi-user.target

풀 스크립트 파일

#!/bin/bash
/usr/bin/virsh pool-start default
/usr/bin/virsh pool-destroy default
/usr/bin/virsh pool-delete default
/usr/bin/virsh pool-undefine default
mkdir /srv/virtual_machines
/usr/bin/virsh pool-define-as default --type dir --target /srv/virtual_machines
/usr/bin/virsh pool-build default
/usr/bin/virsh pool-start default
/usr/bin/virsh pool-autostart default

systemctl disable pool.service

왜 킥 스타트에서이 작업을 수행하지 않습니까?
Michael Hampton

시도했지만 재부팅 후 기본 풀은 변경되지 않습니다.
Alex Zel

답변:


1

사용하지 마십시오 Type=idle– 로그인 프롬프트를 위해 특별히 추가되었으며 주사위 굴림만큼 안정적입니다. 종속성을 명시 적으로 선언하십시오. (짧은 실행 스크립트의 경우 Type=oneshot맞습니다.)

서비스는을 사용하여 libvirtd와 통신합니다 virsh. 즉, libvirtd가 이미 실행중인 경우에만 작동 할 수 있습니다. 따라서:

[Unit]
Requires=libvirtd.service
After=libvirtd.service

(배포가 서비스를 다르게 호출하는지 조정하십시오.)

또한 자체 비활성화 서비스가 최선의 아이디어가 아닐 수도 있습니다. 대신 다음을 사용할 수 있습니다.

[Unit]
ConditionPathExists=!/srv/virtual_machines

그건 내가 루프에 넣어 시도하고 싶었지만이 방법은 방법의 타자이며, 좋은 일, 감사 grawity
알렉스 ZEL
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.