Permalänk
Medlem
Skrivet av ronnylov:

Antar att det är diskar med 4K-sektorer? Ska du "gnop'a" första disken för att anpassa till 4K-diskar så har jag för mig man måste göra det när man skapar en ny zpool. Tror inte det funkar om man bygger ut sin gamla pool. Hade jag byggt en ny pool så hade jag anpassat den för 4K-diskar.

Yes, ska skapa ny zpool. Min gamla raidz2 är på 6 diskar, den nya blir på 8 diskar. Så är illa tvungen

Visa signatur

WS: Asus P8Z77-I Deluxe mITX | Intel 3770K@4.6 | NH-U12P | Asus 780 GTX | Corsair 2x8GB 1600Mhz CL9 | Samsung 840 512GB | Ubuntu 16.04.3 x86_64 | Corsair AX750 | 2x Dell U2412M | Puppe.se | NAS: i7 860, 16GB DDR3, GA-P55M-UD4, FD Define R3, 8x2TB Samsung F4EG, Serveraid M1015, EVGA 750W G2 PSU, FreeBSD x64

Permalänk
Medlem
Skrivet av Schrimp:

Yes, ska skapa ny zpool. Min gamla raidz2 är på 6 diskar, den nya blir på 8 diskar. Så är illa tvungen

Nja, hade du haft stor låda och kontrollerkort med tillräckligt många anslutningar skulle du kunna lägga till en raidz2 av de 8 diskarna till din existerande pool så att poolen får två olika raidz2 i samma zpool (om dina gamla 6 diskar var i en raidz2). Men då kan man inte optimera för 4K-diskar om man inte redan hade gjort det från början.

Permalänk
Medlem
Skrivet av ronnylov:

Nja, hade du haft stor låda och kontrollerkort med tillräckligt många anslutningar skulle du kunna lägga till en raidz2 av de 8 diskarna till din existerande pool så att poolen får två olika raidz2 i samma zpool (om dina gamla 6 diskar var i en raidz2). Men då kan man inte optimera för 4K-diskar om man inte redan hade gjort det från början.

FD Define R3, bara plats för 8st 3.5", så nu är den maxad Kränger väl av dom mindre diskarna så småningom, när jag migrerat allt.
Har suttit en stund nu och glabel'at alla diskarna, så nu ska jag dra igång zpool'en.

Visa signatur

WS: Asus P8Z77-I Deluxe mITX | Intel 3770K@4.6 | NH-U12P | Asus 780 GTX | Corsair 2x8GB 1600Mhz CL9 | Samsung 840 512GB | Ubuntu 16.04.3 x86_64 | Corsair AX750 | 2x Dell U2412M | Puppe.se | NAS: i7 860, 16GB DDR3, GA-P55M-UD4, FD Define R3, 8x2TB Samsung F4EG, Serveraid M1015, EVGA 750W G2 PSU, FreeBSD x64

Permalänk
Medlem

Jag tänkte använda mig av dessa scripten; http://www.neces.com/blog/technology/integrating-freebsd-zfs-...

Men efter att ha klurat litegrann.. så kom jag fram till att dessa kommer ta snapshots på precis alla underkataloger (läs filsystem) under min pool. Om jag skulle vilja editera lite och ändra till t.ex "tank/docs" istället för bara "tank", så kommer inte scrub att fungera, då den kollar om en scrub körs på den poolen innan den tar snapshots. (Och man kan inte scruba ett filsystem (zvol?) utan endast pooler)

Kan jag komma runt det här? Jag har en zvol(?) som jag skulle vilja slippa snapshot'a.. annars är dessa scripten tokbra för mig.

Kort och gott, kan jag få detta att snapshot'a utvalda filsystem istället för en hel pool med alla dess underliggande filsystem?

EDIT:
Efter att ha granskat scripten lite längre; det går alldeles utmärkt. I varje script, hourly, daily, weekly, monthly, så ändrar man pool till valfria filsystem, separerade med mellanslag. T.ex. "tank/docs tank/blabla" osv..

Sedan fick jag, i mitt fall, nöja mig med att hårdkoda in "tank" istället för "$pool" överst i "zfs-snapshot" (den som omnämns som workhorse i länken), då körs även en koll om scrub körs, korrekt.

Den gamla kodsnutten såg ut såhär:

scrub_in_progress() { pool=$1 if zpool status $pool | grep "scrub in progress" > /dev/null; then return 0 else return 1 fi }

Kodsnutten blev såhär:

scrub_in_progress() { pool=$1 if zpool status tank | grep "scrub in progress" > /dev/null; then return 0 else return 1 fi }

Så, nu har jag två filsystem som snapshot'as och scrubs funkar bra. Tokfint!

Visa signatur

WS: Asus P8Z77-I Deluxe mITX | Intel 3770K@4.6 | NH-U12P | Asus 780 GTX | Corsair 2x8GB 1600Mhz CL9 | Samsung 840 512GB | Ubuntu 16.04.3 x86_64 | Corsair AX750 | 2x Dell U2412M | Puppe.se | NAS: i7 860, 16GB DDR3, GA-P55M-UD4, FD Define R3, 8x2TB Samsung F4EG, Serveraid M1015, EVGA 750W G2 PSU, FreeBSD x64

Permalänk
Medlem
Skrivet av ronnylov:

Nja, hade du haft stor låda och kontrollerkort med tillräckligt många anslutningar skulle du kunna lägga till en raidz2 av de 8 diskarna till din existerande pool så att poolen får två olika raidz2 i samma zpool (om dina gamla 6 diskar var i en raidz2). Men då kan man inte optimera för 4K-diskar om man inte redan hade gjort det från början.

