Uživatelské nástroje

Nástroje pro tento web


private:poznamky:linux:zfs

ZFS

Doporučení pro vytváření ZFS device - Read Me 1st

Vytvoření zpool

Zpool je tvořen jen jedním diskem, může se použít např. pro zálohy na USB disk.
Disky mohou rotovat.

zpool create -f poolz3bck /dev/sdg
zfs create poolz3bck/backup
zfs set compression=lz4 poolz3bck/backup

Odstranění zpool

zpool destroy poolz3bck

Vytvoření ZFS pool dle id disků

ls -la /dev/disk/by-id

Mapování mezi ID a jménem lze zjistit příkazem lsblk.
Konkrétně např. pro disk sda

lsblk -O /dev/sda

Vytvoření raid pool

Vytvoření mirror pool:

zpool create -f vspool mirror 

Vytvoření raidz1 pool:

zpool create -f vspool raidz1 /dev/disk/by-id/ata-WDC_WD2004FBYZ-01YCBB1_WD-WMC6N0D3UY36 /dev/disk/by-id/ata-WDC_WD2004FBYZ-01YCBB1_WD-WMC6N0D004T6 /dev/disk/by-id/ata-WDC_WD2004FBYZ-01YCBB1_WD-WMC6N0D4Z3LT /dev/disk/by-id/ata-WDC_WD2004FBYZ-01YCBB1_WD-WMC6N0D9SRC6

Raid pool pro Proxmox - VS

https://louwrentius.com/zfs-performance-and-capacity-impact-of-ashift9-on-4k-sector-drives.html
https://blog.zanshindojo.org/proxmox-zfs-performance/

Mirror vdev

zpool create vspool01 -o ashift=12 mirror ata-SAMSUNG_MZ7L31T9HBLT-00A07_S6ESNC0TC10583 ata-SAMSUNG_MZ7L31T9HBLT-00A07_S6ESNC0TC10568

Nastavení komprese

zfs set compression=lz4 vspool01

Vypnutí atime

zfs set atime=off vspool01

Vytvoření block device - dataset

Např. pro Xen VM

zfs create -V 40G vspool/vision
  
# blocksize 128k  
zfs create -V 200G -o compression=lz4 -o volblocksize=128k vspool/VM/vision


zfs get volsize,used,volblocksize,usedbydataset,logicalreferenced  vspool/VM/vision

Rozšíření prostoru pro block device - rozšíření datasetu - resize

Zjištění stávající velikosti

zfs get volsize vspool/vision

Nstavení nvé velikosti

zfs set volsize=45G vspool/vision  

http://thegeekdiary.com/the-ultimate-zfs-interview-questions/ http://zfsonlinux.org/example-zvol.html

Pro rozšíření je nutné vypnout/zapnout virtuální počítač a následně rozšířit prostor prostředky v rámci OS(Windows/Linux)

Pro Windows systémy je diskový prostor možné rozšířit online v rámci nástroje Správa disků.

Pro Linux systémy by měl být funkční následující postup:

  1. Vypnout virtuální počítač
  2. Pomocí nástroje fdisk odstranit obkast pro swap (např. fdisk /dev/zvol/vspool/VM/keo, smazat oblast 2 - pokud existuje swap file)
  3. Smazat oblast 1 a následně vytvořit novou rozšířenou(větší než původní) oblast. Ponechte prostor pro swap.
  4. Proveďte kontrolu nové oblasti 1 → e2fsck -f /dev/zvol/vspool/VM/keo-part1
  5. Po úspěšně kontrole proveďte resize → resize2fs /dev/zvol/vspool/VM/keo-part1

Kopie block device do img souboru

Block device(např. virtuální PC) lze zkopírovat pomocí příkazu dd

Např.: dd if=/dev/zvol/vspool/vm/CONFLUENCE of=/mnt/backup/zfstestbck/confluence_dev.img

ZIL log a L2ARC cache

http://dtrace.org/blogs/brendan/2008/07/22/zfs-l2arc/

https://www.svennd.be/tuning-of-zfs-module/

ZFS with SSDs: Am I asking for a headache in the near future?
https://forum.proxmox.com/threads/zfs-with-ssds-am-i-asking-for-a-headache-in-the-near-future.25967/

I have no idea how the lack of TRIM in ZFS affects cache performance in the long term, but all SSDs have automatic garbage collection / maintenance routines, so I think the most important thing is to set aside some decent OP (over provision = unpartitioned space) area, like 15-20% of the capacity, and I reckon everything should be fine.

On 250 GB TLC drives, I would leave about 40-50 GB unpartitioned, so partition table would look like this: - 10 GB SWAP (mirrored on other drive) - 10 GB ZIL (mirrored on other drive) - 180 GB L2ARC (striped with other drive)

