<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
On Oct 18, 2023, at 13:04, Peter Grandi via lustre-discuss <<a href="mailto:lustre-discuss@lists.lustre.org" class="">lustre-discuss@lists.lustre.org</a>> wrote:<br class="">
<div>
<blockquote type="cite" class=""><br class="Apple-interchange-newline">
<div class="">
<div class="">So I have been upgrading my one and only MDT to a larger ZFS<br class="">
pool, by the classic route of creating a new pool, new MDT, and<br class="">
then 'zfs send'/zfs receive' for the copy over (BTW for those<br class="">
who may not be aware 'zfs send' output can be put into a file to<br class="">
do offline backups of a Lustre ZFS filesystem instance).<br class="">
<br class="">
At first I just created an empty MGT on the new devices (on a<br class="">
server with the same NID as the old MGS), with the assumption<br class="">
that given that MDTs and OSTs have unique (filesystem instance,<br class="">
target type, index number) triples, with NIDs being just the<br class="">
address to find the MGS, or where they can be found, they would<br class="">
just register themselves with the MGT on startup.<br class="">
<br class="">
But I found that there was a complaint that they were in a<br class="">
registered state, and the MGT did not have their registration<br class="">
entries. I am not sure that is the purpose of that check. So<br class="">
I just copied over the old MGT where they were registered, and<br class="">
all was fine.<br class="">
<br class="">
* Is there a way to re-register MDTs and OSTs belonging to a<br class="">
given filesystem instance into a new different MGT?<br class="">
</div>
</div>
</blockquote>
<div><br class="">
</div>
If you run the "writeconf" process documented in the Lustre Manual, the MDT(s)</div>
<div>and OST(s) will re-register themselves with the MGT. </div>
<div><br class="">
<blockquote type="cite" class="">
<div class="">
<div class="">* Is there a purpose to check whether MDTs and OSTs are or not<br class="">
registered in a given MGT?<br class="">
</div>
</div>
</blockquote>
<div><br class="">
</div>
Yes, this prevents the MDTs/OSTs from accidentally becoming part of a</div>
<div>different filesystem that might have been incorrectly formatted with the</div>
<div>same fsname (e.g. "lustre" has been used as the fsname more than</div>
<div>once).</div>
<div><br class="">
<blockquote type="cite" class="">
<div class="">
<div class="">* Is there a downside to register MDTs and OSTs in a different<br class="">
MGT from that which they were registered with initially?<br class="">
</div>
</div>
</blockquote>
<div><br class="">
</div>
Not too much. The new MGT will not have any of the old configuration</div>
<div>parameters, but running "writeconf" will also reset any "conf_param"</div>
<div>parameters so not much different (but it will not reset "set_param -P"</div>
<div>parameters).</div>
<div><br class="">
<blockquote type="cite" class="">
<div class="">
<div class="">My guess is that the MGT does not just contain the identities<br class="">
and addresses of MDTs and OSTs of one or more filesystem<br class="">
instance, but also a parameter list<br class="">
<br class="">
If so, is there are way to dump the parameter for a filesystem<br class="">
instance so it can be restored to a different MGT?<br class="">
</div>
</div>
</blockquote>
<br class="">
</div>
<div>Yes, the "lctl --device MGS llog_print CONFIG_LOG" command</div>
<div>will dump all of the config commands for a particular MDT/OST</div>
<div>or the "params" log for "set_param -P".</div>
<div><br class="">
</div>
<div>The parameters can be restored from a file with "lctl set_param -F".</div>
<div><br class="">
</div>
<div>See the lctl-set_param.8 and lctl-llog_print.8 man pages for details.</div>
<br class="">
<div class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<div>Cheers, Andreas</div>
<div>--</div>
<div>Andreas Dilger</div>
<div>Lustre Principal Architect</div>
<div>Whamcloud</div>
<div><br class="">
</div>
<div><br class="">
</div>
<div><br class="">
</div>
</div>
</div>
</div>
</div>
</div>
<br class="Apple-interchange-newline">
</div>
<br class="Apple-interchange-newline">
<br class="Apple-interchange-newline">
</div>
<br class="">
</body>
</html>