Hej alla,

det här blir min första post här- jag läste först angående prestanda över SAMBA/NFS där jag verkar ha gjort allting rätt. Sen så såg jag det här uttalandet och var tvungen att registrera mig. Man kan nämligen "optimera" för 4k-diskar även efteråt väldigt lätt. Anta att du har en pool med 6 disk raidz2 ser ut så här:

pool: pool1 state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM pool1 ONLINE 0 0 0 raidz2-0 ONLINE 0 0 0 ada1 ONLINE 0 0 0 ada2 ONLINE 0 0 0 ada3 ONLINE 0 0 0 ada4 ONLINE 0 0 0 ada5 ONLINE 0 0 0 ada6 ONLINE 0 0 0

Om man kör zdb på den, ser det ut så här:

[root@main ~]# zdb pool1 Cached configuration: version: 28 name: 'pool1' state: 0 txg: 61133 pool_guid: 14552470060135351457 hostid: 416064828 hostname: 'main.local' vdev_children: 1 vdev_tree: type: 'root' id: 0 guid: 14552470060135351457 children[0]: type: 'raidz' id: 0 guid: 17973397078630951462 nparity: 2 metaslab_array: 30 metaslab_shift: 36 ashift: 9 asize: 8001599569920 is_log: 0 create_txg: 4 children[0]: type: 'disk' id: 0 guid: 16364327500934050621 path: '/dev/ada1' phys_path: '/dev/ada1' whole_disk: 1 DTL: 883 create_txg: 4 children[1]: type: 'disk' id: 1 guid: 10369477754760373505 path: '/dev/ada2' phys_path: '/dev/ada2' whole_disk: 1 DTL: 882 create_txg: 4 children[2]: type: 'disk' id: 2 guid: 4226438707690289390 path: '/dev/ada3' phys_path: '/dev/ada3' whole_disk: 1 DTL: 881 create_txg: 4 children[3]: type: 'disk' id: 3 guid: 6427312922042785305 path: '/dev/ada4' phys_path: '/dev/ada4' whole_disk: 1 DTL: 880 create_txg: 4 children[4]: type: 'disk' id: 4 guid: 7309946089772210616 path: '/dev/ada5' phys_path: '/dev/ada5' whole_disk: 1 DTL: 879 create_txg: 4 children[5]: type: 'disk' id: 5 guid: 9653730431203467366 path: '/dev/ada6' phys_path: '/dev/ada6' whole_disk: 1 DTL: 3949 create_txg: 4 children[6]: type: 'disk' id: 6 guid: 6415590009208375457 path: '/dev/ada7' phys_path: '/dev/ada7' whole_disk: 1 DTL: 877 create_txg: 4

Sen vill man utöka den poolen med ytterligare 6 diskar raidz2, men den här gången är de 4k-diskar. Då gör man:

# gnop create -S 4096 /dev/ada7 # zpool add pool1 raidz2 ada7.nop ada{8,9,10,11,12} # zpool export pool1 # gnop destroy /dev/ada7.nop # zpool import pool1

Och då ser det ut som så här:

pool: pool1 state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM pool1 ONLINE 0 0 0 raidz2-0 ONLINE 0 0 0 ada1 ONLINE 0 0 0 ada2 ONLINE 0 0 0 ada3 ONLINE 0 0 0 ada4 ONLINE 0 0 0 ada5 ONLINE 0 0 0 ada6 ONLINE 0 0 0 raidz2-1 ONLINE 0 0 0 ada7 ONLINE 0 0 0 ada8 ONLINE 0 0 0 ada9 ONLINE 0 0 0 ada10 ONLINE 0 0 0 ada11 ONLINE 0 0 0 ada12 ONLINE 0 0 0

Och zdb:

Cached configuration: version: 28 name: 'pool1' state: 0 txg: 61133 pool_guid: 14552470060135351457 hostid: 416064828 hostname: 'main.local' vdev_children: 1 vdev_tree: type: 'root' id: 0 guid: 14552470060135351457 children[0]: type: 'raidz' id: 0 guid: 17973397078630951462 nparity: 2 metaslab_array: 30 metaslab_shift: 36 ashift: 9 asize: 8001599569920 is_log: 0 create_txg: 4 children[0]: type: 'disk' id: 0 guid: 16364327500934050621 path: '/dev/ada1' phys_path: '/dev/ada1' whole_disk: 1 DTL: 883 create_txg: 4 children[1]: type: 'disk' id: 1 guid: 10369477754760373505 path: '/dev/ada2' phys_path: '/dev/ada2' whole_disk: 1 DTL: 882 create_txg: 4 children[2]: type: 'disk' id: 2 guid: 4226438707690289390 path: '/dev/ada3' phys_path: '/dev/ada3' whole_disk: 1 DTL: 881 create_txg: 4 children[3]: type: 'disk' id: 3 guid: 6427312922042785305 path: '/dev/ada4' phys_path: '/dev/ada4' whole_disk: 1 DTL: 880 create_txg: 4 children[4]: type: 'disk' id: 4 guid: 7309946089772210616 path: '/dev/ada5' phys_path: '/dev/ada5' whole_disk: 1 DTL: 879 create_txg: 4 children[5]: type: 'disk' id: 5 guid: 9653730431203467366 path: '/dev/ada6' phys_path: '/dev/ada6' whole_disk: 1 DTL: 3949 create_txg: 4 children[0]: type: 'raidz' id: 1 guid: 17973397078630951462 nparity: 2 metaslab_array: 30 metaslab_shift: 36 ashift: 12 asize: 8001599569920 is_log: 0 create_txg: 4 children[0]: type: 'disk' id: 0 guid: 16364327500934050621 path: '/dev/ada7' phys_path: '/dev/ada7' whole_disk: 1 DTL: 883 create_txg: 4 children[1]: type: 'disk' id: 1 guid: 10369477754760373505 path: '/dev/ada8' phys_path: '/dev/ada8' whole_disk: 1 DTL: 882 create_txg: 4 children[2]: type: 'disk' id: 2 guid: 4226438707690289390 path: '/dev/ada9' phys_path: '/dev/ada9' whole_disk: 1 DTL: 881 create_txg: 4 children[3]: type: 'disk' id: 3 guid: 6427312922042785305 path: '/dev/ada10' phys_path: '/dev/ada10' whole_disk: 1 DTL: 880 create_txg: 4 children[4]: type: 'disk' id: 4 guid: 7309946089772210616 path: '/dev/ada11' phys_path: '/dev/ada11' whole_disk: 1 DTL: 879 create_txg: 4 children[5]: type: 'disk' id: 5 guid: 9653730431203467366 path: '/dev/ada12' phys_path: '/dev/ada12' whole_disk: 1 DTL: 3949 create_txg: 4

