Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Mar 2014 14:41:22 -0700
From:      Freddie Cash <fjwcash@gmail.com>
To:        Dmitry Morozovsky <marck@rinet.ru>
Cc:        "freebsd-fs@freebsd.org" <freebsd-fs@freebsd.org>
Subject:   Re: zfs l2arc warmup
Message-ID:  <CAOjFWZ5F7O%2Bje9w=agwLTu0Jm2-PfzjasEBYQEqD%2B%2B5LvTE_FQ@mail.gmail.com>
In-Reply-To: <alpine.BSF.2.00.1403290116550.60856@woozle.rinet.ru>
References:  <CAFfb-hpi20062%2BHCrSVhey1hVk9TAcOZAWgHSAP93RSov3sx4A@mail.gmail.com> <CALfReydi_29L5tVe1P-aiFnm_0T4JJt72Z1zKouuj8cjHLKhnw@mail.gmail.com> <CAFfb-hpZos5-d3xo8snU1aVER5u=dSFRx-B-oqjFRTkT83w0Kg@mail.gmail.com> <20140328005911.GA30665@neutralgood.org> <CAFfb-hr=wR6nxqL%2B4tn-y2eQEw4n_g7rZoK9rRLnm_Ldcm1TZQ@mail.gmail.com> <alpine.BSF.2.00.1403290032070.60856@woozle.rinet.ru> <CAOjFWZ7h5080%2BzEvSfzxgENwP%2BPXEXKPXdEDHAtbx5RAxxWT0g@mail.gmail.com> <alpine.BSF.2.00.1403290116550.60856@woozle.rinet.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Mar 28, 2014 at 2:19 PM, Dmitry Morozovsky <marck@rinet.ru> wrote:

> On Fri, 28 Mar 2014, Freddie Cash wrote:
>
> [snip most again]
>
> > Around ZFSv14-ish, the ability to import a pool with a missing ZIL was
> > added.
> >
> > Remember the flow of data in ZFS:
> >   async write request --> TXG --> disk
> >   sync write request --> ZIL
> >                \--> TXG --> disk
> >
> > All sync writes are written to the pool as part of a normal async TXG
> after
> > its written sync to the ZIL.  And the ZIL is only ever read during pool
> > import.
>
> On the other side, doesn't it put the risk on sync-dependent, like
> database,
> systems?
>
> I'm thinking not about losing the transaction, but possibly putting your
> filesystem in the middle of (database PoV) transaction, hence render your
> DB
> inconsistent?
>
> Quick googling seems to be uncertain about it...
>

=E2=80=8BThat I don't know.  Again, I'm not a ZFS code guru; just a very
happy/active ZFS user and reader of stuff online.  :)

You're thinking of the small window where:
  - database writes transaction to disk
  - zfs writes =E2=80=8Bthe data to the ZIL on the log vdev
  - zfs returns "data is written to disk" to the DB
  - zfs queues up the write to the pool
  - the log device dies
  - the pool is forcibly exported/server loses power

Such that the DB considers the transaction complete and the data safely
written to disk, but it's actually only written to the ZIL on the separate
log device (which no longer exists) and is not stored in the pool yet.

Yeah, that could be a problem.  A very unlikely event, although not
entirely impossible.

=E2=80=8BI would think it would be up to the database to be able to roll-ba=
ck a
database to prior to the corrupted transaction.  If the DB has a log or
journal or whatever, then it could be used to roll-back, no?

It's still considered best practice to use mirror log device.  It's just no
longer required, nor does a dead log lead to a completely dead pool.=E2=80=
=8B

--=20
Freddie Cash
fjwcash@gmail.com



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOjFWZ5F7O%2Bje9w=agwLTu0Jm2-PfzjasEBYQEqD%2B%2B5LvTE_FQ>