<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.old.lustre.org/index.php?action=history&amp;feed=atom&amp;title=Architecture_-_Migration_%282%29</id>
	<title>Architecture - Migration (2) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.old.lustre.org/index.php?action=history&amp;feed=atom&amp;title=Architecture_-_Migration_%282%29"/>
	<link rel="alternate" type="text/html" href="http://wiki.old.lustre.org/index.php?title=Architecture_-_Migration_(2)&amp;action=history"/>
	<updated>2026-05-08T06:10:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>http://wiki.old.lustre.org/index.php?title=Architecture_-_Migration_(2)&amp;diff=10595&amp;oldid=prev</id>
		<title>Docadmin at 21:17, 22 January 2010</title>
		<link rel="alternate" type="text/html" href="http://wiki.old.lustre.org/index.php?title=Architecture_-_Migration_(2)&amp;diff=10595&amp;oldid=prev"/>
		<updated>2010-01-22T21:17:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:17, 22 January 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; The content on this page reflects the state of design of a Lustre feature at a particular point in time and may contain outdated information.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Note:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#039;&amp;#039;&lt;/ins&gt;&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;The content on this page reflects the state of design of a Lustre feature at a particular point in time and may contain outdated information.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#039;&amp;#039; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Summary ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Summary ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Docadmin</name></author>
	</entry>
	<entry>
		<id>http://wiki.old.lustre.org/index.php?title=Architecture_-_Migration_(2)&amp;diff=10521&amp;oldid=prev</id>
		<title>Docadmin: Protected &quot;Architecture - Migration (2)&quot; ([edit=sysop] (indefinite) [move=sysop] (indefinite))</title>
		<link rel="alternate" type="text/html" href="http://wiki.old.lustre.org/index.php?title=Architecture_-_Migration_(2)&amp;diff=10521&amp;oldid=prev"/>
		<updated>2010-01-22T18:26:52Z</updated>

		<summary type="html">&lt;p&gt;Protected &amp;quot;&lt;a href=&quot;/index.php?title=Architecture_-_Migration_(2)&quot; title=&quot;Architecture - Migration (2)&quot;&gt;Architecture - Migration (2)&lt;/a&gt;&amp;quot; ([edit=sysop] (indefinite) [move=sysop] (indefinite))&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:26, 22 January 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Docadmin</name></author>
	</entry>
	<entry>
		<id>http://wiki.old.lustre.org/index.php?title=Architecture_-_Migration_(2)&amp;diff=10142&amp;oldid=prev</id>
		<title>Docadmin at 00:16, 19 January 2010</title>
		<link rel="alternate" type="text/html" href="http://wiki.old.lustre.org/index.php?title=Architecture_-_Migration_(2)&amp;diff=10142&amp;oldid=prev"/>
		<updated>2010-01-19T00:16:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:16, 18 January 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039;&#039; The content on this page reflects the state of design of a Lustre feature at a particular point in time and may contain outdated information. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Summary ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Summary ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Docadmin</name></author>
	</entry>
	<entry>
		<id>http://wiki.old.lustre.org/index.php?title=Architecture_-_Migration_(2)&amp;diff=9993&amp;oldid=prev</id>
		<title>Docadmin: Created page with &#039;== Summary ==  Migration is a process of data and metadata moving within one cluster (one namespace) as well as to/from external non-Lustre storage servers.  HSM,  free space bal...&#039;</title>
		<link rel="alternate" type="text/html" href="http://wiki.old.lustre.org/index.php?title=Architecture_-_Migration_(2)&amp;diff=9993&amp;oldid=prev"/>
		<updated>2010-01-15T19:14:13Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;== Summary ==  Migration is a process of data and metadata moving within one cluster (one namespace) as well as to/from external non-Lustre storage servers.  HSM,  free space bal...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
