Skip site navigation (1)Skip section navigation (2)
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 &lt;<a
                href="mailto:artemkuchin76@gmail.com"
                moz-do-not-send="true" class="moz-txt-link-freetext">artemkuchin76@gmail.com</a>&gt;
              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>