Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

Miten instansseja pelastetaan?

OpenStack tarjoaa pelastustilan virtuaalikoneiden palauttamiseen. Se on komento, jonka avulla virtuaalikone voidaan käynnistää toisella levykuvalla. Tätä voidaan käyttää, kun virtuaalikone ei käynnisty esimerkiksi kernel panic -virheen, täyden levyn tai kadonneen yksityisen avaimen vuoksi. Kun voit käynnistää toisesta levykuvasta, pystyt liittämään nykyisen levysi, muokkaamaan sen tiedostoja ja korjaamaan ongelman.

Oireet

Kernel panic

Tarkista instanssin konsoliloki (verkkokäyttöliittymä: Instances > <your instance> > Log)

[    1.041853] Loading compiled-in X.509 certificates
[    1.043433] Loaded X.509 cert 'CentOS Linux kpatch signing key:ea0413152cde1d98ebdca3fe6f0230904c9ef717'
[    1.046556] Loaded X.509 cert 'CentOS Linux Driver update signing key:7f421ee0ab69461574bb358861dbe77762a4201b'
[    1.050310] Loaded X.509 cert 'CentOS Linux kernel signing key:d4115f110055db56c8d605ab752173cfb1ac54d8'
[    1.053448] registered taskstats version 1
[    1.055861] Key type trusted registered
[    1.057771] Key type encrypted registered
[    1.059249] IMA: No TPM chip found, activating TPM-bypass! (rc=-19)
[    1.061680]   Magic number: 14:548:18
[    1.063246]  ep_81: hash matches
[    1.064844] rtc_cmos 00:00: setting system clock to 2018-08-23 08:02:54 UTC(1535011374)
[    1.067954] md: Waiting for all devices to be available before autodetect
[    1.069982] md: If you don't use raid, use raid=noautodetect
[    1.072041] md: Autodetecting RAID arrays.
[    1.073689] md: autorun ...
[    1.074976] md: ... autorun DONE.
[    1.076358] List of all partitions:
[    1.077771] No filesystem could mount root, tried: 
[    1.079600] Kernel panic - not syncing: VFS: Unable to mount root fs onunknown-block(0,0)
[    1.082286] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 3.10.0-862.11.6.el7.x86_64 #1
[    1.085033] Hardware name: Fedora Project OpenStack Nova, BIOS 0.5.1 01/01/2011
[    1.087639] Call Trace:
[    1.088800]  [<ffffffff871135d4>] dump_stack+0x19/0x1b
[    1.090453]  [<ffffffff8710d11f>] panic+0xe8/0x21f
[    1.091982]  [<ffffffff8776c761>] mount_block_root+0x291/0x2a0
[    1.093704]  [<ffffffff8776c7c3>] mount_root+0x53/0x56
[    1.095394]  [<ffffffff8776c902>] prepare_namespace+0x13c/0x174
[    1.097281]  [<ffffffff8776c3df>] kernel_init_freeable+0x1f8/0x21f
[    1.099244]  [<ffffffff8776bb1f>] ? initcall_blacklist+0xb0/0xb0
[    1.101131]  [<ffffffff87101bc0>] ? rest_init+0x80/0x80
[    1.102813]  [<ffffffff87101bce>] kernel_init+0xe/0xf0
[    1.104497]  [<ffffffff871255f7>] ret_from_fork_nospec_begin+0x21/0x21
[    1.106367]  [<ffffffff87101bc0>] ? rest_init+0x80/0x80
[    1.107997] Kernel Offset: 0x5a00000 from 0xffffffff81000000 (relocation range:0xffffffff80000000-0xffffffffbfffffff)

Loki kertoo, että instanssi ei voinut käynnistyä, koska se ei löydä juuritiedostojärjestelmää: "Kernel panic - not syncing: VFS: Unable to mount root fs onunknown-block(0,0)". Korjaus on käyttää jotakin aiempaa toimivaa ydintä. Koska et voi käynnistää palvelinta, korjaus täytyy tehdä taltiolle (käynnistystiedostoihin) toisen instanssin avulla.

Pääsy evätty

Ongelma voi olla niinkin yksinkertainen kuin:

$ ssh cloud-user@<floating-ip>
cloud-user@<floating-ip>: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

Ongelman korjaaminen, nova rescue

Huomaa, että minkä tahansa ongelman korjaamiseen on yleensä useita tapoja. Tämä UKK on tarkoitettu lähinnä näyttämään yksi tapa korjata tällaisia ongelmia. Vaikka Grubin käynnistysparametreja saa muokata, root-käyttäjän single mode -tila on oletuksena poistettu käytöstä turvallisuussyistä. Pelastuksen suorittaminen tapahtuu seuraavasti:

  1. Sinulla täytyy olla asennettuna OpenStackin komentorivityökalut. Sinun täytyy myös kirjautua sisään; katso ohje Määritä terminaaliympäristösi OpenStackia varten.

  2. Hae palvelimen tunniste ja tallenna se ympäristömuuttujaan nimeltä INSTANCE_UUID:

    $ openstack server list
    +--------------------------------------+-----------+--------+----------------------------+-------+----------------+
    | ID                                   | Name      | Status | Networks                   | Image | Flavor         |
    +--------------------------------------+-----------+--------+----------------------------+-------+----------------+
    | 55555566-ffff-4a52-5735-356251902325 | comp1     | ACTIVE | net=192.168.211.211        |       | standard.small |
    +--------------------------------------+-----------+--------+----------------------------+-------+----------------+
    
  3. Hae levykuvan tunniste. Voit tallentaa tunnisteen ympäristömuuttujaan IMAGE_UUID. Käytä samaa levykuvaa kuin instanssissasi: (Tunniste voi poiketa alla olevasta esimerkistä)

    $ openstack image list
    +--------------------------------------+----------------------+--------+
    | ID                                   | Name                 | Status |
    +--------------------------------------+----------------------+--------+
    | 56b70226-0c52-48c6-973f-3f726b5e7dc0 | CentOS-7             | active |
    | 2d20266d-43f7-499e-b6e6-090b09416b16 | CentOS-7-Cuda        | active |
    | c80adfec-05a8-4c42-8922-4bccdf90df40 | CentOS-8-Stream      | active |
    | 2ca237c5-bd0a-4469-ae9f-20878dd288a9 | Fedora Cloud Base 31 | active |
    | ee19819d-17d5-4f71-ac38-e024d046eb6a | Ubuntu-18.04         | active |
    | 668d235f-e6e4-421d-964c-0016f9560206 | Ubuntu-20.04         | active |
    | aea0bf58-85fb-4f9c-b2ea-ffa6c7a07c02 | Ubuntu-22.04         | active |
    | 3a9aad67-0f9c-4493-b574-17fe28d40afc | cirros               | active |
    +--------------------------------------+----------------------+--------+
    
  4. Sammuta instanssi:

    openstack server stop $INSTANCE_UUID
    
  5. Tarkista, että virtuaalikone on pysäytetty:

    openstack server list
    

    Tilan pitäisi olla SHUTOFF

  6. Olet nyt valmis käynnistämään instanssin pelastustilan:

    openstack server rescue --image $IMAGE_UUID $INSTANCE_UUID
    
  7. Varmista seuraavalla komennolla, että instanssi on pelastustilassa:

    openstack server list
    

    Tilan pitäisi olla RESCUE

Yhdistäminen

SSH:lla

Pelastuslevykuva saa samat SSH-avaimet kuin pelastettavassa virtuaalikoneessa on määritetty, joten sinun pitäisi voida muodostaa SSH-yhteys instanssiin samalla käyttäjällä ja IP-osoitteella kuin normaalisti.

ssh <default-user>@<floating-ip>

Saat tämän varoituksen: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!. Tämä liittyy niin sanottuihin host keys -avaimiin, jotka tallennetaan virtuaalikoneen levylle ja muuttuvat, koska käynnistät eri levyltä. Korjaa tämä poistamalla instanssisi IP-osoitetta vastaava rivi tiedostosta ~/.ssh/known_hosts. Vaihtoehtoisesti voit suorittaa seuraavan komennon:

ssh-keygen -f "~/.ssh/known_hosts" -R "$INSTANCE_IP"

Poudan selainkonsolilla (Cirrosilla)

Joissakin tapauksissa, esimerkiksi jos olet kadottanut yksityisen SSH-avaimen, sinun täytyy käyttää Poudan selainkonsolia. Jotta tämä toimisi, sinun täytyy valita yllä olevassa vaiheessa 3 levykuvaksi Cirros.

Kirjaudu Poudan selainkäyttöliittymään: https://pouta.csc.fi. Etsi instanssisi ja napsauta console.

Web console

Käyttäjätunnuksen ja salasanan pitäisi näkyä konsolitekstissä kirjautumiskehotteen yläpuolella.

Cirros

Cirros-levykuva on pieni Linux-jakelun levykuva, jossa ohjelmistotuki ja tietoturvapäivitykset ovat rajalliset. Sitä tulisi käyttää vain pelastustoimiin silloin, kun normaali SSH-yhteys ei ole mahdollinen.

Cirros ei tue XFS-tiedostojärjestelmää, jota Almalinux käyttää.

Levyn liittäminen

  1. Tarkista, mitä taltioita sinulla on. Jos muita taltioita ei ole liitetty, tuloksen pitäisi näyttää suunnilleen tältä:

    $ lsblk
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
    vda     253:0    0  3.5G  0 disk
    ├─vda1  253:1    0  2.5G  0 part /
    ├─vda14 253:14   0    4M  0 part
    ├─vda15 253:15   0  106M  0 part
    └─vda16 259:0    0  913M  0 part
    vdb     253:16   0   80G  0 disk
    ├─vdb1  253:17   0   79G  0 part
    ├─vdb14 253:30   0    4M  0 part
    ├─vdb15 253:31   0  106M  0 part /boot/efi
    └─vdb16 259:1    0  913M  0 part /boot
    
  2. Liitä nyt vdb1 hakemistoon /tmp/mnt ja siirry siihen hakemistoon:

    $ sudo mkdir -p /tmp/mnt
    $ sudo mount /dev/vdb1 /tmp/mnt/
    

Käynnistyslataimen (Grub) muokkaaminen

Joskus ongelma voi johtua viallisesta ytimestä. Voit muokata Grubia niin, että käynnistysvalikko näytetään, kun käynnistät koneen.

  1. Etsi boot-osio aiemmin suoritetun lsblk-komennon tulosteesta

  2. Tässä esimerkissä boot-osio on /dev/vdb16. Suorita nämä komennot liittääksesi tarvittavat eri taltiot: (root-taltio on jo liitetty. Katso yllä oleva osio Levyn liittäminen)

    sudo mount /dev/vdb16 /tmp/mnt/boot
    sudo mount --bind /dev /tmp/mnt/dev
    sudo mount --bind /sys /tmp/mnt/sys
    sudo mount --bind /proc /tmp/mnt/proc
    
  3. Seuraavaksi muokkaamme grubia. Muokattavat tiedostot ovat hieman erilaiset Almalinuxissa ja Ubuntussa:

    Almalinux

    sudo vi /tmp/mnt/etc/default/grub
    

    Muuta GRUB_TIMEOUT arvoksi 15 (esimerkiksi). Tallenna ja poistu.

    Ubuntu

    sudo vi /tmp/mnt/etc/default/grub.d/50-cloudimg-settings.cfg
    

    Muuta GRUB_TIMEOUT arvoksi 15 (esimerkiksi). Tallenna ja poistu.

    sudo vi /tmp/mnt/etc/default/grub
    

    Muuta GRUB_TIMEOUT_STYLE arvoksi menu. Tallenna ja poistu.

  4. Nyt on aika päivittää grub tekemillämme muutoksilla. Suorita nämä komennot:

    Almalinux

    sudo chroot /tmp/mnt
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

    Ubuntu

    sudo chroot /tmp/mnt
    update-grub
    

Nyt voit poistua virtuaalikoneesta ja poistaa pelastustilan käytöstä noudattamalla ohjetta täällä

