From owner-freebsd-fs@freebsd.org Thu Aug 18 08:02:55 2016 Return-Path: Delivered-To: freebsd-fs@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7529DBBEE45 for ; Thu, 18 Aug 2016 08:02:55 +0000 (UTC) (envelope-from juergen.gotteswinter@internetx.com) Received: from mx1.internetx.com (mx1.internetx.com [62.116.129.39]) by mx1.freebsd.org (Postfix) with ESMTP id 8328D11BB for ; Thu, 18 Aug 2016 08:02:54 +0000 (UTC) (envelope-from juergen.gotteswinter@internetx.com) Received: from localhost (localhost [127.0.0.1]) by mx1.internetx.com (Postfix) with ESMTP id 5815E45FC0FB; Thu, 18 Aug 2016 10:02:52 +0200 (CEST) X-Virus-Scanned: InterNetX GmbH amavisd-new at ix-mailer.internetx.de Received: from mx1.internetx.com ([62.116.129.39]) by localhost (ix-mailer.internetx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MT7WSVCplP01; Thu, 18 Aug 2016 10:02:47 +0200 (CEST) Received: from [192.168.100.26] (pizza.internetx.de [62.116.129.3]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by mx1.internetx.com (Postfix) with ESMTPSA id 8736B4C4C698; Thu, 18 Aug 2016 10:02:47 +0200 (CEST) Reply-To: juergen.gotteswinter@internetx.com Subject: Re: HAST + ZFS + NFS + CARP References: <61283600-A41A-4A8A-92F9-7FAFF54DD175@ixsystems.com> <20160704183643.GI41276@mordor.lan> <20160704193131.GJ41276@mordor.lan> <20160811091016.GI70364@mordor.lan> <1AA52221-9B04-4CF6-97A3-D2C2B330B7F9@sarenet.es> <472bc879-977f-8c4c-c91a-84cc61efcd86@internetx.com> <20160817085413.GE22506@mordor.lan> <465bdec5-45b7-8a1d-d580-329ab6d4881b@internetx.com> <20160817095222.GG22506@mordor.lan> <52d5b687-1351-9ec5-7b67-bfa0be1c8415@kateley.com> <92F4BE3D-E4C1-4E5C-B631-D8F124988A83@gmail.com> <6b866b6e-1ab3-bcc5-151b-653e401742bd@kateley.com> <7468cc18-85e8-3765-2b2b-a93ef73ca05a@internetx.com> <409301a7-ce03-aaa3-c4dc-fa9f9ba66e01@internetx.com> To: Ben RUBSON , FreeBSD FS From: InterNetX - Juergen Gotteswinter Organization: InterNetX GmbH Message-ID: <69234c7d-cda9-2d56-b5e0-bb5e3961cc19@internetx.com> Date: Thu, 18 Aug 2016 10:02:45 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Aug 2016 08:02:55 -0000 new day, new things learned :) thanks! but like said, zrep does its on locking in zfs properties. so even this is fine while true; do zrep sync all; done see http://www.bolthole.com/solaris/zrep/ the properties look like this tank/vmail redundant_metadata all default tank/vmail zrep:savecount 5 local tank/vmail zrep:lock-time 20160620101703 local tank/vmail zrep:master yes local tank/vmail zrep:src-fs tank/vmail local tank/vmail zrep:dest-host stor1 local tank/vmail zrep:src-host stor2 local tank/vmail zrep:dest-fs tank/vmail local tank/vmail zrep:lock-pid 10887 local it also takes care of the replication partner, the replicated datasets are read only until you tell zrep "go go go, become master" Simple usage summary: zrep (init|-i) ZFS/fs remotehost remoteZFSpool/fs zrep (sync|-S) [-q seconds] ZFS/fs zrep (sync|-S) [-q seconds] all zrep (sync|-S) ZFS/fs@snapshot -- temporary retroactive sync zrep (status|-s) [-v] [(-a|ZFS/fs)] zrep refresh ZFS/fs -- pull version of sync zrep (list|-l) [-Lv] zrep (expire|-e) [-L] (ZFS/fs ...)|(all)|() zrep (changeconfig|-C) [-f] ZFS/fs remotehost remoteZFSpool/fs zrep (changeconfig|-C) [-f] [-d] ZFS/fs srchost srcZFSpool/fs zrep failover [-L] ZFS/fs zrep takeover [-L] ZFS/fs zrep failover pool/ds -> master sets pool read only, connects to slave, sets pool on slave rw should be easy to combine with carp/devd, but this is the land of vodoo automagic again which i dont trust that much. Am 18.08.2016 um 09:40 schrieb Ben RUBSON: > Yep this is better : > > if mkdir > then > do_your_job > rm -rf > fi > > > >> On 18 Aug 2016, at 09:38, InterNetX - Juergen Gotteswinter wrote: >> >> uhm, dont really investigated if it is or not. add a "sync" after that? >> or replace it? >> >> but anyway, thanks for the hint. will dig into this! >> >> Am 18.08.2016 um 09:36 schrieb krad: >>> I didnt think touch was atomic, mkdir is though >>> >>> On 18 August 2016 at 08:32, InterNetX - Juergen Gotteswinter >>> >> > wrote: >>> >>> >>> >>> Am 17.08.2016 um 20:03 schrieb Linda Kateley: >>>> I just do consulting so I don't always get to see the end of the >>>> project. Although we are starting to do more ongoing support so we can >>>> see the progress.. >>>> >>>> I have worked with some of the guys from high-availability.com for maybe >>>> 20 years. RSF-1 is the cluster that is bundled with nexenta. Does work >>>> beautifully with omni/illumos. The one customer I have running it in >>>> prod is an isp in south america running openstack and zfs on freebsd as >>>> iscsi. Big boxes, 90+ drives per frame. If someone would like try it, i >>>> have some contacts there. Ping me offlist. >>> >>> no offense, but it sounds a bit like marketing. >>> >>> here: running nexenta ha setup since several years with one catastrophic >>> failure due to split brain >>> >>>> >>>> You do risk losing data if you batch zfs send. It is very hard to run >>>> that real time. >>> >>> depends on how much data changes aka delta size >>> >>> >>> You have to take the snap then send the snap. Most >>>> people run in cron, even if it's not in cron, you would want one to >>>> finish before you started the next. >>> >>> thats the reason why lock files where invented, tools like zrep handle >>> that themself via additional zfs properties >>> >>> or, if one does not trust a single layer >>> >>> -- snip -- >>> #!/bin/sh >>> if [ ! -f /var/run/replic ] ; then >>> touch /var/run/replic >>> /blah/path/zrep sync all >> /var/log/zfsrepli.log >>> rm -f /var/run/replic >>> fi >>> -- snip -- >>> >>> something like this, simple >>> >>> If you lose the sending host before >>>> the receive is complete you won't have a full copy. >>> >>> if rsf fails, and you end up in split brain you loose way more. been >>> there, seen that. >>> >>> With zfs though you >>>> will probably still have the data on the sending host, however long it >>>> takes to bring it back up. RSF-1 runs in the zfs stack and send the >>>> writes to the second system. It's kind of pricey, but actually much less >>>> expensive than commercial alternatives. >>>> >>>> Anytime you run anything sync it adds latency but makes things safer.. >>> >>> not surprising, it all depends on the usecase >>> >>>> There is also a cool tool I like, called zerto for vmware that sits in >>>> the hypervisor and sends a sync copy of a write locally and then an >>>> async remotely. It's pretty cool. Although I haven't run it myself, have >>>> a bunch of customers running it. I believe it works with proxmox too. >>>> >>>> Most people I run into (these days) don't mind losing 5 or even 30 >>>> minutes of data. Small shops. >>> >>> you talk about minutes, what delta size are we talking here about? why >>> not using zrep in a loop for example >>> >>> They usually have a copy somewhere else. >>>> Or the cost of 5-30 minutes isn't that great. I used work as a >>>> datacenter architect for sun/oracle with only fortune 500. There losing >>>> 1 sec could put large companies out of business. I worked with banks and >>>> exchanges. >>> >>> again, usecase. i bet 99% on this list are not operating fortune 500 >>> bank filers >>> >>> They couldn't ever lose a single transaction. Most people >>>> nowadays do the replication/availability in the application though and >>>> don't care about underlying hardware, especially disk. >>>> >>>> >>>> On 8/17/16 11:55 AM, Chris Watson wrote: >>>>> Of course, if you are willing to accept some amount of data loss that >>>>> opens up a lot more options. :) >>>>> >>>>> Some may find that acceptable though. Like turning off fsync with >>>>> PostgreSQL to get much higher throughput. As little no as you are >>> made >>>>> *very* aware of the risks. >>>>> >>>>> It's good to have input in this thread from one with more experience >>>>> with RSF-1 than the rest of us. You confirm what others have that >>> said >>>>> about RSF-1, that it's stable and works well. What were you deploying >>>>> it on? >>>>> >>>>> Chris >>>>> >>>>> Sent from my iPhone 5 >>>>> >>>>> On Aug 17, 2016, at 11:18 AM, Linda Kateley >> >>>>> >> wrote: >>>>> >>>>>> The question I always ask, as an architect, is "can you lose 1 >>> minute >>>>>> worth of data?" If you can, then batched replication is perfect. If >>>>>> you can't.. then HA. Every place I have positioned it, rsf-1 has >>>>>> worked extremely well. If i remember right, it works at the dmu. I >>>>>> would suggest try it. They have been trying to have a full freebsd >>>>>> solution, I have several customers running it well. >>>>>> >>>>>> linda >>>>>> >>>>>> >>>>>> On 8/17/16 4:52 AM, Julien Cigar wrote: >>>>>>> On Wed, Aug 17, 2016 at 11:05:46AM +0200, InterNetX - Juergen >>>>>>> Gotteswinter wrote: >>>>>>>> >>>>>>>> Am 17.08.2016 um 10:54 schrieb Julien Cigar: >>>>>>>>> On Wed, Aug 17, 2016 at 09:25:30AM +0200, InterNetX - Juergen >>>>>>>>> Gotteswinter wrote: >>>>>>>>>> >>>>>>>>>> Am 11.08.2016 um 11:24 schrieb Borja Marcos: >>>>>>>>>>>> On 11 Aug 2016, at 11:10, Julien Cigar >>>>>>>>>>> >> >> wrote: >>>>>>>>>>>> >>>>>>>>>>>> As I said in a previous post I tested the zfs send/receive >>>>>>>>>>>> approach (with >>>>>>>>>>>> zrep) and it works (more or less) perfectly.. so I concur in >>>>>>>>>>>> all what you >>>>>>>>>>>> said, especially about off-site replicate and synchronous >>>>>>>>>>>> replication. >>>>>>>>>>>> >>>>>>>>>>>> Out of curiosity I'm also testing a ZFS + iSCSI + CARP at the >>>>>>>>>>>> moment, >>>>>>>>>>>> I'm in the early tests, haven't done any heavy writes yet, but >>>>>>>>>>>> ATM it >>>>>>>>>>>> works as expected, I havent' managed to corrupt the zpool. >>>>>>>>>>> I must be too old school, but I don’t quite like the idea of >>>>>>>>>>> using an essentially unreliable transport >>>>>>>>>>> (Ethernet) for low-level filesystem operations. >>>>>>>>>>> >>>>>>>>>>> In case something went wrong, that approach could risk >>>>>>>>>>> corrupting a pool. Although, frankly, >>>>>>>>>>> ZFS is extremely resilient. One of mine even survived a SAS HBA >>>>>>>>>>> problem that caused some >>>>>>>>>>> silent corruption. >>>>>>>>>> try dual split import :D i mean, zpool -f import on 2 machines >>>>>>>>>> hooked up >>>>>>>>>> to the same disk chassis. >>>>>>>>> Yes this is the first thing on the list to avoid .. :) >>>>>>>>> >>>>>>>>> I'm still busy to test the whole setup here, including the >>>>>>>>> MASTER -> BACKUP failover script (CARP), but I think you can >>> prevent >>>>>>>>> that thanks to: >>>>>>>>> >>>>>>>>> - As long as ctld is running on the BACKUP the disks are locked >>>>>>>>> and you can't import the pool (even with -f) for ex (filer2 >>> is the >>>>>>>>> BACKUP): >>>>>>>>> >>> https://gist.github.com/silenius/f9536e081d473ba4fddd50f59c56b58f >>> >>>>>>>>> >>>>>>>>> - The shared pool should not be mounted at boot, and you should >>>>>>>>> ensure >>>>>>>>> that the failover script is not executed during boot time too: >>>>>>>>> this is >>>>>>>>> to handle the case wherein both machines turn off and/or >>> re-ignite at >>>>>>>>> the same time. Indeed, the CARP interface can "flip" it's status >>>>>>>>> if both >>>>>>>>> machines are powered on at the same time, for ex: >>>>>>>>> >>> https://gist.github.com/silenius/344c3e998a1889f988fdfc3ceba57aaf >>> and >>>>>>>>> you will have a split-brain scenario >>>>>>>>> >>>>>>>>> - Sometimes you'll need to reboot the MASTER for some $reasons >>>>>>>>> (freebsd-update, etc) and the MASTER -> BACKUP switch should not >>>>>>>>> happen, this can be handled with a trigger file or something like >>>>>>>>> that >>>>>>>>> >>>>>>>>> - I've still have to check if the order is OK, but I think >>> that as >>>>>>>>> long >>>>>>>>> as you shutdown the replication interface and that you adapt the >>>>>>>>> advskew (including the config file) of the CARP interface >>> before the >>>>>>>>> zpool import -f in the failover script you can be relatively >>>>>>>>> confident >>>>>>>>> that nothing will be written on the iSCSI targets >>>>>>>>> >>>>>>>>> - A zpool scrub should be run at regular intervals >>>>>>>>> >>>>>>>>> This is my MASTER -> BACKUP CARP script ATM >>>>>>>>> >>> https://gist.github.com/silenius/7f6ee8030eb6b923affb655a259bfef7 >>> >>>>>>>>> >>>>>>>>> Julien >>>>>>>>> >>>>>>>> 100€ question without detailed looking at that script. yes from a >>>>>>>> first >>>>>>>> view its super simple, but: why are solutions like rsf-1 such more >>>>>>>> powerful / featurerich. Theres a reason for, which is that >>> they try to >>>>>>>> cover every possible situation (which makes more than sense >>> for this). >>>>>>> I've never used "rsf-1" so I can't say much more about it, but >>> I have >>>>>>> no doubts about it's ability to handle "complex situations", where >>>>>>> multiple nodes / networks are involved. >>>>>>> >>>>>>>> That script works for sure, within very limited cases imho >>>>>>>> >>>>>>>>>> kaboom, really ugly kaboom. thats what is very likely to happen >>>>>>>>>> sooner >>>>>>>>>> or later especially when it comes to homegrown automatism >>> solutions. >>>>>>>>>> even the commercial parts where much more time/work goes >>> into such >>>>>>>>>> solutions fail in a regular manner >>>>>>>>>> >>>>>>>>>>> The advantage of ZFS send/receive of datasets is, however, that >>>>>>>>>>> you can consider it >>>>>>>>>>> essentially atomic. A transport corruption should not cause >>>>>>>>>>> trouble (apart from a failed >>>>>>>>>>> "zfs receive") and with snapshot retention you can even roll >>>>>>>>>>> back. You can’t roll back >>>>>>>>>>> zpool replications :) >>>>>>>>>>> >>>>>>>>>>> ZFS receive does a lot of sanity checks as well. As long as >>> your >>>>>>>>>>> zfs receive doesn’t involve a rollback >>>>>>>>>>> to the latest snapshot, it won’t destroy anything by mistake. >>>>>>>>>>> Just make sure that your replica datasets >>>>>>>>>>> aren’t mounted and zfs receive won’t complain. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Cheers, >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Borja. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> freebsd-fs@freebsd.org >>> > >>> mailing list >>>>>>>>>>> https://lists.freebsd.org/mailman/listinfo/freebsd-fs >>> >>>>>>>>>>> To unsubscribe, send any mail to >>>>>>>>>>> "freebsd-fs-unsubscribe@freebsd.org >>> >>>>>>>>>>> >> >" >>>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> freebsd-fs@freebsd.org >>> > >>> mailing list >>>>>>>>>> https://lists.freebsd.org/mailman/listinfo/freebsd-fs >>> >>>>>>>>>> To unsubscribe, send any mail to >>>>>>>>>> "freebsd-fs-unsubscribe@freebsd.org >>> >>>>>>>>>> >> >" >>>>>> >>>>>> _______________________________________________ >>>>>> freebsd-fs@freebsd.org >>> > >>> mailing list >>>>>> https://lists.freebsd.org/mailman/listinfo/freebsd-fs >>> >>>>>> To unsubscribe, send any mail to >>> "freebsd-fs-unsubscribe@freebsd.org >>> >>>>>> >> >" >>>> >>>> _______________________________________________ >>>> freebsd-fs@freebsd.org mailing list >>>> https://lists.freebsd.org/mailman/listinfo/freebsd-fs >>> >>>> To unsubscribe, send any mail to >>> "freebsd-fs-unsubscribe@freebsd.org >>> " >>> _______________________________________________ >>> freebsd-fs@freebsd.org mailing list >>> https://lists.freebsd.org/mailman/listinfo/freebsd-fs >>> >>> To unsubscribe, send any mail to "freebsd-fs-unsubscribe@freebsd.org >>> " >>> >>> >> _______________________________________________ >> freebsd-fs@freebsd.org mailing list >> https://lists.freebsd.org/mailman/listinfo/freebsd-fs >> To unsubscribe, send any mail to "freebsd-fs-unsubscribe@freebsd.org" > > _______________________________________________ > freebsd-fs@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-fs > To unsubscribe, send any mail to "freebsd-fs-unsubscribe@freebsd.org" >