Puncte:0

zsys-commit.service eșuează cu „nu s-a putut promova setul de date... nu este un sistem de fișiere clonat”

drapel bv

Problemă

După câteva probleme cu starea sistemului, am revenit la un instantaneu al stării anterioare.

De atunci eu systemctl este-sistem-rulează este in degradat stare (o am în promptul meu).

Singurul serviciu eșuat este zsys-commit.service si stare este:

â zsys-commit.service - Marcați încărcarea ZSYS curentă ca reușită
    Încărcat: încărcat (/lib/systemd/system/zsys-commit.service; activat; prestabilit furnizor: activat)
    Activ: a eșuat (Rezultat: cod de ieșire) din duminica 23-01-2022 23:21:41 EST; acum 10 ore
  PID principal: 12287 (cod=ieșit, stare=1/Eșec)

23 ian 23:21:40 hostname systemd[1]: Se începe Marcați încărcarea ZSYS curentă ca reușită...
23 ianuarie 23:21:41 nume gazdă zsysctl[12287]: level=error msg="nu s-a putut comite: nu s-a putut promova setul de date \"rpool/ROOT/ubuntu_ssfirw\": nu s-a putut promova \"rpool/ROOT/ubuntu_ssfirw \": nu este un sistem de fișiere clonat"
23 ianuarie 23:21:41 nume de gazdă systemd[1]: zsys-commit.service: Procesul principal a fost ieșit, cod=ieșit, stare=1/Eșec
23 ianuarie 23:21:41 nume de gazdă systemd[1]: zsys-commit.service: a eșuat cu rezultatul „exit-code”.
23 ianuarie 23:21:41 hostname systemd[1]: Nu s-a putut porni Marcați încărcarea ZSYS curentă ca reușită.

Întrebări

  1. Cum se zsys determină că un set de date este clonat ?
    • urmând cu: Pot modifica asta?
  2. Care ar fi cea mai bună abordare pentru a curăța toate zsys state și rămâne doar cu starea curentă (cu totul aliniat, inclusiv meniul de pornire)? Vedea Actualizați #1 în partea de jos

Mai multe detalii:

Unele cercetări au arătat că comanda pe care serviciul rulează este:

/sbin/zsysctl boot commit

Aceasta este ieșirea pentru sudo /sbin/zsysctl boot commit -vvv:

DEBUG /zsys.Zsys/CommitBoot() apel înregistrat ca [79ef457a:5d32ce55] 
DEBUG Verificați dacă peer-ul de solicitare grpc este autorizat     
DEBUG Autorizat ca administrator            
INFO Commiteți starea curentă de pornire                    
INFO Commiterea pornirii pentru „rpool/ROOT/ubuntu_ssfirw” 
INFO Etichetați setul de date utilizator curent: „rpool/USERDATA/szkolnik_vvk5gq” 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:bootfs-datasets”="rpool/ROOT/ubuntu_1s4qqj,rpool/ROOT/ubuntu_ssfirw” pe „rpool/USERDATA/szkolnik_vvk5gq” 
INFO Etichetați setul de date utilizator curent: „rpool/USERDATA/root_vvk5gq” 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:bootfs-datasets”="rpool/ROOT/ubuntu_1s4qqj,rpool/ROOT/ubuntu_ssfirw” pe „rpool/USERDATA/root_vvk5gq” 
INFO setați ora curentă la „1643036037”             
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „bpool/BOOT/ubuntu_ssfirw” 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „rpool/ROOT/ubuntu_ssfirw” 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „rpool/ROOT/ubuntu_ssfirw/srv” 
DEBUG ZFS: nu se poate seta proprietatea "com.ubuntu.zsys:last-used"="1643036037" pentru "rpool/ROOT/ubuntu_ssfirw/srv" ca nu o proprietate locală ("moștenit") 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „rpool/ROOT/ubuntu_ssfirw/usr” 
DEBUG ZFS: nu se poate seta proprietatea "com.ubuntu.zsys:last-used"="1643036037" pentru "rpool/ROOT/ubuntu_ssfirw/usr" ca nu o proprietate locală ("moștenit") 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „rpool/ROOT/ubuntu_ssfirw/var” 
DEBUG ZFS: nu se poate seta proprietatea "com.ubuntu.zsys:last-used"="1643036037" pentru "rpool/ROOT/ubuntu_ssfirw/var" ca nu o proprietate locală ("moștenit") 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „rpool/ROOT/ubuntu_ssfirw/usr/local” 
DEBUG ZFS: nu se poate seta proprietatea "com.ubuntu.zsys:last-used"="1643036037" pentru "rpool/ROOT/ubuntu_ssfirw/usr/local" ca nu o proprietate locală ("moștenit") 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „rpool/ROOT/ubuntu_ssfirw/var/games” 
DEBUG ZFS: nu se poate seta proprietatea "com.ubuntu.zsys:last-used"="1643036037" pentru "rpool/ROOT/ubuntu_ssfirw/var/games" ca nu o proprietate locală ("moștenit") 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037” pe „rpool/ROOT/ubuntu_ssfirw/var/lib” 
DEBUG ZFS: nu se poate seta proprietatea "com.ubuntu.zsys:last-used"="1643036037" pentru "rpool/ROOT/ubuntu_ssfirw/var/lib" ca nu o proprietate locală ("moștenit") 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „rpool/ROOT/ubuntu_ssfirw/var/log” 
DEBUG ZFS: nu se poate seta proprietatea "com.ubuntu.zsys:last-used"="1643036037" pentru "rpool/ROOT/ubuntu_ssfirw/var/log" ca nu o proprietate locală ("moștenit") 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „rpool/ROOT/ubuntu_ssfirw/var/mail” 
DEBUG ZFS: nu se poate seta proprietatea "com.ubuntu.zsys:last-used"="1643036037" pentru "rpool/ROOT/ubuntu_ssfirw/var/mail" ca nu o proprietate locală ("moștenit") 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „rpool/ROOT/ubuntu_ssfirw/var/snap” 
DEBUG ZFS: nu se poate seta proprietatea "com.ubuntu.zsys:last-used"="1643036037" pentru "rpool/ROOT/ubuntu_ssfirw/var/snap" ca nu o proprietate locală ("moștenit") 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „rpool/ROOT/ubuntu_ssfirw/var/spool” 
DEBUG ZFS: nu se poate seta proprietatea "com.ubuntu.zsys:last-used"="1643036037" pentru "rpool/ROOT/ubuntu_ssfirw/var/spool" ca nu o proprietate locală ("moștenit") 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „rpool/ROOT/ubuntu_ssfirw/var/www” 
DEBUG ZFS: nu se poate seta proprietatea "com.ubuntu.zsys:last-used"="1643036037" pentru "rpool/ROOT/ubuntu_ssfirw/var/www" ca nu o proprietate locală ("moștenit") 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „rpool/ROOT/ubuntu_ssfirw/var/lib/AccountsService” 
DEBUG ZFS: nu se poate seta proprietatea "com.ubuntu.zsys:last-used"="1643036037" pentru "rpool/ROOT/ubuntu_ssfirw/var/lib/AccountsService" ca nu o proprietate locală ("moștenit") 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „rpool/ROOT/ubuntu_ssfirw/var/lib/NetworkManager” 
DEBUG ZFS: nu se poate seta proprietatea "com.ubuntu.zsys:last-used"="1643036037" pentru "rpool/ROOT/ubuntu_ssfirw/var/lib/NetworkManager" ca nu o proprietate locală ("moștenit") 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „rpool/ROOT/ubuntu_ssfirw/var/lib/apt” 
DEBUG ZFS: nu se poate seta proprietatea "com.ubuntu.zsys:last-used"="1643036037" pentru "rpool/ROOT/ubuntu_ssfirw/var/lib/apt" ca nu o proprietate locală ("moștenit") 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037” pe „rpool/ROOT/ubuntu_ssfirw/var/lib/dpkg” 
DEBUG ZFS: nu se poate seta proprietatea "com.ubuntu.zsys:last-used"="1643036037" pentru "rpool/ROOT/ubuntu_ssfirw/var/lib/dpkg" ca nu o proprietate locală ("moștenit") 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „rpool/USERDATA/szkolnik_vvk5gq” 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-used”="1643036037" pe „rpool/USERDATA/root_vvk5gq” 
INFO Setați cel mai recent kernel pornit la „vmlinuz-5.13.0-27-generic” 
DEBUG ZFS: încercarea de a seta „com.ubuntu.zsys:last-booted-kernel”="vmlinuz-5.13.0-27-generic” pe „rpool/ROOT/ubuntu_ssfirw” 
INFO Promovarea seturilor de date ale utilizatorilor                      
INFO Promovarea seturilor de date ale sistemului                    
INFORMAȚII Promovarea setului de date: „bpool/BOOT/ubuntu_ssfirw” 
DEBUG ZFS: încercarea de a promova „bpool/BOOT/ubuntu_ssfirw” 
DEBUG Încercarea de a promova „bpool/BOOT/ubuntu_ssfirw” 
DEBUG ZFS: a apărut o eroare: nu s-a putut promova „bpool/BOOT/ubuntu_ssfirw”: nu este un sistem de fișiere clonat 
DEBUG ZFS: Se anulează tranzacția imbricată           
DEBUG ZFS: încheierea tranzacției                      
DEBUG ZFS: revenirea tuturor tranzacțiilor zfs în curs 
DEBUG ZFS: tranzacție finalizată                        
DEBUG ZFS: încheierea tranzacției                      
DEBUG ZFS: încheierea tranzacției                      
DEBUG ZFS: tranzacție finalizată                        
DEBUG ZFS: revenirea tuturor tranzacțiilor zfs în curs 
DEBUG ZFS: tranzacție finalizată                        
EROARE nu s-a putut comite: nu s-a putut promova setul de date „bpool/BOOT/ubuntu_ssfirw”: nu s-a putut promova „bpool/BOOT/ubuntu_ssfirw”: nu este un sistem de fișiere clonat 