Det man letar efter är värdet ashift som står som 9 på den första vdev:en, men står som 12 på den andra. Det är så att varje vdev kan ha egna egenskaper. Alltså kan man ha en grupp av vanliga diskar, och en annan grupp av 4k-diskar i samma pool, full prestanda. Däremot ska man låta bli att blanda vanliga diskar med 4k-diskar i samma vdev, då kommer prestandan att bli svårt lidande.

[root@main ~]# uname -a FreeBSD main.local 8.2-STABLE FreeBSD 8.2-STABLE #1: Tue Aug 2 11:04:08 CEST 2011 root@main.local:/usr/obj/usr/src/sys/KERNEL-20110706-1 amd64

/Sebulon

Permalänk
Medlem

Ja där ser man. Bra att du rättade mig då jag hade fattat fel.

Permalänk
Medlem

Jag gav mig på och testade CIFS nu igen, efter att ha haft mina utdelningar mountade via SSHFS. Där fick jag ungefär 25MB/s.. men tänkte kolla om CIFS kunde ge mig mer.

Döm om min förvåning när jag ser en Windows-burk gladeligen pumpa ungefär 95MB/s från NASen, och min Ubuntu-maskin lägger sig på, hör och häpna, 900KB/s..

Jag blir mäkta trött.. är det omöjligt att få bra hastigheter utan att använda NFS?

Skrivet av ronnylov:

Får jag be dig posta din /etc/sysctl.conf ?

Visa signatur

WS: Asus P8Z77-I Deluxe mITX | Intel 3770K@4.6 | NH-U12P | Asus 780 GTX | Corsair 2x8GB 1600Mhz CL9 | Samsung 840 512GB | Ubuntu 16.04.3 x86_64 | Corsair AX750 | 2x Dell U2412M | Puppe.se | NAS: i7 860, 16GB DDR3, GA-P55M-UD4, FD Define R3, 8x2TB Samsung F4EG, Serveraid M1015, EVGA 750W G2 PSU, FreeBSD x64

Permalänk
Medlem

Här är min nuvarande /etc/sysctl.conf

# $FreeBSD: src/etc/sysctl.conf,v 1.8.34.1.4.1 2010/06/14 02:09:06 kensmith Exp $ # # This file is read when going to multi-user and its contents piped thru # ``sysctl'' to adjust kernel values. ``man 5 sysctl.conf'' for details. # # Uncomment this to prevent users from seeing information about processes that # are being run under another UID. #security.bsd.see_other_uids=0 # Fix för jämn hög skrivhastighet via samba #vfs.zfs.txg.write_limit_override=671088640 vfs.zfs.txg.write_limit_override=1073741824 # Detta kan ge bättre läsprestanda #vfs.read_max=64 kern.maxvnodes=600000

Det var längesen jag var inne och pillade så jag minns inte exakt hur jag kom fram till dessa värden. Det ger bra fart mot Windows 7 (90 MB/s) men jag får väl ingen jättehög hastighet mot linuxklient. Varierar mellan 15 MB/s till 50 MB/s kanske. Har funderat på att köra NFS istället. Varför vill du inte köra med NFS?

Permalänk
Medlem
Skrivet av ronnylov:

Här är min nuvarande /etc/sysctl.conf

Kodstycke

Det var längesen jag var inne och pillade så jag minns inte exakt hur jag kom fram till dessa värden. Det ger bra fart mot Windows 7 (90 MB/s) men jag får väl ingen jättehög hastighet mot linuxklient. Varierar mellan 15 MB/s till 50 MB/s kanske. Har funderat på att köra NFS istället. Varför vill du inte köra med NFS?

Jag är väl bara slapp antar jag. NFS har ju nackdelen att alla UID/GID måste vara syncade mot servern, så det blev framskjutet. Jag provade dock att sparka igång NFS för min stationära här, och därav anledningen till att jag bad dig posta sysctl.conf.. jag fick 8MB/s .. !
Så nåt hade jag uppenbarligen pillat på som inte var så lyckat.
Min fil är långt större, så jag ska kommentera bort lite och se om det gör nytta.

Tack för infon!

EDIT:
Såhär ser min sysctl ut i skrivande stund.

