[LU-6081] hsm: add file migrate support Created: 05/Jan/15 Updated: 12/Apr/21 |
|
| Status: | Open |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Frank Zago (Inactive) | Assignee: | Ben Evans (Inactive) |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | HSM, cea, patch | ||
| Issue Links: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Rank (Obsolete): | 16922 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description |
|
Currently file migration is done by "lfs migrate". This has a couple problems:
A solution to this issue is to move the copy operation into the copytool. The copytool already knows how to copy files, and Lustre has control over these files. This imply to re-use and extend the infrastructure created for HSM, and would solve the two issues mentioned above:
|
| Comments |
| Comment by Frank Zago (Inactive) [ 05/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
The proposed changes to Lustre are: Issuing the commandUser APIstruct hsm_request is expanded to support migration. hr_action will be a new value: HUA_MIGRATE. hr_archive_id will be unused. hr_flags will take a new flag (HSM_MIGRATION_BLOCKS, with the meaning of MIGRATION_BLOCKS in current lfs implementation). The command parameters themselves, contained in a struct llapi_stripe_param are appended at the end of the structure, and hr_data_len will be set appropriately. hr_itemcount will be 1. The request is then sent to the kernel will llapi_hsm_request, which won't need to change. In a future expansion, it should be possible (desired?) to allow more than one request per call (i.e. hr_itemcount > 1). This will be possible when the first parameter of llapi_hsm_request() changes to an opaque filesystem handle. The kernel code should be prepared for a value != 1, but not necessarily to handle it. lfslfs will have a new command hsm_migrate, in addition to migrate. The command line parameters should be identical for both commands. hsm_migrate will use the HSM infrastructure instead of doing the copy directly. Inside LustreOnce the command reaches the Lustre client, some basic checking should be done: hr_itemcount==1? Checking that the file is indeed a regular should not be performed at this stage to avoid querying the server, unless the information is already known. The request is then forwarded to the MDT. The MDT does extra checks, such as ensuring the file is a regular file, and that the migration command makes sense. For instance no migration should happen if the migrated file would end up in the same place (success should be returned in that case). If a migrate command is already underway for the file, or possibly queued, the new one should be rejected with an error. The HUA_MIGRATE command will be similar to the others; it will timeout eventually, it can be in error, ... The command is then enqueued on the HSM queue, where an agent will pull it. Same as with other commands; no change expected here. Performing the command by the copytoolThe copytool will receive the new command. When it is ready to start, it will call llapi_hsm_action_begin(). The parameters should be similar that those of a restoration since a new temporay volatile file is to be created. The data migration itself should be done with a faily straightforward copy of the code from lfs.c' lfs_migrate(). Or ct_copy_data() could be used, with the addition of the checking of the lease if requested. Once the migration is done, llapi_hsm_action_end() is called, returning success or an error code to the MDT through the usual channel. The copytool will also regularly report to the MDT through the llapi_hsm_action_progress() function, the same as an archiving or restoration operation. These modification will have to be done to the Posix copytool and the TAS Connector. During the migration, on the MDTThe migration really happens between llapi_hsm_action_begin() / llapi_hsm_action_end(). The file should have a new flag HS_MIGRATING returned by lfs hsm_state indicating a migration is under way. It should be set by llapi_hsm_action_begin(), and reset when either the command finishes with llapi_hsm_action_end(), when the command is canceled, or when the command times out. A user should be able to cancel a command using lfs hsm_cancel. If a migrate command is already underway, the new request should be rejected with an error. Reporting to the applicationThe usual reporting mechanism will be used:
| ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 05/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
frank zago (fzago@cray.com) uploaded a new patch: http://review.whamcloud.com/13241 | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 05/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
frank zago (fzago@cray.com) uploaded a new patch: http://review.whamcloud.com/13242 | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 05/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
frank zago (fzago@cray.com) uploaded a new patch: http://review.whamcloud.com/13243 | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 05/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
frank zago (fzago@cray.com) uploaded a new patch: http://review.whamcloud.com/13244 | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 05/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
frank zago (fzago@cray.com) uploaded a new patch: http://review.whamcloud.com/13245 | ||||||||||||||||||||||||||||||||||||
| Comment by Frank Zago (Inactive) [ 05/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
These patches implement a skeleton of the proposal. The work left to do is:
Bugs shared with regular migrate:
| ||||||||||||||||||||||||||||||||||||
| Comment by Andreas Dilger [ 06/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
I'm quite in favour of this feature, since I've long thought that intra-filesystem migration via the policy engine in a great way to implement tiered/heterogeneous storage within Lustre. Some comments on your proposal:
That is intentional, to allow the MDS to space rebalance and defragment files as it sees fit. This uses the same stripe count as the original file, but moves it to (usually) new OSTs. Because the migration is single-threaded, this will typically result in better file allocation. The other question is whether there should be a separate hsm_migrate sub-command, or just an option (-H, or maybe that should be implicit depending on whether HSM is active?) to the migrate sub-command to use a different migration mechanism? The less complex for users, the better. What is still missing for tiered storage to work well is:
| ||||||||||||||||||||||||||||||||||||
| Comment by Aurelien Degremont (Inactive) [ 06/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
I'm also supporting this feature. I think this will be a great improvement for Lustre. (Defaut pool will be the next one)
I'm not sure this should be done this way. This means all copytool should be able to handle internal migration requests. Even if this is easy for the POSIX copytool, some very HSM-specific should only care about migration with the HSM they've been designed for. I think internal migration should have a dedicated Archive ID.
From a code point of view, this makes sense, but from a user point of view, it does not. Regular users will not really understand why, to migrate file inside Lustre they have to deal with HSM... | ||||||||||||||||||||||||||||||||||||
| Comment by Frank Zago (Inactive) [ 06/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
I don't think lfs can automatically select HSM to do the work; there's no way to know the existing copytool supports the migration option. So we'll add a -H option to select HSM migration. We'll add support for the archive_id (-a), which will be valid only if -H is selected. | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 07/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
frank zago (fzago@cray.com) uploaded a new patch: http://review.whamcloud.com/13277 | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 08/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
frank zago (fzago@cray.com) uploaded a new patch: http://review.whamcloud.com/13292 | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 08/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
frank zago (fzago@cray.com) uploaded a new patch: http://review.whamcloud.com/13293 | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 09/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
frank zago (fzago@cray.com) uploaded a new patch: http://review.whamcloud.com/13317 | ||||||||||||||||||||||||||||||||||||
| Comment by Frank Zago (Inactive) [ 09/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
The latest patches should have addressed all the comments. Migration is supported with lfs migrate -H. The archive_id option was added. The help for migrate was added to the lfs man page, with all the new options. A couple more tests were added. The remaining design question is:
| ||||||||||||||||||||||||||||||||||||
| Comment by Frank Zago (Inactive) [ 15/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
Note that this series will need to be adjusted when | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 19/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/13241/ | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 27/Jan/15 ] | ||||||||||||||||||||||||||||||||||||
|
Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/13293/ | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 03/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/13277/ | ||||||||||||||||||||||||||||||||||||
| Comment by Frank Zago (Inactive) [ 04/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
The HSM payload currently contains a binary structure to transfer the stripe information between lfs and the copytool. Is there any objection to using JSON instead? This has no impact on the kernel code because the MDT just relays whatever the payload is. Instead of having struct hsm_migrate_param {
char lsp_pool[LOV_MAXPOOLNAME+1];
__u64 lsp_stripe_size;
__s32 mdt_index;
__s32 lsp_stripe_offset;
__s32 lsp_stripe_pattern;
__u32 lsp_stripe_count;
__u32 lsp_osts_count;
__u32 lsp_osts[0];
};
we would have something like {
"lsp_pool": "poolname",
"lsp_stripe_size": 1024,
"mdt_index": -1,
....
"lsp_osts": [
0,
1,
2,
3,
4,
5
]
}
This will allow to add extra fields later if needed, or proprietary fields. | ||||||||||||||||||||||||||||||||||||
| Comment by Robert Read (Inactive) [ 04/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
No objections from me, JSON seems like a good choice. Is there a maximum size for data payload? | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 04/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
frank zago (fzago@cray.com) uploaded a new patch: http://review.whamcloud.com/13654 | ||||||||||||||||||||||||||||||||||||
| Comment by Frank Zago (Inactive) [ 05/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
After testing, the payload size is 1649 bytes. That's not enough for large filesystems, with potentially thousands of OSTs. /* Final size will be more than double totalsize */ if (totalsize >= MDS_MAXREQSIZE / 3) RETURN(-E2BIG); | ||||||||||||||||||||||||||||||||||||
| Comment by Robert Read (Inactive) [ 05/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
In theory that's what pools are for, but, yeah, this is not great. | ||||||||||||||||||||||||||||||||||||
| Comment by Frank Zago (Inactive) [ 05/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
With the following format: {"lsp":{"pool":"poolname","stripe_size":1024,"stripe_offset":0,"stripe_pattern":1,"stripe_count":3,"osts":[0,1,2,3,4]},"mdt_index": -1}
it is possible to encode 400 OSTs up to 3 numbers, or 300 OSTs up to 4 numbers, or 250 OSTs up to 5 numbers. Would that be a reasonable limitation? With the binary format in current patch, it is possible to encode 401 OSTs (if each OST is encoded by 32 bits) or 802 OSTS (if each OST is encoded by 16 bits). Also, there is no JSON decoder available in Lustre. I've used this implementation (http://ccodearchive.net/info/json.html) in the past, and I could integrate it into Lustre (replacing the existing partial implementation). It's license is GPL/LGPL compatible. | ||||||||||||||||||||||||||||||||||||
| Comment by Michael MacDonald (Inactive) [ 06/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
FWIW, I looked at Jansson a while ago. It's MIT-licensed, seems mature, and seems to be actively maintained. I would have preferred to use it when I added the JSON event emitter to liblustreapi_hsm, but at the time I was concerned that it would increase friction and slow down acceptance of my patch. | ||||||||||||||||||||||||||||||||||||
| Comment by Frank Zago (Inactive) [ 06/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
Thanks Michael. I compared several free JSON C libraries a year and a half ago, and decided against jansson. While the doc is nice and the API is complete, it was about 3 times slower in decoding a file than the CCAN implementation. I don't recall the exact numbers, but it was something like 30000/s vs 100000/s for a 200 or 300 bytes JSON string. | ||||||||||||||||||||||||||||||||||||
| Comment by Andreas Dilger [ 08/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
What about the libyaml parser that was added for DLC (as an external dependency rather than a wholesale inclusion, which people didn't like). I'd rather not have multiple parsers or dependencies for Lustre+LNet. | ||||||||||||||||||||||||||||||||||||
| Comment by Frank Zago (Inactive) [ 10/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
The cYAML parser is very limited. It only supports a limited subset of YAML (see for instance the hack done for | ||||||||||||||||||||||||||||||||||||
| Comment by Christopher Morrone [ 10/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
I don't think that Andreas was talking about cyaml. cyaml isn't a parser, it is just some kind of wrapper around libyaml. I think you are completely free to avoid cyaml and use libyaml directly. | ||||||||||||||||||||||||||||||||||||
| Comment by Frank Zago (Inactive) [ 10/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
libyaml is just a tokenizer. It doesn't build a data structure for you, which is why cYAML was added (I think). I tried to expand it for a while, but I started running into trouble when adding nested arrays. | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 11/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
frank zago (fzago@cray.com) uploaded a new patch: http://review.whamcloud.com/13723 | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 11/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
frank zago (fzago@cray.com) uploaded a new patch: http://review.whamcloud.com/13724 | ||||||||||||||||||||||||||||||||||||
| Comment by Frank Zago (Inactive) [ 11/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
The above 2 patches add the CCAN JSON parser. The first one is just the code copied as-is, and the second integrates it into Lustre, with some cleanups. Both could be merged if history doesn't matter. I left out the small test suite because it uses the CCAN test package. If this JSON implementation is acceptable, I can integrate the tests with some changes. The posix copytool has been changed to use that API. | ||||||||||||||||||||||||||||||||||||
| Comment by Christopher Morrone [ 11/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
A static data structure representation is not required for something to be a parser. libyaml is an event based parser. Depending on the data that interests you, the intermediate step that cYAML introduces could be wasteful. It could be better to convert directly to the data structures that work for your application. | ||||||||||||||||||||||||||||||||||||
| Comment by Frank Zago (Inactive) [ 11/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
libyaml doesn't guarantee that the input was yaml. So that is something that a user has to do. Which means build a state machine, debug it, test it, ... That's what's been done with cYAML. Using libyaml directly to parse the structures above would take way too many lines of code I think, and wouldn't be reusable. | ||||||||||||||||||||||||||||||||||||
| Comment by Andreas Dilger [ 11/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
Is it possible to replace liblustreapi_json.c with the CCAN JSON code? Is it possible to replace the DLC libyaml usage with CCAN JSON? What I don't want is 3 different implementations of nearly the same functionality. | ||||||||||||||||||||||||||||||||||||
| Comment by Michael MacDonald (Inactive) [ 11/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
My $0.02, for whatever it's worth: I think that both JSON and YAML could have their places in Lustre. As a data exchange format, YAML is kind of cumbersome. Not nearly as bad as XML, of course, but JSON is the de facto standard for data exchange in modern software, and many higher-level languages have good support for it right in their standard libraries (e.g. Go, Javascript, etc.), or easily-added external libraries. As a data representation format, on the other hand, YAML is quite nice in that it's easily comprehensible by humans and computers. I do understand the desire to keep things simple and just choose one format to rule them all, but I think a well thought out set of conventions should help us arrive at nearly the same place. My proposal: All that having been said, there don't appear to be any YAML 1.2-compliant C libraries. Version 1.2 of the spec purports to bring YAML into alignment as a proper superset of JSON, such that a compliant library should be able to parse both YAML and JSON. I agree that replacing liblustreapi_json.c with CCAN JSON makes sense. I do think it would be good to retain the unit tests for that CCAN JSON and integrate them into the regular Lustre test suite, though. I don't agree that changing DLC over to JSON necessarily makes sense, if the goal is to retain the ability for humans to easily write the configuration files. There are newer /proc entries that are YAML-formatted as well. To my mind, these seem like good places to keep YAML's human-friendly formatting. On the other hand, if there is a shift towards configuration by tools, then maybe JSON is the best format going forward. Maybe there will eventually be a good YAML 1.2 library that can replace libyaml and CCAN JSON (having a solid set of lustre-specific tests in place to ensure it works the same would be critical), but until then it doesn't seem like a huge deal to have them both. | ||||||||||||||||||||||||||||||||||||
| Comment by Frank Zago (Inactive) [ 11/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
I agree with Michael. JSON is perfect for data exchange and YAML for user config files. Both can live in parallel. I will update the patch to replace liblustreapi_json.c and integrate the testsuite. I think the JSON API in Lustre should become private too, for it is not Lustre's job to provide a JSON API. May be it should be available as a static library for the Lustre tools that need it, and that's it. | ||||||||||||||||||||||||||||||||||||
| Comment by Andreas Dilger [ 11/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
And what is the general consensus of including CCAN JSON code directly into Lustre? When we proposed to do the same thing with libyaml to avoid external dependencies, this was loudly rejected, yet I don't know what the availability of CCAN JSON as an external library dependency is. If the decision is for CCAN JSON to be included, it should definitely be in the form of an initial import as an unmodified library, with a clear indication of the source version (e.g. git commit hash and version number) in a README.CCAN_JSON file (or similar) in the directory, and then one or more additional patches to integrate it into Lustre as needed. That would allow importing an updated version of the library in the future and re-applying the patches, or otherwise generating a list of updates from the original source library to include later updates. We'll also need to make sure the licensing is OK. | ||||||||||||||||||||||||||||||||||||
| Comment by Andreas Dilger [ 11/Feb/15 ] | ||||||||||||||||||||||||||||||||||||
|
It probably makes sense to move this discussion to a separate bug, since the HSM migrate support patches are already landed to master for 2.7 and this is a feature beyond the scope of 2.7. | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 26/Mar/15 ] | ||||||||||||||||||||||||||||||||||||
|
Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/13654/ | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 27/Mar/15 ] | ||||||||||||||||||||||||||||||||||||
|
Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/13317/ | ||||||||||||||||||||||||||||||||||||
| Comment by Nathan Rutman [ 30/Nov/17 ] | ||||||||||||||||||||||||||||||||||||
|
Why is this still open if landed in 2.7? | ||||||||||||||||||||||||||||||||||||
| Comment by James A Simmons [ 30/Nov/17 ] | ||||||||||||||||||||||||||||||||||||
|
Not all of it landed | ||||||||||||||||||||||||||||||||||||
| Comment by Nathan Rutman [ 01/Dec/17 ] | ||||||||||||||||||||||||||||||||||||
|
To move this forward again, can I propose:
| ||||||||||||||||||||||||||||||||||||
| Comment by James A Simmons [ 01/Dec/17 ] | ||||||||||||||||||||||||||||||||||||
|
No it has been requested that everything be moved over to libyaml internally. See LU-9897 for details. JSON can be handled by libyaml so all JSON specific additional code shall be purged with prejudice. | ||||||||||||||||||||||||||||||||||||
| Comment by James A Simmons [ 02/Feb/18 ] | ||||||||||||||||||||||||||||||||||||
|
Now that luistre libraries are sane its time to come back to this work. Are people still interested in this? | ||||||||||||||||||||||||||||||||||||
| Comment by Nathan Rutman [ 02/Feb/18 ] | ||||||||||||||||||||||||||||||||||||
|
Yes, I think this enhancement makes a ton of sense. What needs to be done to help this land? | ||||||||||||||||||||||||||||||||||||
| Comment by Nathan Rutman [ 02/Feb/18 ] | ||||||||||||||||||||||||||||||||||||
|
While I don't advocate delaying this patch for it, I will ask the question: shouldn't we use the lfs side to set up the target striping, and let the copytool read it out of the target, rather than passing the stripe info through the HSM request? | ||||||||||||||||||||||||||||||||||||
| Comment by Jean-Baptiste Riaux (Inactive) [ 28/Mar/18 ] | ||||||||||||||||||||||||||||||||||||
|
I see some thing moving here. Last state of the patches (today) to get a clear view:
So only review 13442 and 13243 remain. 13242 was refreshed last week.
| ||||||||||||||||||||||||||||||||||||
| Comment by James A Simmons [ 03/May/18 ] | ||||||||||||||||||||||||||||||||||||
|
Patch 13243 depends on a new JSON parser. It was agreed on that the liblustre_json.c code should be rewritten to use libyaml. | ||||||||||||||||||||||||||||||||||||
| Comment by Cory Spitz [ 06/Jun/18 ] | ||||||||||||||||||||||||||||||||||||
|
http://review.whamcloud.com/13242 appears ready to land. Is it? | ||||||||||||||||||||||||||||||||||||
| Comment by Gerrit Updater [ 05/Oct/18 ] | ||||||||||||||||||||||||||||||||||||
|
Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/13242/ | ||||||||||||||||||||||||||||||||||||
| Comment by Nathan Rutman [ 28/Jan/20 ] | ||||||||||||||||||||||||||||||||||||
|
Marked as "merged" - is this landed? Fix version? | ||||||||||||||||||||||||||||||||||||
| Comment by James A Simmons [ 28/Jan/20 ] | ||||||||||||||||||||||||||||||||||||
|
No has been put on the back burner. Andreas recommend that instead of using HSM as the backend for migration that we use FLR mirroring instead. This is being discussed on the lustreclient slack channel. | ||||||||||||||||||||||||||||||||||||
| Comment by Cory Spitz [ 30/Jan/20 ] | ||||||||||||||||||||||||||||||||||||
|
nangelinas, do you have an opinion about how to wrap this up? We now have the patches for FLR mirroring as with LU-12890. | ||||||||||||||||||||||||||||||||||||
| Comment by Nikitas Angelinas [ 31/Jan/20 ] | ||||||||||||||||||||||||||||||||||||
|
@Cory Spitz, if we were to follow the suggestion by Andreas, I believe we would have to change migrate to use FLR mirrors and work on landing LU-12890. I don't have a clear understanding of what this would involve yet, but Andreas mentioned in https://review.whamcloud.com/#/c/13243/29/lustre/utils/lhsmtool_posix.c@1392 that this should be done via "mirror extend" and "mirror split -d". @Andreas Dilger, do you think we should work on integrating migrate with FLR mirrors at this point, or could we try to land the remaining patch for this ticket (http://review.whamcloud.com/13243) and work on integrating FLR in a separate patch? | ||||||||||||||||||||||||||||||||||||
| Comment by Andreas Dilger [ 31/Jan/20 ] | ||||||||||||||||||||||||||||||||||||
|
I can't find the specific comment you are referring to, but I don't think we need to implement all migration via mirroring right now. I think my suggestion is that if we are implementing an interface to send "data movement" commands to HSM agent nodes, then it needs to be generic enough to allow both migrate, mirror, and resync operations. | ||||||||||||||||||||||||||||||||||||
| Comment by Nathan Rutman [ 12/Apr/21 ] | ||||||||||||||||||||||||||||||||||||
The mirror op is addressed in LU-12890, which in turn is blocked on this one. So iiuc we should land them both? |