====== ZFS ======
ZFSonLinux
https://github.com/zfsonlinux/zfs/wiki/FAQ
===== Doporučení pro vytváření ZFS device - Read Me 1st =====
ZFS Raid - popis\\
http://nex7.blogspot.com/2013/03/readme1st.html\\
https://constantin.glez.de/2010/06/04/a-closer-look-zfs-vdevs-and-performance/\\
**Verze ZFS**\\
''cat /sys/module/zfs/version''\\
===== 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:\\
- Vypnout virtuální počítač
- Pomocí nástroje fdisk odstranit obkast pro swap (např. ''fdisk /dev/zvol/vspool/VM/keo'', smazat oblast 2 - pokud existuje swap file)
- Smazat oblast 1 a následně vytvořit novou rozšířenou(větší než původní) oblast. Ponechte prostor pro swap.
- Proveďte kontrolu nové oblasti 1 -> ''e2fsck -f /dev/zvol/vspool/VM/keo-part1''
- 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: {{ :private:poznamky:linux: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 ====
https://wiki.archlinux.org/title/ZFS
https://wiki.archlinux.org/index.php/ZFS
http://www.sixfeetup.com/blog/backing-up-using-zfs-snapshots-and-replication
https://zpool.org/zfs-snapshots-and-remote-replication/
http://wiki.complete.org/ZFSAutoSnapshots
http://changelog.complete.org/archives/9168-backing-up-every-few-minutes-with-simplesnap\\
http://breden.org.uk/2008/05/12/home-fileserver-backups-from-zfs-snapshots/\\
http://community.riocities.com/xen_storage_driver_domain.html
http://mehdi.me/setting-up-a-windows-server-2012-r2-virtual-machine-with-xen-on-ubuntu/
Xen domu storage\\
http://wiki.xenproject.org/wiki/Storage_driver_domains
Ubuntu ZFS install\\
http://www.jamescoyle.net/how-to/478-create-a-zfs-volume-on-ubuntu
Ubuntu 16.4 ZFS install\\
https://wiki.ubuntu.com/Kernel/Reference/ZFS
https://wiki.archlinux.org/index.php/Experimenting_with_ZFS
https://pve.proxmox.com/wiki/Storage:_ZFS#Administration
ZFS Raidz Performance, Capacity and Integrity\\
https://calomel.org/zfs_raid_speed_capacity.html\\
http://louwrentius.com/zfs-performance-and-capacity-impact-of-ashift9-on-4k-sector-drives.html\\
ZVOL storage for VMs\\
https://www.quernus.co.uk/2015/08/30/cloning-zvol-for-vm/\\
http://justinholcomb.me/blog/2016/05/23/zfs-volume-manipulations.html\\
http://open-zfs.org/wiki/Performance_tuning#Compression\\
https://www.heronovo.cz/proc-btrfs-proc-ne-zfs/
**832 TB ZFS - HW Supermicro**\\
https://www.jonkensy.com/832-tb-zfs-on-linux-project-cheap-and-deep-part-1/
===== 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 =====
http://wiki.lustre.org/Optimizing_Performance_of_SSDs_and_Advanced_Format_Drives\\
https://github.com/zfsonlinux/zfs/wiki/ZFS-on-Linux-Module-Parameters\\
===== 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 =====
https://louwrentius.com/zfs-resilver-performance-of-various-raid-schemas.html
===== ZFS Storage =====
71 TiB DIY NAS Based on ZFS on Linux
https://louwrentius.com/71-tib-diy-nas-based-on-zfs-on-linux.html
===== ZFS Health Check and Status =====
https://calomel.org/zfs_health_check_script.html
===== 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 =====
https://shatteredsilicon.net/blog/2020/06/05/mysql-mariadb-innodb-on-zfs/
===== 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 =====
https://forum.root.cz/index.php?topic=24742.0
https://sites.google.com/site/ryanbabchishin/home/publications/changing-a-zvol-block-size-while-making-it-sparse-and-compressed
===== 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 -