# Uncomment this to prevent users from seeing information about processes that # are being run under another UID. #security.bsd.see_other_uids=0 # security.bsd.see_other_uids=0 security.bsd.see_other_gids=0 # kern.ipc.maxsockbuf=16777216 kern.ipc.nmbclusters=32768 kern.ipc.somaxconn=32768 kern.maxfiles=65536 kern.maxfilesperproc=32768 kern.maxvnodes=250000 kern.coredump=0 # net.inet.tcp.delayed_ack=0 net.inet.tcp.inflight.enable=1 net.inet.tcp.inflight.debug=0 net.inet.tcp.keepintvl=75000 net.inet.tcp.sendspace=65536 net.inet.tcp.recvspace=262144 net.inet.tcp.recvbuf_max=16777216 net.inet.tcp.recvbuf_inc=524288 net.inet.tcp.recvbuf_auto=1 net.inet.tcp.sendbuf_max=16777216 net.inet.tcp.sendbuf_inc=524288 net.inet.tcp.sendbuf_auto=1 net.inet.tcp.path_mtu_discovery=1 net.inet.tcp.mssdflt=1460 net.inet.udp.maxdgram=57344 net.inet.udp.recvspace=65536 net.local.stream.recvspace=65536 # vfs.zfs.txg.write_limit_override=524288000

Visa signatur

WS: Asus P8Z77-I Deluxe mITX | Intel 3770K@4.6 | NH-U12P | Asus 780 GTX | Corsair 2x8GB 1600Mhz CL9 | Samsung 840 512GB | Ubuntu 16.04.3 x86_64 | Corsair AX750 | 2x Dell U2412M | Puppe.se | NAS: i7 860, 16GB DDR3, GA-P55M-UD4, FD Define R3, 8x2TB Samsung F4EG, Serveraid M1015, EVGA 750W G2 PSU, FreeBSD x64

Permalänk
Medlem
Skrivet av Schrimp:

Jag tänkte använda mig av dessa scripten; http://www.neces.com/blog/technology/integrating-freebsd-zfs-...

Men efter att ha klurat litegrann.. så kom jag fram till att dessa kommer ta snapshots på precis alla underkataloger (läs filsystem) under min pool. Om jag skulle vilja editera lite och ändra till t.ex "tank/docs" istället för bara "tank", så kommer inte scrub att fungera, då den kollar om en scrub körs på den poolen innan den tar snapshots. (Och man kan inte scruba ett filsystem (zvol?) utan endast pooler)

Kan jag komma runt det här? Jag har en zvol(?) som jag skulle vilja slippa snapshot'a.. annars är dessa scripten tokbra för mig.

Kort och gott, kan jag få detta att snapshot'a utvalda filsystem istället för en hel pool med alla dess underliggande filsystem?

EDIT:
Efter att ha granskat scripten lite längre; det går alldeles utmärkt. I varje script, hourly, daily, weekly, monthly, så ändrar man pool till valfria filsystem, separerade med mellanslag. T.ex. "tank/docs tank/blabla" osv..

Sedan fick jag, i mitt fall, nöja mig med att hårdkoda in "tank" istället för "$pool" överst i "zfs-snapshot" (den som omnämns som workhorse i länken), då körs även en koll om scrub körs, korrekt.

Den gamla kodsnutten såg ut såhär:

scrub_in_progress() { pool=$1 if zpool status $pool | grep "scrub in progress" > /dev/null; then return 0 else return 1 fi }

Kodsnutten blev såhär:

scrub_in_progress() { pool=$1 if zpool status tank | grep "scrub in progress" > /dev/null; then return 0 else return 1 fi }

Så, nu har jag två filsystem som snapshot'as och scrubs funkar bra. Tokfint!

Jag kan tipsa om sysutils/zfs-snapshot-mgmt i ports. Jag prövade att få ovanstående script att funka men det blev som ett steg fram och två steg tillbaka. Med zfs-snapshot-mgmt har jag fem timmes-snaps, sju stycken dags-snaps och fyra stycken vecko-snaps. Så allt mitt data är uppbackat i en månad, grovt sett.

/usr/local/etc/zfs-snapshot-mgmt.conf:

# Automatic ZFS snapshot management configuration file # # This is a YAML file (see http://www.yaml.org) # Use exactly 2 spaces for each indentation level # snapshot_prefix: auto- filesystems: pool1/root: # Create snapshots recursively for all filesystems mounted under this one recursive: true # Create snapshots every 60 minutes, starting at midnight creation_rule: at_multiple: 60 offset: 0 preservation_rules: - { for_minutes: 300, at_multiple: 60, offset: 0 } - { for_minutes: 10080, at_multiple: 1440, offset: 0 } - { for_minutes: 40320, at_multiple: 10080, offset: 0 }

/etc/crontab:

# /etc/crontab - root's crontab for FreeBSD # # $FreeBSD: src/etc/crontab,v 1.33.2.1.4.1 2010/06/14 02:09:06 kensmith Exp $ # SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin # #minute hour mday month wday who command # */5 * * * * root /usr/libexec/atrun # # Save some entropy so that /dev/random can re-seed on boot. */11 * * * * operator /usr/libexec/save-entropy # # Rotate log files every hour, if necessary. 0 * * * * root newsyslog # # Perform daily/weekly/monthly maintenance. 1 3 * * * root periodic daily 15 4 * * 6 root periodic weekly 30 5 1 * * root periodic monthly # # Adjust the time zone if the CMOS clock keeps local time, as opposed to # UTC time. See adjkerntz(8) for details. 1,31 0-5 * * * root adjkerntz -a # # Beginning of local jobs... */5 * * * * root /usr/local/bin/zfs-snapshot-mgmt

