dịch vụ systemd để đặt nhóm lưu trữ mặc định virsh


0

Tôi đang cố chạy tập lệnh khi khởi động hệ thống sau khi cài đặt tự động khởi động, tập lệnh chỉ thay đổi nhóm lưu trữ mặc định cho KVM. Nhưng vì một số lý do, các thay đổi không có hiệu lực, nếu tôi chạy tập lệnh theo cách thủ công hoặc chạy systemctl start pool.servicemọi thứ đều ổn và nhóm mặc định được đặt, nhưng nếu tôi chạy systemctl enable pool.servicequa ks.cfg hoặc thủ công sau khi cài đặt rồi khởi động lại thì không có gì thay đổi. Tôi đã thử đặt pool.service thành một vài Loại (bình thường, nhàn rỗi, v.v ...) nhưng dường như không có gì giúp được.

Tôi đang làm việc trên 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

tập tin pool.service

[Unit]
Description=Set default storage pool

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

[Install]
WantedBy=multi-user.target

tập tin tập lệnh

#!/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

Tại sao bạn không làm điều này trong khởi đầu?
Michael Hampton

Tôi đã thử nhưng sau khi khởi động lại, nhóm mặc định không thay đổi.
Alex Zel

Câu trả lời:


1

Không sử dụng Type=idle- nó đã được thêm cụ thể cho lời nhắc đăng nhập và đáng tin cậy như một con xúc xắc. Chỉ cần tuyên bố các phụ thuộc một cách rõ ràng. (Đối với một kịch bản chạy ngắn, Type=oneshotlà đúng.)

Dịch vụ của bạn giao tiếp với libvirtd bằng cách sử dụng virsh, có nghĩa là nó chỉ có thể hoạt động khi libvirtd đang chạy. Vì thế:

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

(Điều chỉnh nếu phân phối của bạn gọi dịch vụ khác nhau.)

Ngoài ra, các dịch vụ tự vô hiệu hóa có thể không phải là ý tưởng tốt nhất. Thay vào đó, bạn có thể sử dụng:

[Unit]
ConditionPathExists=!/srv/virtual_machines

Điều đó thật tuyệt vời, tôi muốn thử đặt nó vào một vòng lặp nhưng phương pháp này là cách đánh bóng, cảm ơn sự tham
lam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.