Používaji se SSD disky. Pro ZIL log stačí menší prostor ideálně miror, pro L2ARC cache nemirorovaný.

SSD disky se rozdělí na partition. Např pro 128GB SSD se nechá 8GB pro log a zbytek pro cache.

zpool add vspool log mirror /dev/disk/by-id/ata-Samsung_SSD_850_PRO_128GB_S24ZNWAG942247J-part1 /dev/disk/by-id/ata-Samsung_SSD_850_PRO_128GB_S24ZNXAGA14082B-part1
zpool add vspool cache /dev/disk/by-id/ata-Samsung_SSD_850_PRO_128GB_S24ZNWAG942247J-part2 /dev/disk/by-id/ata-Samsung_SSD_850_PRO_128GB_S24ZNXAGA14082B-part2

Výsledek pak vypadá podobně jako na výpisu:

debian:~# zpool status
pool: vspool
state: ONLINE
scan: resilvered 0 in 0h33m with 0 errors on Tue May 17 14:41:08 2016
config:
     NAME                                                     STATE     READ WRITE CKSUM
      vspool                                                   ONLINE       0     0     0
        mirror-0                                               ONLINE       0     0     0
          ata-WDC_WD7500BPKX-00HPJT0_WD-WXG1A95HA0A8           ONLINE       0     0     0
          ata-WDC_WD7500BPKX-00HPJT0_WD-WXG1A95HAH3C           ONLINE       0     0     0
      logs
        mirror-1                                               ONLINE       0     0     0
          ata-Samsung_SSD_850_PRO_128GB_S24ZNWAG942247J-part1  ONLINE       0     0     0
          ata-Samsung_SSD_850_PRO_128GB_S24ZNXAGA14082B-part1  ONLINE       0     0     0
      cache
        ata-Samsung_SSD_850_PRO_128GB_S24ZNWAG942247J-part2    ONLINE       0     0     0
        ata-Samsung_SSD_850_PRO_128GB_S24ZNXAGA14082B-part2    ONLINE       0     0     0
errors: No known data errors

Mount

Mount zfs pool.

Nastavení mountpointu a zároveň připojení

zfs set mountpoint=/mnt/zfspool vspool/constainers/skolawp

Připojení k již existujícímu mountpointu

zfs mount vspool/constainers/skolawp

Quota

https://linuxhint.com/setup-zfs-quotas-reservations/

Existují dvě možnosti jak nastavit quotu.

Quota - do celkové velikosti se započítavají snapshoty

Refquota - započítává se jen místo obsazené daty (ne snapshoty)

zfs get refquota,quota vspool/containers/skolawp

zfs set quota=20G vspool/containers/skolawp
zfs get quota vspool/containers/skolawp

zfs set refquota=15G vspool/containers/skolawp
zfs get refquota vspool/containers/skolawp

Pomocí quoty jsou omezeny velikosti LXC kontejnerů v Proxmoxu - např. jira, confluence, bamboo

Pokud se vyčerpá nastavený limit, není možné mazat soubory a odstraňovat adresáře.
Nikdy nezkoušejte zmenšit velikost.

zfSnap - Zálohování pomocí snashotů

zfs backup - zfSnap

Je použitý externí skrip zfSnap
https://github.com/zfsnap/zfsnap/wiki/zfSnap

Pro Debian a Ubuntu existuje balíček zfsnap

apt-get install zfsnap

zfSnap vytváří standardní snapshoty pomocí příkazu zfs snapshot např: zfs snapshot tank/test@tuesday

0 8-22/1 * * *  /usr/sbin/zfSnap -a 1d poolz1/VM/BITBUCKET -a 1d poolz1/VM/CONFLUENCE -a 1d poolz1/VM/VSSQL01 -a 1d poolz1/VM/VALKYRA -a 1d poolz1/VM/HPLAPP01 -a 1d poolz1/VM/HPLAPP02 -a 1d poolz1/VM/BAMBOO -a 1d poolz1/VM/JIRA
0 23 * * 1-5  /usr/sbin/zfSnap -a 2w poolz1/VM/BITBUCKET -a 2w poolz1/VM/CONFLUENCE -a 2w poolz1/VM/VSSQL01 -a 2w poolz1/VM/VALKYRA -a 2w poolz1/VM/HPLAPP01 -a 2w poolz1/VM/HPLAPP02 -a 2w poolz1/VM/BAMBOO -a 2w poolz1/VM/JIRA
0 23 * * 6  /usr/sbin/zfSnap -a 2m poolz1/VM/BITBUCKET -a 2m poolz1/VM/CONFLUENCE -a 2m poolz1/VM/VSSQL01 -a 2m poolz1/VM/VALKYRA -a 2m poolz1/VM/HPLAPP01 -a 2m poolz1/VM/HPLAPP02 -a 2m poolz1/VM/BAMBOO -a 2m poolz1/VM/JIRA
45 23 1 * *  /usr/sbin/zfSnap -a 1y poolz1/VM/BITBUCKET -a 1y poolz1/VM/CONFLUENCE -a 1y poolz1/VM/VSSQL01 -a 1y poolz1/VM/VALKYRA -a 1y poolz1/VM/HPLAPP01 -a 1y poolz1/VM/HPLAPP02 -a 1y poolz1/VM/BAMBOO -a 1y poolz1/VM/JIRA
0 1 * * *  /usr/sbin/zfSnap -d
10 */1 * * *  /usr/local/sbin/zxfer -dFkPv -g 376 -R poolz1/VM poolz3bck

