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.