Ifall att någon blir sugen att pröva.

/Sebulon

Permalänk
Medlem
Skrivet av sebulon:

Jag har inte testat det från ports, men jag har inte ändrat nåt annat än det lilla jag skrev om, och jag har dagliga snapshots, vilka raderas efter hand som nya tas, och sen sparas varje vecka, tills det finns 4st, då månads-snapshots går in, och sparas i 6mån.

Tack för infon dock, det är väl baserat på det scriptet jag pratade om, så det ska inte vara så stor skillnad tror jag
Men för egen del bråkar jag inte med nåt annat, detta fungerar alldeles perfekt för mig!

Visa signatur

WS: Asus P8Z77-I Deluxe mITX | Intel 3770K@4.6 | NH-U12P | Asus 780 GTX | Corsair 2x8GB 1600Mhz CL9 | Samsung 840 512GB | Ubuntu 16.04.3 x86_64 | Corsair AX750 | 2x Dell U2412M | Puppe.se | NAS: i7 860, 16GB DDR3, GA-P55M-UD4, FD Define R3, 8x2TB Samsung F4EG, Serveraid M1015, EVGA 750W G2 PSU, FreeBSD x64

Permalänk
Medlem

Alltså, jag blev lite skraj för det där scriptet, för jag har två pooler och om en av dem skrubbade så tyckte scriptet att den inte kunde ta snapshots på den andra poolen heller. Jag plockade då isär scriptet och testade funktionen, fick det att göra som det skulle; jag skrev en ny skrubbtest-funktion som jag sen förde tillbaka in i scriptet men det funkade ändå inte, så jag kunde helt enkelt inte lite på det. zfs-snapshot-mgmt vet jag iaf att det funkar.

Citat:

Tack för infon dock, det är väl baserat på det scriptet jag pratade om, så det ska inte vara så stor skillnad tror jag

Vad är "baserat"? Menar du inkrementet- timmar, dagar, veckor, så är det samma som jag haft i något år ungefär.

/Sebulon

Permalänk
Medlem
Skrivet av sebulon:

Alltså, jag blev lite skraj för det där scriptet, för jag har två pooler och om en av dem skrubbade så tyckte scriptet att den inte kunde ta snapshots på den andra poolen heller. Jag plockade då isär scriptet och testade funktionen, fick det att göra som det skulle; jag skrev en ny skrubbtest-funktion som jag sen förde tillbaka in i scriptet men det funkade ändå inte, så jag kunde helt enkelt inte lite på det. zfs-snapshot-mgmt vet jag iaf att det funkar.

Vad är "baserat"? Menar du inkrementet- timmar, dagar, veckor, så är det samma som jag haft i något år ungefär.

/Sebulon

zfs-snapshot-mgmt är baserat på dessa scripten, enligt författaren själv, mer än så vet jag inte.. det är alltså inget nytt script, bara nytt för mig

EDIT:
Förvisso är det inget nytt script (april -09), men jag hade lite fel, det är zfs-periodic som är baserat på scripten, inte zfs-snapshot-mgmt.

Visa signatur

WS: Asus P8Z77-I Deluxe mITX | Intel 3770K@4.6 | NH-U12P | Asus 780 GTX | Corsair 2x8GB 1600Mhz CL9 | Samsung 840 512GB | Ubuntu 16.04.3 x86_64 | Corsair AX750 | 2x Dell U2412M | Puppe.se | NAS: i7 860, 16GB DDR3, GA-P55M-UD4, FD Define R3, 8x2TB Samsung F4EG, Serveraid M1015, EVGA 750W G2 PSU, FreeBSD x64

Permalänk

Hejsan jag har en fråga, om man arbetar direkt med filerna via smb/nfs läggs inte filerna i ramminnet på filserver?, om det är så , finns det inte risk för korruption under tiden som dom ligger där om man inte har ecc minnen ?

Permalänk
Hedersmedlem
Skrivet av Mysticsam:

Hejsan jag har en fråga, om man arbetar direkt med filerna via smb/nfs läggs inte filerna i ramminnet på filserver?, om det är så , finns det inte risk för korruption under tiden som dom ligger där om man inte har ecc minnen ?

Filerna passerar alltid ramminnet hur du än accessar dem, så den risken finns oavsett om du arbetar med smb, nfs eller lokala filer. Men ja, det är därför i princip alla zfs-setup-guider rekommenderar ECC-minnen.

AMD-moderkort stöder i regel ECC och minnena kostar numer inte mer än vanliga, så det finns eg. ingen anledning att inte välja ECC till en ny filserver.

Visa signatur

Det kan aldrig bli fel med mekanisk destruktion

Permalänk

Jag försöker få ihop en liten låda till backup server ,, och det verkar som den inte stödjer ecc,, så hur stor är risken för att korruption kan uppstå och hur kan man minska den risken, jag vet att zfs som standard flashar till disk var 30 sekund ,, skulle risken minska om man sänkte den gränsen så att den flashar oftare till disk tillexempel?

Permalänk
Hedersmedlem
Skrivet av Mysticsam:

Jag försöker få ihop en liten låda till backup server ,, och det verkar som den inte stödjer ecc,, så hur stor är risken för att korruption kan uppstå och hur kan man minska den risken, jag vet att zfs som standard flashar till disk var 30 sekund ,, skulle risken minska om man sänkte den gränsen så att den flashar oftare till disk tillexempel?

Tror inte det hjälper, du kommer alltid ha nån del av filsystemet i minnet vid varje given tidpunkt.

Citat:

A system on Earth, at sea level, with 4 GB of RAM has a 96% percent chance of having a bit error in three days without ECC RAM. With ECC RAM, that goes down to 1.67e-10 or about one chance in six billions.

http://lambda-diode.com/opinion/ecc-memory

Visa signatur

Det kan aldrig bli fel med mekanisk destruktion

Permalänk

Nu blev jag rädd,, :S

Permalänk
Avstängd
Skrivet av Mysticsam:

Jag försöker få ihop en liten låda till backup server ,, och det verkar som den inte stödjer ecc,, så hur stor är risken för att korruption kan uppstå och hur kan man minska den risken, jag vet att zfs som standard flashar till disk var 30 sekund ,, skulle risken minska om man sänkte den gränsen så att den flashar oftare till disk tillexempel?

ZFS på Solaris flushar till disk var 30 sekund, ELLER om minnet är fyllt till 7/8. Då flushas allt till RAM. Men detta är inget problem egentligen. ZFS lagrar ju allt COW, dvs alla lagringar skrivs alltid på ett nytt ställe på disken - inget skrivs över. Allt gammalt finns kvar.

Antag att strömmen bryts mitt i en skrivning och zpoolen blir korrupt och du kan inte läsa zpoolen - då kan du alltid backa tillbaka till 30 sekunder tidigare då zpoolen faktiskt var i ett fungerande läge och man kunde läsa zpoolen. Så det värsta som kan hända, är att du förlorar de senaste 30 sekunderna av data. Men zpoolen kommer aldrig att korruptas om du drar strömmen mitt i. Men om du har lite RAM, så kommer RAM disken flusha när det är fyllt till 87.5% (dvs 7/8). Har du 1GB RAM, så flushar den till disk ofta. Nackdelen med att flusha ofta till disk, är att disken blir fragmenterad. Om du har mycket RAM, och kan cacha upp 10GB ändringar, så skrivs 10GB i ett svep och du slipper fragmentering. Men om du har 1GB så cachas 200MB (pga FreeBSD tar 800MB) så ökar fragmenteringen. ZFS har ingen defragmenterare.

En del Btrfs användare rapporterar att när de förlorat strömmen mitt i så har allting korruptat och de inte kan läsa sin btrfs raid längre.

Men återigen, allt det ovanstående gäller SOLARIS. Jag vet inte hur FreeBSD flushar till disk. Flusha till disk är ju inget som ZFS bestämmer, utan det är ju bestämt i OSet.

Permalänk

Ja nu har lådan som jag tittar på 2GB ram.

Det som du inte skriver Saddam som jag är orolig över,
är att den data som är i ramet kan blir korrupt och efter 30 sek eller 7/8 skrivas till poolen utan att zfs kommer att reagera, av den enkla anledningen att zfs inte gör någon kontroll av datat som skall skrivas till disk ,
vilket inte är konstigt egentligen.

Hur skall zfs kunna veta om dom ändringarna som är gjort är korrekta ändringar eller korruption, det ända sättet att skydda sig ifrån detta är antingen ecc minnen eller ha filsystemen i read-only så att ändringar inte skall skrivas till filsystemet.

Permalänk
Avstängd

ZFS har ingen aning om datat är korrekt eller inte. Du skickar ett gäng 1 och 0 till ZFS att lagra ned. Hur kan ZFS veta om en 1 är fel? Tänk om det är en mp3, och då är det korrekt bitsträng. Om det är en rar fil så kanske det inte ska vara en 1just där, utan det ska vara en 0:a. ZFS har ju ingen aning om det är mp3 eller rar eller exe fil eller whatever. Varje filändelse har ju regler vilka bitar som är korrekta. T.ex. MP3 säger att bit nr 1023 måste alltid vara 1. Men om det är rar, så kan biten vara vad som helst. ZFS har ingen aning.

Om man skickar en bitsträng ned till ZFS att spara ned, och dessutom talar om för ZFS att så här ska bitsträngen vara - så kan ZFS jämföra och se. Men... du ser att det är helt hopplöst. Tänk om även facit är fel? Mao, det är alltså inte ZFS ensak att kontrollera att datat som ska skrivas ned är korrekt. ZFS litar på att datat som ska skrivas ned är korrekt.

Om ZFS visste att bitsträngen som ska sparas ned är en gcc output och gcc output ser alltid ut som följer: "...." då kan ZFS kontrollera. Men då skulle ZFS bli bloatat: man måste tala om hur gcc output ser ut, rar output ser ut, exe filer, etc. Det finns inget filsystem som vet hur alla bitsträngar ska se ut. Binär rådata kan ju se ut hur som helst, hur ska ZFS veta om det är binär rådata eller en rar fil som har strikta regler hur det ska se ut? Det finns inget filsystem som gör det du efterfrågar.

Mao, det är ECC RAMs ensak att fixa detta. Om du är orolig för att du inte har ECC RAM - så förstår jag dig. I alla seriösa servrar har man ju ECC. Och det utav en anledning. Jag själv är lite orolig över att jag inte kör ECC. Men Intel Xeon är lite dyrt. Hittills har jag kört utan ECC och klarat mig. ZFS har aldrig klagat nån gång. Ta i trä.

Men som sagt, din oro har inget med ZFS att göra. Du får börja titta på ECC RAM om du vill slippa oron.

Permalänk
Medlem

Hmmm, finns det någon felkorrigering på nätverkstrafiken till och från filservern då? Nu blir man ju lite orolig att mina filer kan ha blivit korrupta i nätverkskablarna... Var någonstans ska man sätta gränsen egentligen? Allt som går till min filserver går via någon av mina workstations och dessa kör med andra filsystem än ZFS och saknar dessutom ECC-minne. Egentligen kanske man borde köra FreeBSD (eller annat OS som stödjer ZFS) på alla sina datorer och ha ECC-minnen i allihopa.

Ett tag så räknade jag ut checksummor på mina filer jag skulle arkivera (använde t.ex. QuickPar). Det kan ju hjälpa litegrann, och t.ex. överfdöringsfel skulle man kunna korrigera med dessa filer. Det är ju också det de används oftast till, t.ex. när man laddat ner något från binära nyhetsgrupper så kan man återställa delar som saknas med hjälp av PAR2-filer. Men det är jobbigt om man ska vara paranoid hela tiden...

Men det är klart, man kan ju vara extra försiktig med just filservern som lagrar allting som hjärtat i nätverket så ECC-RAM är inte del ändå.

Permalänk
Hedersmedlem
Skrivet av ronnylov:

Hmmm, finns det någon felkorrigering på nätverkstrafiken till och från filservern då?

Både ethernet och TCP använder checksummor för att verifiera paket.

Skrivet av saddam:

Men Intel Xeon är lite dyrt.

AMD är som sagt ett mycket billigare alternativ om man vill leka ECC.

Citat:

Hittills har jag kört utan ECC och klarat mig. ZFS har aldrig klagat nån gång. Ta i trä.

ZFS kommer heller aldrig klaga över korruption som händer i minnet.. du beskrev själv varför.

Visa signatur

Det kan aldrig bli fel med mekanisk destruktion

Permalänk

Det jag skrev var ingen kritik mot dig Saddam överhuvudtaget! Jag ville bara påtala fakta till alla andra som läser i denna tråd.

Men det är inte bara när du skriver ner ny data till filsystemet som zfs inte kan skydda, utan när du arbetar med data.

Säg att du skall redigera en bild som ligger på en zfs filsystem, så du öppnar bilden i ett program vilket gör att bilden kopieras från filsystemet till ramminnet. Du redigerar bilden efter ditt behag en under tiden du gör det så kommer en kosmisk strålning igenom ditt ramminne och gör att bilden du arbetar med får en pixel som blir svart , detta märker inte du och du sparar ändringarna du har gjort till bilden och efter 30 sek eller 7/8 är fyllt av ramminnet så skickas ändringarna till filsystemmet och zfs bara tackar och tar emot.

Jag skriver detta för jag tycker det är viktigt att man får reda på att zfs inte skyddar mot allt ,, zfs skyddar mot det som den skall skydda emot men om man inte vet vad det är så kan man lätt tro att zfs skyddar emot allt.

Jag vill också skriva att jag inte är negativ mot zfs, zfs är det bästa filsystem som jag känner till men jag tycker att det är viktigt att hålla en objektiv syn på zfs och berätta både för och nackdelar med zfs.
Nu är det är med ecc inte en nackdel mot zfs utan detta gäller väl egentligen alla filsystem. Men det blir känner jag mer påtagligt när man tittar på zfs.

Nu när jag skriver detta så testar jag mina raminnen på min stationära låda och har upptäckt att det är minst 100st errors i alla fyra modulerna , jag testade minnena med memtest86+ v 4.20

Permalänk
Avstängd

Mysticsam, helt rätt. ZFS kan bara garanterar att all data den fick, är korrekt nedskrivet. Om datat är fel från början, så vet inte ZFS det. Om du är orolig för hela kedjan, dvs från RAM ned till disk, så bör du köra ECC RAM. Jag själv är lite orolig för det och vill ha ECC RAM själv. Men jag kör ju intel, så jag vet inte riktigt hur jag ska göra. Kanske vore AMD bulldozer med ECC det bästa. Hmmm...

Permalänk

Jag tänkte på det du skrev:

Citat:

Jag själv är lite orolig över att jag inte kör ECC. Men Intel Xeon är lite dyrt. Hittills har jag kört utan ECC och klarat mig. ZFS har aldrig klagat nån gång. Ta i trä.

Du kan ju inte vara säker på att din data är intakt. Av den anledningen att om du har arbetat med din data någon gång efter du har skrivit ner den så kan din data ha blivit korrupt utan att zfs kan upptäcka det.

Jag skall leta fram den forskningrapporten om zfs där fenomenet beskrivs på ett väldigt bra sätt. Dock har rapporten något år på nacken men den borde ändå vara ganska gångbar:

http://www.cs.wisc.edu/wind/Publications/zfs-corruption-fast1...

På sida 5-6 så förklarar dom hur dom sätter in data i ramminnet ändrar datat och sedan låter zfs spara ner det ändrade datat till disk utan att zfs reagerar.

Hela rapporten är väldigt intressant att läsa faktiskt och förklarar det som jag redan har skrivit här att zfs gör det den är designad till att göra.

Om det är någon som vet var man kan få tag i senare rapporter så skriv gärna ner länken så att man kan läsa dessa

Permalänk
Avstängd
Skrivet av Mysticsam:

Du kan ju inte vara säker på att din data är intakt. Av den anledningen att om du har arbetat med din data någon gång efter du har skrivit ner den så kan din data ha blivit korrupt utan att zfs kan upptäcka det.

Helt korrekt. Efter att datat skrivs ned så kan datat korruptas. Men, ZFS har något som heter "scrub" vilket innebär att ZFS går igenom varje bit och kontrollerar att allt är korrekt - om det inte är korrekt så korrigeras felen automatiskt och du får en rapport om det. scrub rekommenderas att köra 1 gång i månaden om du har Enterprise Server diskar och 1 gång i veckan om du har vanliga diskar. Men eftersom du kan köra scrub medan du använder filsystemet så är det ingen big deal att göra.

När ett vanligt filsystem fsck så sker inte detta, dvs själva datat kontrolleras inte. Metadatat och journalen kontrolleras endast. Men själva datat kan vara korrupt efter fsck. Dessutom, fsck kräver att du avmonterar filsystemet och tar det off-line. Under tiden fsck kontrollen sker, så kan man inte använda filsystemet.

Skrivet av Mysticsam:

På sida 5-6 så förklarar dom hur dom sätter in data i ramminnet ändrar datat och sedan låter zfs spara ner det ändrade datat till disk utan att zfs reagerar.

Hela rapporten är väldigt intressant att läsa faktiskt och förklarar det som jag redan har skrivit här att zfs gör det den är designad till att göra.

Jag förstår inte varför du verkar se detta som en brist i ZFS? Om datat i RAM har ändrats - så är det RAMs sak att detektera och korrigera det. ZFS har ingen aning om vad CPUn eller RAM sysslar med och kan inte på något magiskt sätt veta det.

Antag att cpun räknar ut 25 + 34, men det råkar bli en strömspik så cpun räknar ut 25 + 24 istället. Hur ska då ZFS veta vad cpun egentligen skulle räkna ut? Det är cpuns sak att fixa sina fel och brister, så fixar ZFS sina fel och brister.

Det är ungefär som en lärare delar ut ett matteprov, men det har slunkit in ett fel. Istället för "24" så ska det stå "15". Vid rättningen säger läraren "ja, jag menade förstås 15, och ingen av er visste vad jag tänkte på. Så ni får underkänt". Hur i hela friden ska eleverna veta vad läraren tänkte på? Det är lärarens sak att ge eleverna rätt input så kommer eleverna göra det som de tränats till. Eleverna kan inte läsa tankarna eller veta vad läraren egentligen menade.

Det finns inget filsystem som korrigerar fel i RAM. Det är RAMs sak att göra. Och det sker lämpligtvis med ECC RAM eller nåt liknande. Det finns inte heller något filsystem som korrigerar en felaktig CPU. Hur skulle det gå till? För att korrigera felaktiga beräkningar, så måste man använda en annan cpu, för att kunna jämföra beräkningarna. Använder du samma cpu så blir det ju samma fel.

Om du hittar ett filsystem som korrigerar fel i RAM, och i CPUn och i grafikkortet och i tangentbordet även läser mina tankar, så säg till. Då byter jag filsystem ögonaböj.

Permalänk

Som jag har skrivit innan jag ser inte ner på ZFS (jag tror det är tredje gången jag skriver det) jag tar bara upp fakta om situationer som man skall tänka på. Varför jag tar upp detta är för att folk inte skall tro att det är zfs sak att åtgärda dessa saker utan att det ligger utanför zfs kontroll. Och så är det tänkt att vara också.

Som du skriver det finns inget filsystem som kan fixa fel bättre än zfs.

Som jag skrev innan så tycker jag att det är viktigt att uppmärksamma för jag är rädd att det är många som stirrar sig blind på hur bra zfs är och i ochmed det och tror att zfs skyddar din data i dessa situationer med vilket det inte gör och inte heller är designad att göra.

Permalänk

Jag kom och tänka på en sak angående ecc minnen,

Jag har under en tid kollat på olika lådor från hp och andra märken, och i specifikationerna har det stått att ecc ram kan åtgärda en-bits fel och upptäcka två-bits fel,(http://www.supermicro.com/products/system/4U/7046/SYS-7046A-T...)
Så gick jag in på wikipedia och kom in på denna sida (http://en.wikipedia.org/wiki/Cyclic_redundancy_check) där är det ett stycke som pratar om att kunna upptäcka dubbel och trippel-bits fel.

Är det någon som har detaljer på detta?

För jag trodde att det bara fanns enkel och dubbel-bits fel?

Permalänk
Medlem
Skrivet av Mysticsam:

Jag kom och tänka på en sak angående ecc minnen,

Jag har under en tid kollat på olika lådor från hp och andra märken, och i specifikationerna har det stått att ecc ram kan åtgärda en-bits fel och upptäcka två-bits fel,(http://www.supermicro.com/products/system/4U/7046/SYS-7046A-T...)
Så gick jag in på wikipedia och kom in på denna sida (http://en.wikipedia.org/wiki/Cyclic_redundancy_check) där är det ett stycke som pratar om att kunna upptäcka dubbel och trippel-bits fel.

Är det någon som har detaljer på detta?

För jag trodde att det bara fanns enkel och dubbel-bits fel?

Du kan ha godtyckligt antal bitar fel egentligen. Alla bitar i en ström kan ju flippas.. det finns ingen lag som säger att endast en eller två bitar flippas, jag tror t.om att det finns tekniker som justerar tvåbits-fel, men fler bitar än två gör det väldigt mycket mer krävande att korrigera än att bara rapportera.

Visa signatur

WS: Asus P8Z77-I Deluxe mITX | Intel 3770K@4.6 | NH-U12P | Asus 780 GTX | Corsair 2x8GB 1600Mhz CL9 | Samsung 840 512GB | Ubuntu 16.04.3 x86_64 | Corsair AX750 | 2x Dell U2412M | Puppe.se | NAS: i7 860, 16GB DDR3, GA-P55M-UD4, FD Define R3, 8x2TB Samsung F4EG, Serveraid M1015, EVGA 750W G2 PSU, FreeBSD x64