GNU/Linux >> Znalost Linux >  >> Linux

Potvrdit nebo vrátit snímek Linux LVM?

Řešení 1:

Právě jsem zkoušel upgrade založený na snímku s Ubuntu. A ano, několikrát jsem potřeboval restartovat. Nejdříve přejmenujte původní root-lv na něco jiného, ​​abyste mohli dát snímku původní název (protože upgrade vytváří spoustu změn a změny jsou na snímku rychlejší než na originálu ):

 # lvrename lvm root root-old
 # lvcreate -n root -s lvm/root-old -L 10G

Velikost by měla být zvolena vhodně. Poté restartujte, takže 'nový' lvm/ubuntu bude připojen jako root a můžete provést upgrade. Nyní můžete otestovat novou verzi a dokonce přejít na starý systém pomocí

 # lvrename lvm root root-new
 # lvrename lvm root-old root
 # reboot

Pokud chcete upgrade zrušit, stačí spustit (ze starého systému)

# lvremove lvm/root-new

Pokud chcete změny potvrdit, stačí spustit (ze starého systému)

# lvconvert --merge lvm/root-new

nebo z nového systému

# lvrename lvm root root-new
# lvconvert --merge lvm/root-new
# lvrename lvm root-old root

následovaný restartem. Systém okamžitě odmítne provést sloučení, protože svazky jsou otevřené. Takže sloučení bude spuštěno během bootování a bude pokračovat, zatímco vy již můžete pracovat se systémem.

Jo a mimochodem:Při změně mezi systémy nezapomeňte použít vhodné jádro. Protože /boot není součástí lvm, stará a nová jádra by tam byla umístěna vedle sebe.

Řešení 2:

Dobře, myslím, že jsem na to přišel, když jsem si znovu přečetl HOWTO 3.8.

  • Snímky pouze pro čtení (jako LVM1) obsahují rozdíly na úrovni bloku po vytvoření snímku – originál se stále mění, ale snímek si zachovává reprezentaci originálu. Čtení od snímek prezentuje data tak, jak vypadala v té době.
  • Snímky pro čtení a zápis (výchozí v LVM2) lze zapisovat do:jsou to fork původního oddílu. Psaní komu snímek nemění originál.

Způsob, jakým snímek funguje, je sada změn na úrovni bloku oproti originálu. Když je tedy originál zapsán, stanou se následující věci:

  1. Něco se pokouší zapsat do originálu.
  2. Originál se načte a bloky z originálu se zkopírují do snímku.
  3. Originál se změní.
  4. Snímek obsahuje „obrácené rozdíly“ – změny, díky nimž originál vypadá jako při vytvoření snímku.

Zahození snímku tedy originál vůbec neovlivní – protože originál byl změněn a snímek obsahoval pouze seznam těchto změn.

Odpověď na vlastní otázku:

Vytvořte nový snímek pomocí LVM. Pokud lze aktualizaci nakonfigurovat tak, aby zapisovala do bodu připojení snímku, použijte snímek R/W. V opačném případě postačí RO nebo R/W.

Potom:

  • Při zápisu do R/W snímku bod připojení, potvrdit zapsáním snímku do originálu a vrácením zahozením snímku.
  • Pokud píšete do originálu bod připojení, potvrdit zahozením snímku a vrácením zápisem ze snímku do originálu.

Stále jsem nenašel nástroj, který by konkrétně provedl toto sloučení – a vzhledem k tomu, že můj scénář není přesně zamýšleným použitím snímků, možná žádný neexistuje. Zní to jako práce pro rdiffa.

Řešení 3:

Funkce sloučení snímků LVM2 / mapovače zařízení je k dispozici, pokud používáte Linux 2.6.33+ a používáte LVM 2.0.58+:

lvconvert --merge

Viz tento příspěvek:http://www.jonnor.com/2010/02/lvm-snapshot-merging-avaliable/

Odkazuje na http://kernelnewbies.org/Linux_2_6_33 (podívejte se na sekci 5, MD/DM) a LVM changelog ve verzi 2.0.58:ftp://sources.redhat.com/pub/lvm2/WHATS_NEW

Ale jak to správně používat, to vám zatím neporadím;-)

Řešení 4:

LVM funguje na úrovni bloku. Dokonce ani 'neví', co je souborový systém. Nemůžete tedy snímat pouze určité adresáře, pokud tam není připojen souborový systém z jiného svazku LVM.

Když vytvoříte snímek LVM, ve skutečnosti požadujete „kopírování při zápisu“ duplikát svazku. Jakýkoli blok, který by se změnil na pořízeném svazku, bude nejprve uložen nezměněn na snímku. Takže pro „potvrzení změn“ nemusíte dělat nic. Stačí odstranit svazek snímku.

Nevím, jaký je doporučený způsob, jak „vrátit změny“, protože jsem v takovém scénáři nikdy nepoužil LVM, ale myslím, že je to někde dobře popsáno v dokumentaci LVM. Ať už je to cokoliv, pravděpodobně budete muset restartovat vše, co bylo změněno, restart může být dobrý nápad.

Řešení 5:

  1. Není žádný důvod ke sloučení nějaký. Stačí odstranit snímek, zdrojový LV zůstane změněn
  2. Chcete-li vrátit změny, je nutné sloučení lvconvert --merge <snapshot name>
  3. LVM pracuje s blokovými zařízeními. Jakékoli změny související s FS by měly být prováděny speciálními nástroji (xfs_growfs, e2fsck, ...) podle typu FS

Snímek „zmrazí“ původní stav LV. Odebrat snímek znamená zapomenout na tento stav. Sloučit snímek znamená návrat do tohoto stavu

Uvnitř LVM však ukládá přepsaná data ve snímku:ujistěte se, že velikost snímku odpovídá očekávanému množství změn na LV a snímku


Linux
  1. Jak vytvořit fyzický svazek v Linuxu pomocí LVM

  2. Vytváření logických svazků v Linuxu pomocí LVM

  3. LVM Snapshot:Zálohování a obnovení oddílu LVM v Linuxu

  1. Jak rozšířit odkládací oddíl LVM v Linuxu

  2. Synchronizujte snímky LVM se záložním serverem

  3. Linux device-mapper mapuje LVM PV vnořené uvnitř LV při pořizování snímku

  1. Kompletní průvodce LVM v Linuxu pro začátečníky

  2. Příkazy LVM selžou s „Nepodařilo se načíst konfigurační soubor /etc/lvm/lvm.conf“

  3. Příklady příkazů lvmconf v Linuxu