Actualizare #1

am găsit acest raspuns și pe baza asta a venit cu următorul cod:

# Listați toate stările bpool/BOOT, de la cel mai nou creat la cel mai vechi
lista zfs -r -t instantaneu -S creare -o nume,folosit,referit,creare bpool/BOOT | sed '6 i --------------------------------------------- ----------------------------------'

Am vrut să păstrez ultimele 4 stări, așa că am scris următorul cod, eliminând toate, cu excepția celor mai recente 4 stări, de la cea mai nouă la cea mai veche:

zfs list -r -t snapshot -S creation -Ho nume bpool/BOOT | coada -n+5 | sed 's/.*@\(autozsys_\)\?//' | sudo xargs -i sh -c "eliminarea ecoului {}...; zsysctl state remove {} --system --force || ieșirea 255"

Totuși, acest lucru a rămas blocat pentru mine, deoarece o anumită stare refuză să fie eliminată:

EROARE nu s-a putut elimina starea sistemului kxxwbr: Nu s-a putut elimina starea rpool/ROOT/ubuntu_ssfirw: Nu s-a putut distruge rpool/ROOT/ubuntu_ssfirw: nu s-a putut distruge „rpool/ROOT/ubuntu_ssfirw” și copiii săi: opriți distrugerea setului de date pe „ rpool/ROOT/ubuntu_ssfirw", nu se poate distruge copilul: nu mai distruge setul de date pe "rpool/ROOT/ubuntu_ssfirw/usr", nu se poate distruge copilul: nu se poate distruge setul de date "rpool/ROOT/ubuntu_ssfirw/usr/local": setul de date este ocupat

Din anumite motive, încearcă să distrugă setul de date activ.
Crezând că evident că nu mă ocup corect de asta, am încercat să inversez ordinea, ștergând de la cel mai vechi la cel mai nou (cu excepția celor mai recente 4):

zfs list -r -t snapshot -s creation -Ho nume bpool/BOOT | cap -n-4 | sed 's/.*@\(autozsys_\)\?//' | sudo xargs -i sh -c "eliminarea ecoului {}...; zsysctl state remove {} --force --system || ieșirea 255"

Acest lucru a greșit în aceeași stare, kxxwbr cu aceeasi eroare.

Deci încă am nevoie de ajutor cu asta.

Puncte:0
drapel bv

Răspunzând la propria întrebare, deoarece pare să fie o problemă zfs poate chiar în mod specific zfs-on-linux si nimic de-a face cu zsys.

Continuând încercarea mea de a curăța manual instantaneele, în cele din urmă am rămas cu o singură stare, numită în prezent kxxwbr.

Acest kxxwbr starea este asociată cu setul de date numit 1s4qqj care a fost baza unui set de date clonat numit ssfirw.

Următorul cod va afișa starea clar:

lista zfs -o nume,origine -S creație | grep -v '\W\-$'

iese următoarele