Smazání všech snapshotů

https://htpcbuildguide.com/eliminate-zfs-auto-snapshots-on-certain-zfs-filesystems-and-delete-all-snapshots/

### s parametrem n se provede test - nedojde ke smazání 
zfs destroy -rnv data/SystemBackups@%

zfs destroy -rv data/SystemBackups@%

Obnova ze snapshotu

Lze použít buď příkaz rollback nebo clone

Pro obnovu je ideální použít clone a promote

Po naklonování snapshotu se otestuje funkčnost(dostupná data, funkční VS). Pokud je vše v pořádku tak se může provést promote
To má za následek, že vznikne druhý dataset.

DODĚLAT -UPRAVIT

https://vnugget.com/oracle-solaris/understanding-zfs-clone/

Rolback

POZOR, rollback snapshotu se vrátí do stavu pořízení snapshotu. Časově následující snapshoty jsou smazány.

zfs rollback -r vspool/VM/srv01@2016-10-13_20.26.26--1d

Clone, promote, rename

zfs clone vspool/vm/FI-SYS-DISK@2016-11-21_13.31.16--1d vspool/vm/FI-SYS-DISK_clone01
debian:/etc/xen# zfs list -t all|more
NAME                                                  USED  AVAIL  REFER  MOUNTPOINT
vspool                                                309G   366G    96K  /vspool
vspool/vm                                             309G   366G    96K  /vspool/vm
vspool/vm/FI-SYS-DISK                                 155G   520G   152G  -
vspool/vm/FI-SYS-DISK@2016-11-21_13.18.38--1d            0      -   152G  -
vspool/vm/FI-SYS-DISK@2016-11-21_13.28.36--1d        5.52M      -   152G  -
vspool/vm/FI-SYS-DISK@2016-11-21_13.30.28--1d        2.48M      -   152G  -
vspool/vm/FI-SYS-DISK@2016-11-21_13.31.16--1d        12.1M      -   152G  -
vspool/vm/FI-SYS-DISK_clone                           153G   366G   152G  -
vspool/vm/FI-SYS-DISK_clone@2016-11-21_13.16.51--1d   724M      -   152G  -
vspool/vm/FI-SYS-DISK_clone01                         477M   366G   152G  -

Byl vytvořen zapisovatelný snapshot vspool/vm/FI-SYS-DISK_clone01, nyní je možné zkontrolovat jestli se na něm nachází očekávaná data. Pokud se jedná jako v tomto případě o disk virtuálního serveru, lze snapshot standardně použít v konfiguračním souboru xenu jako virtuální disk.

disk = [ 'phy:/dev/zvol/vspool/vm/FI-SYS-DISK_clone01,ioemu:hda,w']

Jestliže jsou na disku očekávaná data, lze použít příkaz promote a převést do stavu běžného zvool.

zfs promote vspool/vm/FI-SYS-DISK_clone01

Pokud klon nebyl proveden ze správného snapshotu - na disku nejsou požadovaná data je možné klon smazat příkazem

zfs destroy vspool/vm/FI-SYS-DISK_clone01
debian:/etc/xen# zfs list -t all|more
NAME                                                    USED  AVAIL  REFER  MOUNTPOINT
vspool                                                  309G   366G    96K  /vspool
vspool/vm                                               309G   366G    96K  /vspool/vm
vspool/vm/FI-SYS-DISK                                   155G   520G   152G  -
vspool/vm/FI-SYS-DISK_clone                             153G   366G   152G  -
vspool/vm/FI-SYS-DISK_clone@2016-11-21_13.16.51--1d     724M      -   152G  -
vspool/vm/FI-SYS-DISK_clone01                          1.11G   366G   152G  -
vspool/vm/FI-SYS-DISK_clone01@2016-11-21_13.18.38--1d      0      -   152G  -
vspool/vm/FI-SYS-DISK_clone01@2016-11-21_13.28.36--1d  5.52M      -   152G  -
vspool/vm/FI-SYS-DISK_clone01@2016-11-21_13.30.28--1d  2.48M      -   152G  -
vspool/vm/FI-SYS-DISK_clone01@2016-11-21_13.31.16--1d  11.7M      -   152G  -

