Antw: Antw: [EXT] SRe: VirtualBox VM as a unit failures

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>>> "Ulrich Windl" <Ulrich.Windl@xxxxxxxxxxxxxxxxxxxx> schrieb am 02.09.2022
um
10:12 in Nachricht <6311BAFE020000A10004D56E@xxxxxxxxxxxxxxxxxxxxxxxx>:
> Hi!
> 
> The other thing that came to my mind was the ASCI power button: The system

Time for the week-end: s/ASCI/ACPI/

> might actually block or ignore it (or asking for the admin password). So I
> think it would be a good idea to have a "second line of defense" causing a 
> hard
> stop (power off) if the first method fails within a reasonable timeout.
> That's how cluster VM resources are managed, typically.
> 
> Regards,
> Ulrich
> 
>>>> Colin Guthrie <gmane@xxxxxxxxxxxxxx> schrieb am 01.09.2022 um 21:30 in
> Nachricht <ter17r$16vf$1@xxxxxxxxxxxxx>:
>> Hi,
>> 
>> When you have an ExecStop, it's meant to synchronously stop all 
>> processes. Anything left once it exits, systemd considers fair game for 
>> killing!
>> 
>> So chances are, the ExecStop runs and tells the machine the power button 
>> was pressed. This command exits almost immediately and before the 
>> machine gets much of a chance to process it, systemd goes on a killing 
>> spree to tidy up what's left.
>> 
>> So you may need some kind of synchronous version of the stop command 
>> which waits a bit with it's own timeout. You can likely knock up a 
>> script in bash pretty easily. Here's a snippet you can adapt from a 
>> script (non-systemd) I use for managing VMs which would allow you to 
>> implement a controlled shutdown with a timeout.
>> 
>> There may be other issues at play but this is definitely one of them!!
>> 
>> (other problems may include some processes being are user wide if you 
>> and used by multiple VMs but will get lumped in the cgroup with the 
>> first one you start and thus may be killed when it is powered off even 
>> if other VMs are still running!)
>> 
>> HTHs
>> 
>> Col
>> 
>> 
>> VM_NAME="RHEL7"
>> 
>> function isrunning()
>> {
>>    VBoxManage list runningvms | grep -q "$VM_NAME" && echo yes || echo no
>> }
>> function stop()
>> {
>>    if [ "yes" != $(isrunning) ]; then
>>      echo "Not running"
>>    else
>>      VBoxManage controlvm "$VM_NAME" acpipowerbutton
>>      TIMEOUT=60
>>      echo -n "Waiting for shutdown"
>>      while [ "yes" = $(isrunning) ]; do
>>        echo -n "."
>>        sleep 1
>>        if [ 0 -eq $TIMEOUT ]; then
>>          echo
>>          echo "Timeout waiting for shutdown :-(" >&2
>>          echo "Continuing with forced poweroff"
>>          VBoxManage controlvm "$VM_NAME" poweroff
>>          TIMEOUT=10
>>        fi
>>        TIMEOUT=$(( $TIMEOUT - 1 ))
>>      done
>>      echo
>>    fi
>> }
>> 
>> 
>> Sergio Belkin wrote on 01/09/2022 18:59:
>>> I,m triying to configure an user-level unit for a VirtualBox VM, but it 
>>> does not work well, when I stop, it complains:
>>> 
>>> systemctl --user status  vbox_vm_start@RHEL7.service 
>>> ○ vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7
>>>       Loaded: loaded 
>>> (/home/sergio/.config/systemd/user/vbox_vm_start@.service; enabled; 
>>> vendor preset: disabled)
>>>       Active: inactive (dead) since Thu 2022-09-01 14:21:57 -03; 5s ago
>>>      Process: 378373 ExecStart=/usr/bin/VBoxManage startvm RHEL7 --type 
>>> headless (code=exited, status=0/SUCCESS)
>>>      Process: 378581 ExecStop=/usr/bin/VBoxManage controlvm RHEL7 
>>> acpipowerbutton (code=exited, status=0/SUCCESS)
>>>        Tasks: 40 (limit: 38236)
>>>       Memory: 23.6M
>>>          CPU: 8.114s
>>>       CGroup: 
>>> 
>>
>
/user.slice/user-1000.slice/user@1000.service/app.slice/app-vbox_vm_start.sl
> i
>> ce/vbox_vm_start@RHEL7.service 
>>>               ├─ 378386 /usr/lib/virtualbox/VBoxXPCOMIPCD
>>>               ├─ 378392 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
>>>               └─ 378442 /usr/lib/virtualbox/VBoxHeadless --comment RHEL7 
>>> --startvm f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config
>>> 
>>> sep 01 14:21:51 munster.belkin.home systemd[3452]: Starting 
>>> vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7...
>>> sep 01 14:21:51 munster.belkin.home VBoxManage[378373]: Waiting for VM 
>>> "RHEL7" to power on...
>>> sep 01 14:21:51 munster.belkin.home VBoxManage[378373]: VM "RHEL7" has 
>>> been successfully started.
>>> sep 01 14:21:51 munster.belkin.home systemd[3452]: Started 
>>> vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7.
>>> sep 01 14:21:56 munster.belkin.home systemd[3452]: Stopping 
>>> vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7...
>>> sep 01 14:21:57 munster.belkin.home systemd[3452]: 
>>> vbox_vm_start@RHEL7.service: Unit process 378386 (VBoxXPCOMIPCD) remains 
>>> running after unit stopped.
>>> sep 01 14:21:57 munster.belkin.home systemd[3452]: 
>>> vbox_vm_start@RHEL7.service: Unit process 378392 (VBoxSVC) remains 
>>> running after unit stopped.
>>> sep 01 14:21:57 munster.belkin.home systemd[3452]: 
>>> vbox_vm_start@RHEL7.service: Unit process 378442 (VBoxHeadless) remains 
>>> running after unit stopped.
>>> sep 01 14:21:57 munster.belkin.home systemd[3452]: Stopped 
>>> vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7.
>>> sep 01 14:21:57 munster.belkin.home systemd[3452]: 
>>> vbox_vm_start@RHEL7.service: Consumed 3.386s CPU time.
>>> 
>>> If I try to start, these are the errors:
>>> 
>>> × vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7
>>>       Loaded: loaded 
>>> (/home/sergio/.config/systemd/user/vbox_vm_start@.service; enabled; 
>>> vendor preset: disabled)
>>>       Active: failed (Result: exit-code) since Thu 2022-09-01 14:22:06 
>>> -03; 7s ago
>>>      Process: 378730 ExecStart=/usr/bin/VBoxManage startvm RHEL7 --type 
>>> headless (code=exited, status=1/FAILURE)
>>>        Tasks: 40 (limit: 38236)
>>>       Memory: 25.7M
>>>          CPU: 3.338s
>>>       CGroup: 
>>> 
>>
>
/user.slice/user-1000.slice/user@1000.service/app.slice/app-vbox_vm_start.sl
> i
>> ce/vbox_vm_start@RHEL7.service 
>>>               ├─ 378386 /usr/lib/virtualbox/VBoxXPCOMIPCD
>>>               ├─ 378392 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
>>>               └─ 378442 /usr/lib/virtualbox/VBoxHeadless --comment RHEL7 
>>> --startvm f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config
>>> 
>>> sep 01 14:22:06 munster.belkin.home systemd[3452]: Starting 
>>> vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7...
>>> sep 01 14:22:06 munster.belkin.home VBoxManage[378730]: VBoxManage: 
>>> error: The machine 'RHEL7' is already locked by a session (or being 
>>> locked or unlocked)
>>> sep 01 14:22:06 munster.belkin.home VBoxManage[378730]: VBoxManage: 
>>> error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component 
>>> MachineWrap, interface IMachine, callee n>
>>> sep 01 14:22:06 munster.belkin.home VBoxManage[378730]: VBoxManage: 
>>> error: Context: "LaunchVMProcess(a->session, sessionType.raw(), 
>>> ComSafeArrayAsInParam(aBstrEnv), progress.asOutPar>
>>> sep 01 14:22:06 munster.belkin.home systemd[3452]: 
>>> vbox_vm_start@RHEL7.service: Control process exited, code=exited, 
>>> status=1/FAILURE
>>> sep 01 14:22:06 munster.belkin.home systemd[3452]: 
>>> vbox_vm_start@RHEL7.service: Failed with result 'exit-code'.
>>> sep 01 14:22:06 munster.belkin.home systemd[3452]: 
>>> vbox_vm_start@RHEL7.service: Unit process 378386 (VBoxXPCOMIPCD) remains 
>>> running after unit stopped.
>>> sep 01 14:22:06 munster.belkin.home systemd[3452]: 
>>> vbox_vm_start@RHEL7.service: Unit process 378392 (VBoxSVC) remains 
>>> running after unit stopped.
>>> sep 01 14:22:06 munster.belkin.home systemd[3452]: 
>>> vbox_vm_start@RHEL7.service: Unit process 378442 (VBoxHeadless) remains 
>>> running after unit stopped.
>>> sep 01 14:22:06 munster.belkin.home systemd[3452]: Failed to start 
>>> vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7.
>>> 
>>> This the unit file:
>>> × vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7
>>>       Loaded: loaded 
>>> (/home/sergio/.config/systemd/user/vbox_vm_start@.service; enabled; 
>>> vendor preset: disabled)
>>>       Active: failed (Result: exit-code) since Thu 2022-09-01 14:22:06 
>>> -03; 7s ago
>>>      Process: 378730 ExecStart=/usr/bin/VBoxManage startvm RHEL7 --type 
>>> headless (code=exited, status=1/FAILURE)
>>>        Tasks: 40 (limit: 38236)
>>>       Memory: 25.7M
>>>          CPU: 3.338s
>>>       CGroup: 
>>> 
>>
>
/user.slice/user-1000.slice/user@1000.service/app.slice/app-vbox_vm_start.sl
> i
>> ce/vbox_vm_start@RHEL7.service 
>>>               ├─ 378386 /usr/lib/virtualbox/VBoxXPCOMIPCD
>>>               ├─ 378392 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
>>>               └─ 378442 /usr/lib/virtualbox/VBoxHeadless --comment RHEL7 
>>> --startvm f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config
>>> 
>>> sep 01 14:22:06 munster.belkin.home systemd[3452]: Starting 
>>> vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7...
>>> sep 01 14:22:06 munster.belkin.home VBoxManage[378730]: VBoxManage: 
>>> error: The machine 'RHEL7' is already locked by a session (or being 
>>> locked or unlocked)
>>> sep 01 14:22:06 munster.belkin.home VBoxManage[378730]: VBoxManage: 
>>> error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component 
>>> MachineWrap, interface IMachine, callee n>
>>> sep 01 14:22:06 munster.belkin.home VBoxManage[378730]: VBoxManage: 
>>> error: Context: "LaunchVMProcess(a->session, sessionType.raw(), 
>>> ComSafeArrayAsInParam(aBstrEnv), progress.asOutPar>
>>> sep 01 14:22:06 munster.belkin.home systemd[3452]: 
>>> vbox_vm_start@RHEL7.service: Control process exited, code=exited, 
>>> status=1/FAILURE
>>> sep 01 14:22:06 munster.belkin.home systemd[3452]: 
>>> vbox_vm_start@RHEL7.service: Failed with result 'exit-code'.
>>> sep 01 14:22:06 munster.belkin.home systemd[3452]: 
>>> vbox_vm_start@RHEL7.service: Unit process 378386 (VBoxXPCOMIPCD) remains 
>>> running after unit stopped.
>>> sep 01 14:22:06 munster.belkin.home systemd[3452]: 
>>> vbox_vm_start@RHEL7.service: Unit process 378392 (VBoxSVC) remains 
>>> running after unit stopped.
>>> sep 01 14:22:06 munster.belkin.home systemd[3452]: 
>>> vbox_vm_start@RHEL7.service: Unit process 378442 (VBoxHeadless) remains 
>>> running after unit stopped.
>>> sep 01 14:22:06 munster.belkin.home systemd[3452]: Failed to start 
>>> vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7.
>>> 
>>> This is the unit file:
>>> [Unit]
>>> Description=VirtualBox VM %i
>>> After=network.target vboxdrv.service
>>> Before=runlevel2.target shutdown.target
>>> 
>>> [Service]
>>> Type=forking
>>> Restart=no
>>> TimeoutSec=5min
>>> IgnoreSIGPIPE=no
>>> KillMode=process
>>> GuessMainPID=no
>>> RemainAfterExit=no
>>> 
>>> #ExecStart=/usr/lib/virtualbox/VBoxHeadless --comment RHEL7 --startvm 
>>> f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config
>>> ExecStart=/usr/bin/VBoxManage startvm %i --type headless
>>> ExecStop=/usr/bin/VBoxManage controlvm %i acpipowerbutton
>>> 
>>> [Install]
>>> WantedBy=default.target
>>> 
>>> (End of file)
>>> 
>>> What is the proper way to configure this kind of unit?
>>> 
>>> Thanks in advance
>>> 
>>> 
>>> 
>>> -- 
>>> --
>>> Sergio Belkin
>>> LPIC-2 Certified - http://www.lpi.org <http://www.lpi.org>
>> 
>> 
>> -- 
>> 
>> Colin Guthrie
>> gmane(at)colin.guthr.ie
>> http://colin.guthr.ie/ 
>> 
>> Day Job:
>>    Tribalogic Limited http://www.tribalogic.net/ 
>> Open Source:
>>    Mageia Contributor http://www.mageia.org/ 
>>    PulseAudio Hacker http://www.pulseaudio.org/ 
>>    Trac Hacker http://trac.edgewall.org/ 






[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux