Date: Sun, 11 Dec 2022 12:43:01 +0300 From: Artem Kuchin <artemkuchin76@gmail.com> To: Warner Losh <imp@bsdimp.com> Cc: FreeBSD FS <freebsd-fs@freebsd.org> Subject: Re: Everchanging bytes at the end of mirror disks Message-ID: <241b816c-6d46-5be3-e523-824737033239@gmail.com> In-Reply-To: <CANCZdfrO4M49i_WdidJUujQoJH1pAooTfxFtVjrNLU77EseH7Q@mail.gmail.com> References: <85c5a64c-915e-d790-e617-c94f3fb7cd9a@gmail.com> <CANCZdfrO4M49i_WdidJUujQoJH1pAooTfxFtVjrNLU77EseH7Q@mail.gmail.com>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
11.12.2022 11:22, Warner Losh пишет:
>
>
> On Sat, Dec 10, 2022, 11:52 PM Artem Kuchin <artemkuchin76@gmail.com>
> wrote:
>
> Hello!
>
> I am writing a small utility for myseld and part of it is comparing
> gmirror disks. After running some tests i realized that some bytes at
> the very end of disks are constantly changing.
>
>
> The last sector has metadata about the mirror and about the mirror
> element. It's this latter data that differs.
>
>
Looking at g_mirror.h
struct g_mirror_metadata {
char md_magic[16]; /* Magic value. */
uint32_t md_version; /* Version number. */
char md_name[16]; /* Mirror name. */
uint32_t md_mid; /* Mirror unique ID. */
uint32_t md_did; /* Disk unique ID. */
uint8_t md_all; /* Number of disks in mirror. */
uint32_t md_genid; /* Generation ID. */
uint32_t md_syncid; /* Synchronization ID. */
uint8_t md_priority; /* Disk priority. */
uint32_t md_slice; /* Slice size. */
uint8_t md_balance; /* Balance type. */
uint64_t md_mediasize; /* Size of the smallest
disk in mirror. */
uint32_t md_sectorsize; /* Sector size. */
uint64_t md_sync_offset; /* Synchronized offset. */
uint64_t md_mflags; /* Additional mirror flags. */
uint64_t md_dflags; /* Additional disk flags. */
char md_provider[16]; /* Hardcoded provider. */
uint64_t md_provsize; /* Provider's size. */
u_char md_hash[16]; /* MD5 hash. */
};
From this metadata seems like it is updated nearly each write:
md_sync_offset (from g_mirror_sync_request), md_hash, maybe others. Poor
last sector is written quadrillion times a day every day.
It does not look good to me, but maybe i am wrong? Also, does it mean no
go for gmirror on ssd?
Artem
[-- Attachment #2 --]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="moz-cite-prefix">11.12.2022 11:22, Warner Losh пишет:<br>
</div>
<blockquote type="cite"
cite="mid:CANCZdfrO4M49i_WdidJUujQoJH1pAooTfxFtVjrNLU77EseH7Q@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="auto">
<div><br>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Sat, Dec 10, 2022,
11:52 PM Artem Kuchin <<a
href="mailto:artemkuchin76@gmail.com"
moz-do-not-send="true" class="moz-txt-link-freetext">artemkuchin76@gmail.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">Hello!<br>
<br>
I am writing a small utility for myseld and part of it is
comparing <br>
gmirror disks. After running some tests i realized that
some bytes at <br>
the very end of disks are constantly changing.<br>
</blockquote>
</div>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">The last sector has metadata about the mirror
and about the mirror element. It's this latter data that
differs.</div>
<div dir="auto"><br>
</div>
<br>
</div>
</blockquote>
<p>Looking at g_mirror.h<br>
</p>
<p>struct g_mirror_metadata {<br>
char md_magic[16]; /* Magic value. */<br>
uint32_t md_version; /* Version number. */<br>
char md_name[16]; /* Mirror name. */<br>
uint32_t md_mid; /* Mirror unique ID. */<br>
uint32_t md_did; /* Disk unique ID. */<br>
uint8_t md_all; /* Number of disks in
mirror. */<br>
uint32_t md_genid; /* Generation ID. */<br>
uint32_t md_syncid; /* Synchronization ID. */<br>
uint8_t md_priority; /* Disk priority. */<br>
uint32_t md_slice; /* Slice size. */<br>
uint8_t md_balance; /* Balance type. */<br>
uint64_t md_mediasize; /* Size of the smallest<br>
disk in mirror. */<br>
uint32_t md_sectorsize; /* Sector size. */<br>
uint64_t md_sync_offset; /* Synchronized offset. */<br>
uint64_t md_mflags; /* Additional mirror
flags. */<br>
uint64_t md_dflags; /* Additional disk flags.
*/<br>
char md_provider[16]; /* Hardcoded provider. */<br>
uint64_t md_provsize; /* Provider's size. */<br>
u_char md_hash[16]; /* MD5 hash. */<br>
};<br>
<br>
</p>
<p>From this metadata seems like it is updated nearly each write:
md_sync_offset (from g_mirror_sync_request), md_hash, maybe others.
Poor last sector is written quadrillion times a day every day.</p>
<p>It does not look good to me, but maybe i am wrong? Also, does it
mean no go for gmirror on ssd?</p>
<p>Artem</p>
<p><br>
</p>
</body>
</html>
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?241b816c-6d46-5be3-e523-824737033239>