Po provedení promote je možné přejmenovat souborový systém zfs tak aby se jmenoval stejně jako před použitím clonu.

zfs rename vspool/vm/FI-SYS-DISK vspool/vm/FI-SYS-DISK_old
zfs rename vspool/vm/FI-SYS-DISK_clone vspool/vm/FI-SYS-DISK_old01
zfs rename vspool/vm/FI-SYS-DISK_clone01 vspool/vm/FI-SYS-DISK

Příklad použití clone, promote a rename pro KEO

Po výpadku el. nenastartovala postrges SQL databáze.
Obnovil jsem server ze snapshotu cca 1hod před výpadkem el.

Výpis příkazů:

zfs clone vspool/VM/keo@2021-08-25_08.00.01--2d vspool/VM/keo-clone

# po overeni funkcnosti(musi se upravit xen cfg soubor) nasleduje promote
zfs promote vspool/VM/keo-clone

#prejmenovani puvodniho souboru na keo-bad
zfs rename vspool/VM/keo vspool/VM/keo-bad

#prejmenovani clone souboru na puvodni nazev keo
zfs rename vspool/VM/keo-clone vspool/VM/keo

#smazání poškozeného souboru - keo-bad
zfs destroy -r vspool/VM/keo-bad

Příklad použití clone - obnova souborů k určitému datu

Blokové zařízení - Proxmox VS

V příkladu je popsána obnova souboru uloženého na sdíleném NTFS disku.

#Vyber pozadovaneho snapshotu
zfs list -t all|grep props|grep server02

#Vybran snapshot z 2025-04-30_02.00.01
backup/props/server02/vm-100-disk-0@2025-04-30_02.00.01--2w

#Clone snapshotu
zfs clone backup/props/server02/vm-100-disk-0@2025-04-30_02.00.01--2w backup/props/server02/vm-100-disk-0_CLONE 

#Pripojeni - mount Clone device
mount /dev/zvol/backup/props/server02/vm-100-disk-0_CLONE-part2 /mnt/zvol

#Vyber pozadovaneho souboru a kopie napr. do slozky /home
root@bcksrv01:/# ls -la /mnt/zvol/
total 3670149
drwxrwxrwx 1 root root      28672 Apr 16 16:18  .
drwxr-xr-x 4 root root       4096 May  7 21:40  ..
drwxrwxrwx 1 root root       4096 Jan  6 17:23 '$Recycle.Bin'
-rwxrwxrwx 1 root root         80 Mar 17  2022  bootTel.dat
drwxrwxrwx 1 root root       4096 Feb 10  2022  Data
lrwxrwxrwx 2 root root         15 Jan 14  2020 'Documents and Settings' -> /mnt/zvol/Users
drwxrwxrwx 1 root root          0 Feb 26  2020  inetpub
drwxrwxrwx 1 root root       4096 Feb 23 18:53  MKSol
-rwxrwxrwx 2 root root      44812 Apr  4 22:00  OnedriveService.log
drwxrwxrwx 1 root root          0 Jan 12  2022  OneDriveTemp
-rwxrwxrwx 1 root root 3758096384 Apr  4 21:59  pagefile.sys
drwxrwxrwx 1 root root          0 Jun 18  2021  PerfLogs
drwxrwxrwx 1 root root       4096 Feb 12  2024  ProgramData
drwxrwxrwx 1 root root       8192 Apr 16 09:41 'Program Files'
drwxrwxrwx 1 root root       8192 Feb  6  2023 'Program Files (x86)'
drwxrwxrwx 1 root root          0 Jan 14  2020  Recovery
drwxrwxrwx 1 root root       4096 Jan 14  2020 'System Volume Information'
drwxrwxrwx 1 root root       4096 Jan  6 17:23  Users
drwxrwxrwx 1 root root      16384 Apr 16 09:41  Windows

#Umount
umount /mnt/zvol

#Odstraneni naklonovaneho zarizeni - zfs destroy
backup/props/server02/vm-100-disk-0_CLONE

Replikace - záloha pomocí skriptu zxfer

https://pixelchrome.org/notes/docs/zfs/freebsd_dr_with_zfssnap_and_zxfer/

Jedná o externí skript.
zxfer používá příkaz zfs send a zfs receive

https://github.com/allanjude/zxfer

Raw file - pro stažení - verze 1.1.7-20190219
https://github.com/allanjude/zxfer/raw/master/zxfer

wget https://github.com/allanjude/zxfer/raw/master/zxfer

Manuál s příklady použití
https://www.freebsd.org/cgi/man.cgi?query=zxfer&sektion=8&manpath=freebsd-release-ports

Upravený skript - řeší problém lokální replikace a readonly parametrů
https://github.com/allanjude/zxfer/raw/master/zxfer

Pozor skript standardně nepoužívá sysstémovou proměnou PATH, což může být problém při použití v cronu.
V logu se objevovala hláška: Failed to retrieve datasets from the destination

Po přidání PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin na začátek skriptu zxfer probíhá replikace v pořádku.

Nastavení cron pro rekurzivní zálohu všech filesystemů na vspool/VM

*/2 * * * * /usr/local/sbin/zxfer -dFkPv -g 376 -R vspool/VM zfsbck » /tmp/zxfer01.txt

Rekurzivní záloha filesystému vision na USB disk

zxfer -dFkPv -g 376 -R vspool/vm/vision zfsbck/backup

Rekurzivní záloha filesystému na vzdálený počítač

/usr/local/sbin/zxfer -dFkPv -o compression=lzjb -T btax01 -R vspool/VM/owncloud cloud/VM
/usr/local/sbin/zxfer -dFkPv -o compression=lzjb -T btax01 -R vspool/VM/btasrv vspool/VM
/usr/local/sbin/zxfer -dFkPv -o compression=lzjb -T btax01 -R vspool/VM/dc01 vspool/VM

Konfigurace pro ssh je uložena v souboru /root/.ssh/config

Host btax01
    HostName 192.168.0.10
    Port 22
    User root
    IdentityFile ~/.ssh/id_rsa  

Obnova pomocí zxfer

Obnova celého pool(u)

zxfer -deFPv -R backup01/pools/storage/ storage

Obnova filesystému

Vzdálená obnova - podmínkou je nakonfigurované ssh(config + klíč)

zxfer -deFPv -O bckralupy -R backup/props/tmpsrv/vspool02/VM vspool

Kopíruje se ze zálohovacího serveru(bckralupy) na lokální server do vspool

NAME                                              USED  AVAIL     REFER  MOUNTPOINT
vspool                                            112G   787G       24K  /vspool
vspool/VM                                         112G   787G       24K  /vspool/VM
vspool/VM/vm-100-disk-0                           112G   869G     25.8G  -
vspool/VM/vm-100-disk-0@2022-06-06_08.27.05--1w   468M      -     25.2G  -
.
.
.
 

Lokálně

zxfer -deFPv -N zbackup/VM/dc01 vspool/VM

Před spuštěním přikazu je potřeba smazat původní file system

zfs destroy -r vspool/VM/dc01

http://www.manualpages.de/FreeBSD/FreeBSD-ports-9.0-RELEASE/man8/zxfer.8.html
https://zpool.org/zfs-snapshots-and-remote-replication/
https://blogs.confusticate.com/jeremy/tag/zfs/
Zvýšení rychlosti zfs send a receive
http://everycity.co.uk/alasdair/2010/07/using-mbuffer-to-speed-up-slow-zfs-send-zfs-receive/
http://www.mceith.com/blog/?p=183
https://blog.bitratchet.com/2015/12/10/crazy-times-with-zxfer/
http://blog.yucas.mx/2017/01/04/fast-zfs-send-with-netcat/

Problém při lokální kopii pomocí ZXFER

https://github.com/allanjude/zxfer/issues/42

Upravený skript zxfer: zxfer.tgz

Zakomentovány řádky 688,689,690 a 693

#if [ "$RZFS" = "$LZFS" ]; then                                               ##SNE
  #  rzfs_list_hr_S_snap=$lzfs_list_hr_S_snap                                   ##SNE
  #else                                                                         ##SNE
    rzfs_list_hr_S_snap=$($RZFS list -Hr -o name -S creation -t snapshot $destination) ||
      { echo "Failed to retrieve snapshots from the destination"; exit 3; }
  #fi                                                                           ##SNE

Problém při replikaci na zfs verze 0.7.x

V teto verzi přibyli nové atributy. Proto je potřeba upravit skript zxfer

https://github.com/allanjude/zxfer/issues/46

Upravený skript - řeší i problém lokální replikace
https://github.com/allanjude/zxfer/raw/master/zxfer

Replikace z ProxMox serveru - problém s právy

Při pokusu o replikaci se objeví chybová hláška:

/usr/local/sbin/zxfer -dFkPv -T bcksrv -R vspool/VM  backup/uradveltrusy/vels01x
Creating destination filesystem "backup/uradveltrusy/vels01x/VM" with specified properties.
cannot create 'backup/uradveltrusy/vels01x/VM': invalid property 'aclmode'
Error when creating destination filesystem.

Na záložním serveru je potřeba vytvořit jednotlivé filestémy a nastavit oprávnění

zfs create backup/uradveltrusy/vels01x/VM
zfs create backup/uradveltrusy/vels01x/VM/subvol-101-disk-0
zfs create backup/uradveltrusy/vels01x/VM/vm-100-disk-0
zfs set acltype=posixacl backup/uradveltrusy/vels01x/VM/subvol-101-disk-0
zfs set acltype=posixacl backup/uradveltrusy/vels01x/VM/vm-100-disk-0

Záloha na vyměnitelná média - USB disk

zpool list

NAME     SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
vspool   696G   290G   406G         -    28%    41%  1.00x  ONLINE  -
zfsbck   928G  26.9G   901G         -     2%     2%  1.00x  ONLINE  -
zpool export zfsbck
zpool list

NAME     SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
vspool   696G   290G   406G         -    28%    41%  1.00x  ONLINE  -
zpool import zfsbck

Pokud se použije příkaz zpool import bez parametru, pak se vypíše seznam pool, které lze naimportovat.

zpool list

NAME     SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
vspool   696G   290G   406G         -    28%    41%  1.00x  ONLINE  -
zfsbck   928G  26.9G   901G         -     2%     2%  1.00x  ONLINE  -

Obnova ze zálohy

Před obnovou můžeme ověřit zálohu příkazem

zstreamdump < confluence.img

V rámci dvou zfs uložišť lze použít zfs send a zfs receive. Např. při restoru z USB disku.
Ale pokud např. uložíme zfs snapshot na Ext4 souborový systém příkazem
zfs send poolz3bck/backup/Confluence/Confluence > /mnt/backup/zfstestbck/confluence.img

Zde jsem chvíli tápal, domníval jsem se, že soubor cnfluence.img je již obraz virtuálního serveru. Ale není tomu tak.Jedná se o uložený dataset a jeden konkrétní snapshot.

Pro obnovu je potřeba příkazem zfs receive nahrát soubor do připraveného datasetu.

Např.: zfs receive -F vspool/vm/confluence < /mnt/backup/zfstestbck/confluence.img

zfs list -t all|grep vspool

vspool/vm/confluence                                            5.88G   494G  5.76G  /vspool/vm/confluence
vspool/vm/confluence@2016-06-09_11.00.01--1d

Výměna vadného disku

http://askubuntu.com/questions/305830/replacing-a-dead-disk-in-a-zpool

Pomocí příkazu zdb zjistíme disk GUID a následně převedeme disk do stavu offline.

zpool offline vspool 8908311146390156902

Následně vyměníme vadný disk za nový a pak pomocí příkazu replace zařadíme do pool.

zpool replace vspool 8908311146390156902 /dev/disk/by-id/ata-Samsung_SSD_850_PRO_128GB_S24ZNXAGA14082B  

Odstranění Logs a Cache device z pool

Na serveru docházelo k chybám disku v Log a Cache

 NAME                                                     STATE     READ WRITE CKSUM
        vspool                                                   DEGRADED     0     0     0
          raidz1-0                                               ONLINE       0     0     0
            ata-WDC_WD7500BPKX-00HPJT0_WD-WXA1A25RKPVC           ONLINE       0     0     0
            ata-WDC_WD7500BPKX-00HPJT0_WD-WXG1A95HA0A8           ONLINE       0     0     0
            ata-WDC_WD7500BPKX-00HPJT0_WD-WXG1A95HAH3C           ONLINE       0     0     0
        logs
          mirror-1                                               DEGRADED     0     0     0
            6032371930805775579                                  UNAVAIL      0     0     0  was /dev/disk/by-id/ata-Samsung_SSD_850_PRO_128GB_S24ZNWAG942247J-part1
            ata-Samsung_SSD_850_PRO_128GB_S24ZNXAGA14082B-part1  ONLINE       0     0     0
        cache
          ata-Samsung_SSD_850_PRO_128GB_S24ZNWAG942247J-part2    UNAVAIL      0     0     0
          ata-Samsung_SSD_850_PRO_128GB_S24ZNXAGA14082B-part2    ONLINE       0     0     0
          

Proto bylo nutné zrušit Logs a Cache.

Vadný disk není možné odebrat, je nutné nejdříve provést detach.

zpool remove vspool ata-Samsung_SSD_850_PRO_128GB_S24ZNWAG942247J-part1
cannot remove ata-Samsung_SSD_850_PRO_128GB_S24ZNWAG942247J-part1: operation not supported on this type of pool

zpool detach vspool ata-Samsung_SSD_850_PRO_128GB_S24ZNWAG942247J-part1

Partititon zařazenou v Cache nebylo možné detach, ale bylo možné jí odebrat

zpool detach vspool ata-Samsung_SSD_850_PRO_128GB_S24ZNWAG942247J-part2  
cannot detach ata-Samsung_SSD_850_PRO_128GB_S24ZNWAG942247J-part2: device is in use as a cache

zpool remove vspool ata-Samsung_SSD_850_PRO_128GB_S24ZNWAG942247J-part2

zpool status pak vypadá následovně

root@ubuntu:~# zpool status
  pool: vspool
 state: ONLINE
  scan: scrub repaired 0 in 0h0m with 0 errors on Sun Feb 12 00:24:13 2017
config:

        NAME                                                   STATE     READ WRITE CKSUM
        vspool                                                 ONLINE       0     0     0
          raidz1-0                                             ONLINE       0     0     0
            ata-WDC_WD7500BPKX-00HPJT0_WD-WXA1A25RKPVC         ONLINE       0     0     0
            ata-WDC_WD7500BPKX-00HPJT0_WD-WXG1A95HA0A8         ONLINE       0     0     0
            ata-WDC_WD7500BPKX-00HPJT0_WD-WXG1A95HAH3C         ONLINE       0     0     0
        logs
          ata-Samsung_SSD_850_PRO_128GB_S24ZNXAGA14082B-part1  ONLINE       0     0     0
        cache
          ata-Samsung_SSD_850_PRO_128GB_S24ZNXAGA14082B-part2  ONLINE       0     0     0

errors: No known data errors
  

Nyní je možné odstranit z pool dvě funkční partition

zpool remove vspool ata-Samsung_SSD_850_PRO_128GB_S24ZNXAGA14082B-part1
zpool remove vspool ata-Samsung_SSD_850_PRO_128GB_S24ZNXAGA14082B-part2
root@ubuntu:~# zpool status
  pool: vspool
 state: ONLINE
  scan: scrub repaired 0 in 0h0m with 0 errors on Sun Feb 12 00:24:13 2017
config:

        NAME                                            STATE     READ WRITE CKSUM
        vspool                                          ONLINE       0     0     0
          raidz1-0                                      ONLINE       0     0     0
            ata-WDC_WD7500BPKX-00HPJT0_WD-WXA1A25RKPVC  ONLINE       0     0     0
            ata-WDC_WD7500BPKX-00HPJT0_WD-WXG1A95HA0A8  ONLINE       0     0     0
            ata-WDC_WD7500BPKX-00HPJT0_WD-WXG1A95HAH3C  ONLINE       0     0     0

errors: No known data errors

Odkazy

Zapracovat do dokumentu

zfs send tank/test@tuesday | zfs receive pool/test

Scrub

https://utcc.utoronto.ca/~cks/space/blog/solaris/ZFSScrubsOurSpeedup

Na cca 3TB poli jsem spustil zfs scrub pool. Na serveru bylo spuštěno cca 10 VS. Servery přestali reagovat a celý systém měl hrozně dlouhé odezvy. Nakonec jsem musel scrub ukončit scrub -s pool. Čekal jsem cca 15 hodin než se scrub zastaví, nezastavil se. Server jsem restartoval(init 6). Po restartu proběhla obnova soubor. systémů na VS.

Problémy

Nový pool nebylo možné vytvořit, jeden z disků se pro OS zdál používaný.
Problém byl způsoben asi historickým použitím raid disku(instalace mdadm). Problém se podařilo detekovat pomocí programu lsblk. Pak pomohla odinstalace balíku mdadm - apt-get remove mdadm

ZFS on Debian 9

https://unix.stackexchange.com/questions/383566/install-zfs-on-debian-9-stretch

sed -i 's/main/main contrib non-free/g' /etc/apt/sources.list
apt-get update

apt -y install linux-headers-$(uname -r)
ln -s /bin/rm /usr/bin/rm
apt-get -y install zfs-dkms

/sbin/modprobe zfs

systemctl restart zfs-import-cache
systemctl restart zfs-import-scan
systemctl restart zfs-mount
systemctl restart zfs-share

Pozor, nyní je potřeba vytvořit pool, zkontrolovat příkazem zpool status a teprve potom server restartovat.

Optimalizace ZFS pro SSD disky

Remove ZFS Metadata

https://icesquare.com/wordpress/freebsdhow-to-remove-zfs-meta-data/

#replace /dev/sdXX with that actual ID of your hard drive
dd if=/dev/zero of=/dev/sdXX bs=512 count=10
dd if=/dev/zero of=/dev/sdXX bs=512 seek=$(( $(blockdev --getsz /dev/sdXX) - 4096 )) count=1M

Resilver

ZFS Storage

ZFS Health Check and Status

Rename POOL

ZFS rename POOL

https://prefetch.net/blog/2006/11/15/renaming-a-zfs-pool/

Postup je jednoduchý, stačí vyexportovat konkrétní pool a následně ho naimportovat s novým jménem.

Pokud je disk registrovaný jako storage v Proxmoxu, je potřeba ho nejdříve odebrat - jinak se automaticky importuje.

zpool export vspool01
zpool import 5450106253634307464 vspool011

Optimalizace pro DB

Vytvoření raid1 pool přidáním disku - beze ztráty dat

Po připojení druhého disku se spustí resilvering. Doba trvání resilveringu(synchronizace dat v rámci pole) je závislá na množství dat a velikosti disku.

zpool attach mypool /dev/sdX /dev/sdY

https://unix.stackexchange.com/questions/525950/how-to-convert-one-disk-zfs-pool-into-two-disk-raid1-pool

ZFS share

Sdílení souborového systému např. pro nfs nebo smb(samba)

https://linuxhint.com/share-zfs-filesystems-nfs/

ZFS volume - změna volblocksize

Instalace Debian 11 - Bullseye

https://wiki.debian.org/ZFS

apt update

# uprava sources list - add backports
codename=$(lsb_release -cs);echo "deb http://deb.debian.org/debian $codename-backports main contrib non-free"|tee -a /etc/apt/sources.list && apt update

apt install linux-headers-amd64;apt install -t bullseye-backports zfsutils-linux

ZFS rename

Rename umožňuje měnit název file systému, ale umožňuje také relokaci v rámci ZFS struktury, případně oboje najednou. Změnu názvu file systému a zároveň relokaci.

Příklad relokace v rámci ZFS struktury.
Původní stav:

backup/skolaveltrusy                                                        204G  11.4T      124K  /backup/skolaveltrusy
backup/skolaveltrusy/DC01                                                   204G  11.4T      162G  -
backup/skolaveltrusy/DC01@2023-03-04_23.00.01--1m                          5.32G      -      162G  -
backup/skolaveltrusy/DC01@2023-03-11_23.00.01--1m                          5.01G      -      162G  -
backup/skolaveltrusy/DC01@2023-03-18_23.00.01--1m                          5.79G      -      162G  -
backup/skolaveltrusy/DC01@2023-03-25_23.00.01--1m                          3.87G      -      162G  -
backup/skolaveltrusy/DC01@2023-03-27_23.00.01--1w                          2.34G      -      162G  -
backup/skolaveltrusy/DC01@2023-03-28_23.00.01--1w                          2.31G      -      162G  -
backup/skolaveltrusy/DC01@2023-03-29_23.00.01--1w                          2.29G      -      162G  -
backup/skolaveltrusy/DC01@2023-03-30_23.00.01--1w                          82.8M      -      162G  -
backup/skolaveltrusy/DC01@2023-03-31_08.00.01--1d                          25.9M      -      162G  -
backup/skolaveltrusy/DC01@2023-03-31_10.00.01--1d                          28.8M      -      162G  -
backup/skolaveltrusy/DC01@2023-03-31_12.00.01--1d                          41.5M      -      162G  -
backup/skolaveltrusy/DC01@2023-03-31_14.00.01--1d                          22.1M      -      162G  -
backup/skolaveltrusy/DC01@2023-03-31_16.00.01--1d                          17.9M      -      162G  -
backup/skolaveltrusy/DC01@2023-03-31_18.00.01--1d                          21.7M      -      162G  -
backup/skolaveltrusy/DC01@2023-03-31_19.55.53--1w                          24.6M      -      162G  -
backup/skolaveltrusy/DC01@2023-03-31_20.00.01--1d                          26.8M      -      162G  -
backup/skolaveltrusy/DC01@2023-03-31_22.00.01--1d                          15.7M      -      162G  -

Nová struktura ZFS - cestabyla upravena o název serveru SKOL02X

zfs create backup/skolaveltrusy/skol02x
zfs set compression=lz4 backup/skolaveltrusy/skol02x
zfs rename backup/skolaveltrusy/DC01  backup/skolaveltrusy/skol02x/DC01

backup/skolaveltrusy/skol02x/DC01                                           204G  11.4T      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-04_23.00.01--1m                  5.32G      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-11_23.00.01--1m                  5.01G      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-18_23.00.01--1m                  5.79G      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-25_23.00.01--1m                  3.87G      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-27_23.00.01--1w                  2.34G      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-28_23.00.01--1w                  2.31G      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-29_23.00.01--1w                  2.29G      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-30_23.00.01--1w                  82.8M      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-31_08.00.01--1d                  25.9M      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-31_10.00.01--1d                  28.8M      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-31_12.00.01--1d                  41.5M      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-31_14.00.01--1d                  22.1M      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-31_16.00.01--1d                  17.9M      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-31_18.00.01--1d                  21.7M      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-31_19.55.53--1w                  24.6M      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-31_20.00.01--1d                  26.8M      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-31_22.00.01--1d                  15.7M      -      162G  -
backup/skolaveltrusy/skol02x/DC01@2023-03-31_23.00.01--1w                     0B      -      162G  -
private/poznamky/linux/zfs.txt · Poslední úprava: autor: snemec

DokuWiki Appliance - Powered by TurnKey Linux