NUME ORIGINEA
rpool/ROOT/ubuntu_ssfirw rpool/ROOT/ubuntu_1s4qqj@autozsys_kxxwbr
rpool/ROOT/ubuntu_ssfirw/srv rpool/ROOT/ubuntu_1s4qqj/srv@autozsys_kxxwbr
rpool/ROOT/ubuntu_ssfirw/usr rpool/ROOT/ubuntu_1s4qqj/usr@autozsys_kxxwbr
rpool/ROOT/ubuntu_ssfirw/usr/local rpool/ROOT/ubuntu_1s4qqj/usr/local@autozsys_kxxwbr
rpool/ROOT/ubuntu_ssfirw/var rpool/ROOT/ubuntu_1s4qqj/var@autozsys_kxxwbr
rpool/ROOT/ubuntu_ssfirw/var/games rpool/ROOT/ubuntu_1s4qqj/var/games@autozsys_kxxwbr
rpool/ROOT/ubuntu_ssfirw/var/lib rpool/ROOT/ubuntu_1s4qqj/var/lib@autozsys_kxxwbr
rpool/ROOT/ubuntu_ssfirw/var/lib/AccountsService rpool/ROOT/ubuntu_1s4qqj/var/lib/AccountsService@autozsys_kxxwbr
rpool/ROOT/ubuntu_ssfirw/var/lib/NetworkManager rpool/ROOT/ubuntu_1s4qqj/var/lib/NetworkManager@autozsys_kxxwbr
rpool/ROOT/ubuntu_ssfirw/var/lib/apt rpool/ROOT/ubuntu_1s4qqj/var/lib/apt@autozsys_kxxwbr
rpool/ROOT/ubuntu_ssfirw/var/lib/dpkg rpool/ROOT/ubuntu_1s4qqj/var/lib/dpkg@autozsys_kxxwbr
rpool/ROOT/ubuntu_ssfirw/var/log rpool/ROOT/ubuntu_1s4qqj/var/log@autozsys_kxxwbr
rpool/ROOT/ubuntu_ssfirw/var/mail rpool/ROOT/ubuntu_1s4qqj/var/mail@autozsys_kxxwbr
rpool/ROOT/ubuntu_ssfirw/var/snap rpool/ROOT/ubuntu_1s4qqj/var/snap@autozsys_kxxwbr
rpool/ROOT/ubuntu_ssfirw/var/spool rpool/ROOT/ubuntu_1s4qqj/var/spool@autozsys_kxxwbr
rpool/ROOT/ubuntu_ssfirw/var/www rpool/ROOT/ubuntu_1s4qqj/var/www@autozsys_kxxwbr

Când încerc să promovez oricare dintre seturile de date, obțin următoarele:

> sudo zfs promovează rpool/ROOT/ubuntu_ssfirw
nu poate promova „rpool/ROOT/ubuntu_ssfirw”: nu este un sistem de fișiere clonat

In cautarea Google pentru că soluțiile dă o mulțime de probleme, niciuna dintre ele (deocamdată) nu a oferit soluții.

Concluzie și o posibilă remediere

Este BUG! (evident în acest moment)

Acesta este +1ul meu în firul de erori:

https://bugs.launchpad.net/ubuntu/+source/zfs-linux/+bug/1947568/comments/5

Folosesc PPA terță parte ca descris în bug:
* ASTA ESTE RISCANT, așa că nu îmi asum responsabilitatea pentru asta, doar raportând ceea ce am făcut.

# actualizați totul și curățați înainte de a vă ocupa de conținut terță parte
sudo apt upgrade --da
sudo apt autoremove --da

# adăugați PPA terță parte pentru zfstools
sudo add-apt-repository ppa:jonathonf/zfs && sudo apt update && sudo upgrade --da

# cel mai probabil veți primi următorul mesaj în rezultatul apt:
# au fost păstrate următoarele pachete:                                                                                                                                                                                                                   
# zfs-initramfs zfs-zed zfsutils-linux

# dacă acesta este cazul, actualizați în mod explicit zfsutils-linux rulând:
sudo apt install zfs-initramfs zfs-zed zfsutils-linux

In acest punct promova ar trebui să funcționeze corect.

Și într-adevăr am folosit următorul cod pentru a promova totul:

lista zfs -Ho name,origin -S creation rpool/ROOT/ubuntu_ssfirw | grep -v '\W\-$' | sed 's/\t.*$//' | xargs -i sh -c "promovarea ecoului {}; zfs promovează {} || ieșirea 255"

Am continuat și am eliminat toate instantaneele (doar pentru că era mai ușor în acest moment), am activat colectorul de gunoi (sudo zsysctl service gc), apoi am putut reporni zsys-commit.service.

Sperăm că acest lucru va continua să funcționeze din acest punct înainte și cineva ar putea găsi acest lucru la îndemână.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.