Kun virtuaalikone käynnistyy, näet käynnistysvalikon ja voit valita toisen ytimen.

Käytä chroot-komentoa /-kansion vaihtamiseen

Jos instanssissasi on ongelmia rikkinäisten pakettien tai ajureiden vuoksi, voit siirtyä alkuperäiseen ympäristöösi ja korjata ongelmat seuraavilla komennoilla:

$ sudo mv /tmp/mnt/etc/resolv.conf{,.bak}
$ sudo cp /etc/resolv.conf /tmp/mnt/etc/resolv.conf
$ sudo chroot /tmp/mnt

chroot on nyt vaihtanut juurikansiosi / hakemistoksi /tmp/mnt/ (virtuaalikoneesi levyosio). Voit tehdä mitä tahansa korjauksia tai muutoksia, kuten poistaa paketin tai asentaa sen uudelleen.

Poistu pelastustilasta

  1. Kirjaudu ulos instansseista ja poista instanssin pelastustila käytöstä komennolla unrescue:

    openstack server unrescue $INSTANCE_UUID
    
  2. On hyvä ajatus varmistaa, että uudelleenkäynnistys toimii ytimen uudelleenasennuksen jälkeen:

    ssh <default-user>@<floating-ip> reboot
    

    odota käynnistymistä ja muodosta siihen uudelleen SSH-yhteys:

    ssh <default-user>@<floating-ip>
    

    Sen pitäisi toimia kuten ennen ongelmatilannetta.

Jos instanssisi käynnistyy käynnistettävältä taltiolta

Jos tilanteesi on tämä:

$ openstack server list
+--------------------------------------+-------------------+--------+------------------------------------------------+--------------------------+-----------------+
| ID                                   | Name              | Status | Networks                                       | Image                    | Flavor          |
+--------------------------------------+-------------------+--------+------------------------------------------------+--------------------------+-----------------+
| 8bbffd1b-99b2-494a-9501-890db20fc2a7 | machine           | ACTIVE | project_200xxxx=192.168.1.0, 123.45.67.89      | N/A (booted from volume) | standard.small  |

Voit käynnistää uuden koneen ja liittää taltion siihen tiedostojen muokkaamista varten.

Warning

Ennen koneen poistamista varmista, ettei taltiota poisteta automaattisesti. Voit tarkistaa tämän suorittamalla seuraavan komennon:

$ openstack server show $INSTANCE_UUID | grep 'volumes_attached'

  volumes_attached   | delete_on_termination='False', id='6183d89e-59ac-4b25-b2d5-ef802fd5ef82'
  1. Poista kone, joka käynnistyy taltiolta

    $ openstack server delete $INSTANCE_UUID
    
  2. Luo uusi kone (käynnistä levykuvasta) ja liitä taltio siihen

  3. Liitä Floating IP ja muodosta siihen yhteys

  4. Muodosta SSH-yhteys uuteen koneeseen ja tunnista taltio. vdb1 on todennäköisesti etsimäsi osio.

    $ lsblk
    
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
    vda     253:0    0   80G  0 disk
    ├─vda1  253:1    0   79G  0 part /
    ├─vda14 253:14   0    4M  0 part
    ├─vda15 253:15   0  106M  0 part /boot/efi
    └─vda16 259:0    0  913M  0 part /boot
    vdb     253:16   0   20G  0 disk
    ├─vdb1  253:17   0   19G  0 part
    ├─vdb14 253:30   0    4M  0 part
    ├─vdb15 253:31   0  106M  0 part
    └─vdb16 259:1    0  913M  0 part
    
  5. Luo liitospiste ja liitä osio

    $ sudo mkdir -p /tmp/mnt
    $ sudo mount /dev/vdb1 /tmp/mnt/
    
  6. Voit nyt muokata tarvitsemiasi tiedostoja hakemistossa /tmp/mnt

Kun olet valmis, voit yksinkertaisesti sammuttaa virtuaalikoneen, irrottaa taltion ja käynnistää uuden koneen käynnistettävältä taltiolta.

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta