►
From YouTube: VDEV Properties by Allan Jude
Description
From the 2019 OpenZFS Developer Summit
slides: https://drive.google.com/open?id=1eQxFrz9g54R36rTTkCCD_VeGnetgCJRW
A
B
A
Thank
you
so
last
year,
at
the
dev
summit
here,
a
bunch
of
us
went
in
that
little
office
over
there
and
sketched
up
some
ideas
on
how
to
do
per
bead
of
properties
so
that
you
can
have
more
control
over
the
system
and
be
able
to
get
more
information
out.
Programmatically.
And
you
know
one
of
our
goals
was.
A
You
know
some
way
to
look
at
the
data
you
get
from
zville
status,
but
that
you
could,
you
know,
read
with
a
script
instead
of
with
your
human
eyeballs,
but
also
trying
to
move
towards
more
of
the
system-wide
tunable
is
becoming
for
pool
or
even
further
device,
and
so
I
thought
I'd
talk
a
little
bit
about
that.
So
right
now
that
match
makes
it
really
easy
to
configure
your
storage,
since
almost
every
object,
instead
of
s,
has
properties
right,
whether
it's
the
pool
itself
or
a
data
set
or
snapshots
or
whatever.
A
A
So
that's
what
I
wanted
so
I
wanted
to
extend
the
concept
to
have
for
bida
properties
and,
like
I,
said,
make
more
of
the
tunable
that
we
have
better
currently
system-wide
be
per
pool
or
Caribbean,
because
you
know
some
of
our
customers
have
multiple
pools
and
one
of
them
is
actually
based
on
devices
that
are
not
in
the
same
place.
And
so
you
know
they
experience
much
different
latency
than
the
regular
pool
that
they're
booting
off
of
and
they
might
need
different
settings
for
those.
A
To
put
it
into
your
monitoring,
deck
graphs
or
whatever
your
zpool
status
is
meant
for
humans,
not
for
cheese
or
you
know
you
can
get
a
list
of
the
individual
disks
in
some
level
of
the
hierarchy
by
running
zpool
list
beef,
but
the
columns
are
meant
for
pools,
not
disks,
so
a
lot
of
the
columns
of
blank
and
it
doesn't
really
match
right
and
I.
Also
wanted
ways
to
express
administrative
intent.
When
we
talked
last
year,
we
had
ideas
like
with
device
removal.
A
A
Yet
please
don't
keep
writing
to
it
as
I'm
moving
data
off
this
other
one,
because
then
I'm
just
going
to
have
to
indirect
it
twice
so
being
able
to
do
something
like
set
no
Alec
on
on
bf3,
and
then
you
know
that
the
allocator
is
going
to
avoid
making
new
allocations
to
that
PDF
so
that
when
you're
first
remove
completes,
you
can
go
to
the
second
one
that
hasn't
gained
any
new
data
in
the
meantime,
and
also
with
the
special
bit
of
class
stuff.
That
was
done
most.
B
A
The
control
you
have
there
about
what
types
of
blocks
get
sent
where
is
kind
of
generic,
so
if
you
have
three
special
because
they
all
get
the
same
stuff,
instead
of
being
able
to
say,
I
want
this
disc
to
have
the
D
do
cable
this
one
just
have
metadata
and
this
one's
just
for
small
ones.
Alright,
so
it
seemed
to
be
the
easiest
way
and
the
way
that
fit
best
into
the
way
you
can
figure
everything
else.
Instead
of
s
would
be
to
have
these
primitive
properties.
A
A
So
the
first
step
I
did
was
adding
a
whole
bunch
of
read
only
properties
we're
basically
exposing
a
lot
of
the
interesting
fields
from
vwt
and
video
stats,
t
as
read-only
properties,
so
currently
in
the
implication
I
have.
There
are
two
types
of
properties
or
assistant
properties
which
are
actually
third
in
enum
and
those
are
can
either
be
an
integer
an
index.
So
you
know
they
have
a
table
of
what
the
values
can
be
or
a
string
and
then
user
properties
which
are
always
a
string
and
just
get
stored
in
the
SAP
and
the
system.
A
It
depends
there
usually
sorting
as
that
as
the
edge
of
your
string,
or
some
of
them
are
read-only,
so
we
don't
have
to
store
them
and
then
the
user
properties
their
names
face.
The
same
way.
We
do
use
the
properties
on
data
sets
so
that
people
don't
get
in
each
other's
face
and
they
work
very
similar.
A
So
originally,
when
we
started
talking
about
this
last
year,
I
was
aiming
at
some
kind
of
interface,
where
you
do
like
zpool
get
the
property
at
the
be
dance
and
then
the
pool
or
something.
But
it
was
a
brian
behlendorf
point
out
that
as
part
of
the
work,
those
FS
and
many
people
had
done
it
for
a
zpool
IO
stack.
A
They
had
a
function
where,
when
you
list
multiple
pools
after
iOS
that
it
could
actually
look
at
that
list
and
tell
Oh
some
of
these
are
actually
v-dub
names
rather
than
cool
names,
and
be
able
to
filter
down
the
output
of
Iowa
stat
to
show
just
those
disks
out
of
the
pool
instead
of
all
of
them,
which
is
super
handy.
When
you
have
a
hundred
and
forty-four
discs
in
your
pool-
and
you
only
care
about
these
six
but
I
was
able
to
take
that
code
and
generalize
it
so
that
you
can
have
this
nicer.
A
Interface
of
Z
will
get
the
property
the
name
of
the
pool
and
then
a
list
of
B
tubs
and
will
get
that
property
from
that
list
of
meetups
or
there's
the
keyword
all
which
will
find
every
beat
up
in
that
pool,
and
it
inherits
all
the
goodness
of
the
soup
will
get
interface.
So
you
can
have
capital
age
to
make
scriptable
modes
so
that
it
is
for
the
header
and
the
fields
are
separated,
separated
by
hard
tab.
Instead
of
so
you
know
pretty
frigid
parsable
so
that
you
get
numbers
in.
A
A
So
this
is
the
example
pool
I
specifically
have
a
device,
that's
missing,
but
you
can
still
read
the
disaster.
That's
stored
in
multiple
copies
I
have
very
strange
fool
here
with
a
single
device
and
then
a
mirror
and
the
mirror
is
missing
or
whatever.
But
you
can
say:
do
you
forget
the
state
of
the
media,
the
fragmentation
level
whose
parent
is
and
how
many
meteors
it
has
for
these
two
discs?
Am
I
cool
and
you
get
the
output
and
you
can
see
that
the
AEA
zero
device
as
parent
of
the
pool?
So
it's
a
stripe.
A
Basically,
it's
a
top
of
Liga,
whereas
a1
is
part
of
near
one,
and
you
see
the
fragmentation
levels
and
neither
them
have
any
immediate
right
now
and
then
I
have
a
giant
list
of
properties
available
now
most
of
these
are
all
read-only.
You
can
get
the
name
of
the
video
for
that
how
big
it
is
in
the
state,
all
that
kind
of
stuff
or
you
can
set
a
comment
on
each
v10
so
that
keep
track
of
where
this
or
whatever
I
found
that
I'm
free
to
see.
A
There
are
I
octaves
to
set
the
FRU,
but
there's
no
user
space
interface
to
do
it,
but
in
conversations
we've
talked
about
the
idea
of
actually
maybe
have
a
serial
number
and
the
model
number
of
the
disc
persisted
in
the
Zap,
so
that
when
a
disc
is
failed,
you
can
tell
what
a
serial
number
was
and
what
its
part
number
was,
so
that
you
can
replace
it
even
when
that
disc
is
not
online
anymore.
Interesting.
Things
like
that,
and
also
from
the
via
of
stats
T
got
all
the
counters.
A
So
we
addition
to
the
error
counts
you
get
from
zero
status.
You
can
also
see
how
many
cups
of
each
type
and
how
many
bytes
have
been
read
and
written,
trimmed
and
so
on
from
each
device
which,
beginning
to
my
feet,
into
your
monitoring,
you
guys
should
graph
how
busy
each
disk
is
by
just
comparing
those
numbers
over
time.
A
Although
we
have
one
or
the
bit
about
things
like
the
bike
tracking,
how
many
bytes
have
been
written
to
an
SSD,
maybe
we
want
to
persist
those
numbers,
but
how
do
we
do
that
without
you
know,
writing
to
the
disk
too.
Frequently
and
I'm
very
interested
in
what
other
properties
people
would
like
to
see
mostly
right
now,
it's
just
the
stuff
said
if
S
knows
about
to
be
dev
and
you
can
set
user
properties
to
do
whatever
you
want
with
like
one
idea.
A
We're
looking
at
for
freebsd
is
for
our
fault
management,
daemon,
being
able
to
put
information
like
how
should
this
disk
be
partitioned
or
how
was
it
partition
so
that
when
we
replace
it,
we
can
apply
the
same
partitioning
scheme
again,
just
like
previously,
we
use
draw
swap,
rather
than
swap
on
OC
ball
or
whatever,
depending
if
it's
a
boot
pool,
it
needs
to
have
the
boot
code.
You
know
to
rewrite
that
when
you
replace
the
disk
and
things
like
that.
A
A
And
at
what
point
do
we
have
we
made
too
many
properties,
and
do
we
need
to
at
some
point
have
a
subset
when
you
do
you
know
Z
people
get
all.
It
only
displays
most
of
the
stats,
and
you
know
you
have
to
say
instead
of
s,
get
debug
or
something
you
do
want
the
really
gory
ones
or
do
we
just
make
them
hidden
and
you
have
to
specify
them
explicitly
to
make
them
show
up.
But
at
what
point
is
do
we
have
too
many
properties?
B
A
But
also
would
like
to
get
channel
programs
for
this,
especially
if
you're
going
to
go
and
set
properties
on
all
of
your
video.
So
you
probably
want
to
have
to
wait
a
long
time
for
each
of
those
tips
like
you
do
them
all,
and
then
flesh
might
at
once
know
things
currently,
if
you
looking
at
cool
properties
when
you
open
handle
in
libs
NFS
to
the
pool
the
kids,
all
the
properties
once
and
then
has
those
in
that
handle.
A
So
you
don't
have
to
do
an
I
opto
for
every
pool
property
when
you're
trying
to
do
stuff
with
it
currently
for
the
Vita
properties.
We
don't
do
any
caching
at
all,
just
probably
okay,
because
they're
not
really
meant
to
be
used
that
way,
but
maybe
reading
something
and
then
I
when
we
talked
originally,
we
kind
of
had
the
question
of
do
we
need
inheritance
or
not
in
what
makes
sense
there
most
of
the
properties.
Maybe
it
doesn't
make
sense,
but
some
of
it
does
we
do
there
I
said
persistent
counters.
Do
we
have?
A
A
C
A
D
A
E
B
E
A
D
Right
so
I
guess
I
mean
you
mentioned,
having
additional
things
for
previously
sort
of
global
interface.
Where
you
can,
you
know,
add
your
own.
Things
want
to
be
able
to
get
so,
for
instance,
I
get
the
HPA
sue.
This
is
something
which
could
be
generate.
This
is
where
you
would
provide
that
to
the
physical
path
the
video
is
provided
by
CFS
as
fast
descriptive.
D
A
Yeah,
the
the
physical
path
is
one
of
the
properties
that
we
do
have
and
yes
for
some
of
those
that
might
make
sense
to
do
that.
Or
you
know
in
the
case
of
previously
we're
looking
at
providing
that
with
geom,
which
is
the
layer
that
sits
under
video
vendors
witnessed
and
so
yeah.
We
probably
wouldn't
actually
do
that
as
a
full
property.
So
much
is
just
some
other
way
to
get
a
claim.
I
think
yeah.
A
The
idea
what
this
would
be
to
try
to
keep
define
properties
common
across
all
the
platform
right
and
then
you
can
have
the
namespace
properties
for
local
stuff.
So
if
freebsd
is
going
to
have
previously
only
properties,
they'd
be
or
that
previously
:
the
property
name,
and
so
the
obvious
that
not
something
you
would
expect
to
work
anywhere
else
and
then
yeah,
which
the
user
properties
you
can
do
what
everyone
you
know,
del
phix,
but
I've
dumped
like
specific
things.
They
want
to
persist
to
the
disk.
E
A
Zero
I
Lestat
has
a
latency
histogram
stuffs.
You
can,
let
me
give
you
a
it
breaks
it
down
for
this.
B
A
Yeah
I
think
it
basically
be
the
same
thing,
but
you
know
what
other
actually
writable
properties
to
people
think
would
be
useful,
like
that
is
doing
some
of
the
ones
for
the
special
be
depth
classes
and
no
Alec
for
being
able
to
hew
stuff
or
just
other
things
like
that.
The
other
one
we
thought
about
was
a
mere
bias.
So
sometimes
you
have
a
mirror
with
one
disk
is
local
and
one's
not,
and
you
want
to
say,
do
almost
all
of
the
reads
or
all
of
the
reads
off
the
local
mirror.
Unless
that
disk
is.