Migration is a process of data and metadata moving within one cluster (one namespace) as well as to/from external non-Lustre storage servers.  HSM, &lt;br /&gt;
free space balance, file restriping are examples of migration.&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
&lt;br /&gt;
;&amp;#039;&amp;#039;&amp;#039;Agent&amp;#039;&amp;#039;&amp;#039; : actually copies objects&lt;br /&gt;
;&amp;#039;&amp;#039;&amp;#039;Feed&amp;#039;&amp;#039;&amp;#039; : object enumeration&lt;br /&gt;
;&amp;#039;&amp;#039;&amp;#039;Feed Generator&amp;#039;&amp;#039;&amp;#039;: produces object enumeration for migration agent&lt;br /&gt;
;&amp;#039;&amp;#039;&amp;#039;Coordinator&amp;#039;&amp;#039;&amp;#039; : menages migrations and running migration agents&lt;br /&gt;
;&amp;#039;&amp;#039;&amp;#039;Initiator&amp;#039;&amp;#039;&amp;#039;: initiates a migration, issues a migration request&lt;br /&gt;
&lt;br /&gt;
== Use cases ==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID !! Quality Attribute !! Summary&lt;br /&gt;
|-&lt;br /&gt;
| simple migration&lt;br /&gt;
| usability, performance&lt;br /&gt;
| a simple migration within one name space&lt;br /&gt;
|-&lt;br /&gt;
| duplicate requests are merged&lt;br /&gt;
| performance&lt;br /&gt;
| duplicate migration requests are proccessed as one request&lt;br /&gt;
|-&lt;br /&gt;
| conflicting requests abort in-progress migration&lt;br /&gt;
| performance&lt;br /&gt;
| when an object in process of migrating to HSM, any access to the object aborts migration&lt;br /&gt;
|-&lt;br /&gt;
| coherent access to moving objects&lt;br /&gt;
| usability&lt;br /&gt;
| moving object continues to be accessible to clients&lt;br /&gt;
|-&lt;br /&gt;
| propagate punch and trunc to source, as well as llog on sink&lt;br /&gt;
| performance&lt;br /&gt;
| don&amp;#039;t copy truncated data&lt;br /&gt;
|-&lt;br /&gt;
| recovery&lt;br /&gt;
| availability&lt;br /&gt;
| restore moving object state after a server crash&lt;br /&gt;
|-&lt;br /&gt;
| single namespace at all times&lt;br /&gt;
| usability&lt;br /&gt;
| moving and migrated objects are in the same namespace&lt;br /&gt;
|-&lt;br /&gt;
| scalability&lt;br /&gt;
| scalability&lt;br /&gt;
| more servers - faster migration&lt;br /&gt;
|-&lt;br /&gt;
| reconnect with dirty cache after server migration has completed (FLDB)&lt;br /&gt;
| usability&lt;br /&gt;
| dirty cache reintegration when the objects are moved already&lt;br /&gt;
|-&lt;br /&gt;
| support partial file reclamations &lt;br /&gt;
| performance, usability&lt;br /&gt;
| file can&amp;#039;t fit fully in cache&lt;br /&gt;
|-&lt;br /&gt;
| cache full / master full management (grants?)&lt;br /&gt;
| usability&lt;br /&gt;
| we don&amp;#039;t want destination server to run out of space in the middle of migration&lt;br /&gt;
|-&lt;br /&gt;
| IO optimization&lt;br /&gt;
| performance&lt;br /&gt;
| agents will somehow create large IOs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Quality Attribute Scenarios ==&lt;br /&gt;
&lt;br /&gt;
Simple migration&lt;br /&gt;
&lt;br /&gt;
{|border=1  cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Scenario:&amp;#039;&amp;#039;&amp;#039; || simple data and md migration within one namespace&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Business Goals:&amp;#039;&amp;#039;&amp;#039;|| advanced control over Lustre object placement&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Relevant QA&amp;#039;s:&amp;#039;&amp;#039;&amp;#039;|| usability, performance&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot; writing-mode=&amp;quot;vertical&amp;quot;|&amp;#039;&amp;#039;&amp;#039;details&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Stimulus:&amp;#039;&amp;#039;&amp;#039;|| a migration request&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Stimulus source:&amp;#039;&amp;#039;&amp;#039;|| administrator, lustre control utilities, client&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Environment:&amp;#039;&amp;#039;&amp;#039;|| a Lustre cluster&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Artifact:&amp;#039;&amp;#039;&amp;#039;|| migration coordinator&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Response:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| an administrator issues a migration request to a coordinator. The&lt;br /&gt;
coordinator starts or wakes up one or more migration agents. The&lt;br /&gt;
coordinator asks migration agents to move Lustre objects with given&lt;br /&gt;
IDs. The migration agents do actual migration.&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Response measure:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| successful migration, achieving good performance by moving objects in parallel&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Questions:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Issues:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
duplicate requests are merged&lt;br /&gt;
&lt;br /&gt;
{|border=1  cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Scenario:&amp;#039;&amp;#039;&amp;#039; || second migration request is issued when the object is being migrated&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Business Goals:&amp;#039;&amp;#039;&amp;#039;|| handle duplicated requests efficiently&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Relevant QA&amp;#039;s:&amp;#039;&amp;#039;&amp;#039;|| performance&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot; writing-mode=&amp;quot;vertical&amp;quot;|&amp;#039;&amp;#039;&amp;#039;details&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Stimulus:&amp;#039;&amp;#039;&amp;#039;|| a migration request&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Stimulus source:&amp;#039;&amp;#039;&amp;#039;|| client, administrator, a control utility&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Environment:&amp;#039;&amp;#039;&amp;#039;|| an object being migrated&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Artifact:&amp;#039;&amp;#039;&amp;#039;|| coordinator&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Response:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
the coordinator detects duplication of the requests and execute them as one&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Response measure:&amp;#039;&amp;#039;&amp;#039;|| successful execution of two requests, no duplicated requrests disturbing each other&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Questions:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Issues:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
conflicting requests abort in-progress migration&lt;br /&gt;
&lt;br /&gt;
{|border=1  cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Scenario:&amp;#039;&amp;#039;&amp;#039; || archiving to a tape is aborted if conflicting migration request is issued&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Business Goals:&amp;#039;&amp;#039;&amp;#039;|| eliminate useless arhive operation&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Relevant QA&amp;#039;s:&amp;#039;&amp;#039;&amp;#039;|| performance&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot; writing-mode=&amp;quot;vertical&amp;quot;|&amp;#039;&amp;#039;&amp;#039;details&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Stimulus:&amp;#039;&amp;#039;&amp;#039;|| client&amp;#039;s file access (for the HSM case)&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Stimulus source:&amp;#039;&amp;#039;&amp;#039;|| client application&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Environment:&amp;#039;&amp;#039;&amp;#039;|| HSM, a file is being archived to a tape, someone wants to write to the file &lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Artifact:&amp;#039;&amp;#039;&amp;#039;|| coordinator&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Response:&amp;#039;&amp;#039;&amp;#039;|| coordinator aborts the archiving operation&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Response measure:&amp;#039;&amp;#039;&amp;#039;|| archiving op is aborted&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Questions:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Issues:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
coherent access to moving objects&lt;br /&gt;
&lt;br /&gt;
{|border=1  cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Scenario:&amp;#039;&amp;#039;&amp;#039; || transparent access to objects being migrated&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Business Goals:&amp;#039;&amp;#039;&amp;#039;|| concurrent access to the moving objects  &lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Relevant QA&amp;#039;s:&amp;#039;&amp;#039;&amp;#039;|| performance, scalability&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot; writing-mode=&amp;quot;vertical&amp;quot;|&amp;#039;&amp;#039;&amp;#039;details&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Stimulus:&amp;#039;&amp;#039;&amp;#039;|| file access&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Stimulus source:&amp;#039;&amp;#039;&amp;#039;||  client application&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Environment:&amp;#039;&amp;#039;&amp;#039;|| an object being moved, a client application accesses the object&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Artifact:&amp;#039;&amp;#039;&amp;#039;|| moving object&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Response:&amp;#039;&amp;#039;&amp;#039;|| The migration agent(s) move the objects in chunks, protecting the currently moved chunks by exclusive locks and redirect application requests to appropriate data location (source or target)&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Response measure:&amp;#039;&amp;#039;&amp;#039;|| client is able to access an object being moved,&lt;br /&gt;
client access isn&amp;#039;t blocked for the period of object migration.&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Questions:&amp;#039;&amp;#039;&amp;#039;||  always redirect to target?&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Issues:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Empty UC&lt;br /&gt;
&lt;br /&gt;
{|border=1  cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Scenario:&amp;#039;&amp;#039;&amp;#039; ||&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Business Goals:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-align=&amp;quot;left&amp;quot; &lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Relevant QA&amp;#039;s:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot; writing-mode=&amp;quot;vertical&amp;quot;|&amp;#039;&amp;#039;&amp;#039;details&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Stimulus:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Stimulus source:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Environment:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Artifact:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Response:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Response measure:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Questions:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-align=&amp;quot;left&amp;quot;&lt;br /&gt;
|colspan=2|&amp;#039;&amp;#039;&amp;#039;Issues:&amp;#039;&amp;#039;&amp;#039;||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IMP1&amp;#039;&amp;#039;&amp;#039; all IO involving Lustre servers uses client API (exploit existing locking and sync &amp;#039;&amp;#039;&amp;#039;LLITE&amp;#039;&amp;#039;&amp;#039; infrastructure)&lt;br /&gt;
** avoid reimplementing client&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IMP2&amp;#039;&amp;#039;&amp;#039; separate problem into coordinators and agents&lt;br /&gt;
** agents have datamover plugins&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IMP3&amp;#039;&amp;#039;&amp;#039;: pull model if target is Lustre OSD (run agent on sink)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IMP4&amp;#039;&amp;#039;&amp;#039;: if target is Lustre OSD, send all requests to target (block client requests until they can be filled on target).  source OSD must redirect&lt;br /&gt;
** let MDTmaintain the redirection, in line with flash cache&lt;br /&gt;
** callback layout (stripe descriptor) when we initiate migration, sends&lt;br /&gt;
** blocking asts to all clients with any locks on the file&lt;br /&gt;
** 3 phase: old layout, dual layout, final layout&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IMP5&amp;#039;&amp;#039;&amp;#039;: need a lock bit for layouts&lt;br /&gt;
** means we need to drop the client lock when we flush inode&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IMP6&amp;#039;&amp;#039;&amp;#039;: creation of target object results in llog entry with old and new EA (SOM-style recovery)&lt;br /&gt;
** IMP7: record (llog) and execute trunc/punch on tgt, propagate to source&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IMP8&amp;#039;&amp;#039;&amp;#039;: bit (or extent log) on MDT (master copy) indicating copy or tape is current (&amp;quot;can I reclaim this space?&amp;quot;) 1 llog of extents indicating which files are on tape (for fast space reclamation).  Similar to WBC on clients&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IMP9&amp;#039;&amp;#039;&amp;#039;: Use commit CB on EA with tape FID to tell the tape &amp;quot;not an orphan&amp;quot; (i.e. &amp;quot;we&amp;#039;re counting on this tape fid&amp;quot;)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IMP10&amp;#039;&amp;#039;&amp;#039;: MDS inode objects never change fids&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IMP11&amp;#039;&amp;#039;&amp;#039; locks a migrator might take automatically interact with locks other clients may take&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[https://bugzilla.lustre.org/show_bug.cgi?id=14698 bug 14698]&lt;/div&gt;</summary>
		<author><name>Docadmin</name></author>
	</entry>
</feed>