Details
-
Bug
-
Resolution: Unresolved
-
Minor
-
None
-
Lustre 2.15.0
-
None
-
3
-
9223372036854775807
Description
When a new MDT is added to a filesystem without no_create then the DNE MDT auto-balance is enabled, then a new subdirectory could be created on the new MDT relatively quickly after it is added to the filesystem. However, it might take a few seconds for the addition of the new MDT to be propagated across all of the clients, so there is a small risk that an MDT is holding a subdirectory that another client is not yet aware of.
I think there are two relatively simple solutions to this:
- don't consider a new MDT for subdirectory creation for, say, 30s after it appears in the config, to give other clients a chance to discover it
- if a new MDT is used for a subdirectory that is not in the config, then the client should pull the config from the MGS to see if it was newly added.
The similar situation exists with new OSTs added to an existing files, where the MDS is notified about an OST addition and allocates an object to a file, but the client has not yet been notified about the new OST and will return an error accessing the file. The solution in this case is the same - avoiding to use a new OST for object allocation for ~30s after the OST is added, and similarly for clients to pull the config from the MGS to see if the OST was newly added.
This ticket is tracking the first issue - don't create new subdirs/files/objects on newly-added targets. LU-17344 is separately tracking the client more gracefully handling the presence of subdirs/files/objects on an MDT or OST that it doesn't know about.
Attachments
Issue Links
- is cloned by
-
LU-17334 Client should handle dir/file/object created on newly added MDT/OST
-
- Resolved
-
- is related to
-
LU-17327 Write conf-santity test case for online OST and MDT addition
-
- Open
-
- is related to
-
LU-14792 DNE3: enable filesystem-wide default LMV
-
- Resolved
-
-
LU-12036 Add 'no_create' mount option to create new OSTs inactive
-
- Resolved
-
-
LU-12998 DNE3: tunable to disable directory creation on MDT
-
- Resolved
-
-
LU-13417 DNE3: mkdir() automatically create remote directory on MDS which has more space
-
- Resolved
-
-
LU-10784 DNE3: mkdir() automatically create remote directory on MDS which has more space
-
- Resolved
-
Activity
Link | New: This issue is related to DOE-70 [ DOE-70 ] |
Link | New: This issue is related to LR-11 [ LR-11 ] |
Summary | Original: Avoid new dir/file/object on newly added MDT/OST | New: Avoid creating new dir/file/object on newly added MDT/OST |
Description |
Original:
When a new MDT is added to a filesystem without {{no_create}} then the DNE MDT auto-balance is enabled, then a new subdirectory could be created on the new MDT relatively quickly after it is added to the filesystem. However, it might take a few seconds for the addition of the new MDT to be propagated across all of the clients, so there is a small risk that an MDT is holding a subdirectory that another client is not yet aware of.
I think there are two relatively simple solutions to this: - don't consider a new MDT for subdirectory creation for, say, 30s after it appears in the config, to give other clients a chance to discover it - if a new MDT is used for a subdirectory that is not in the config, then the client should pull the config from the MGS to see if it was newly added. The similar situation exists with new OSTs added to an existing files, where the MDS is notified about an OST addition and allocates an object to a file, but the client has not yet been notified about the new OST and will return an error accessing the file. The solution in this case is the same - avoiding to use a new OST for object allocation for ~30s after the OST is added, and similarly for clients to pull the config from the MGS to see if the OST was newly added. |
New:
When a new MDT is added to a filesystem without {{no_create}} then the DNE MDT auto-balance is enabled, then a new subdirectory could be created on the new MDT relatively quickly after it is added to the filesystem. However, it might take a few seconds for the addition of the new MDT to be propagated across all of the clients, so there is a small risk that an MDT is holding a subdirectory that another client is not yet aware of.
I think there are two relatively simple solutions to this: - don't consider a new MDT for subdirectory creation for, say, 30s after it appears in the config, to give other clients a chance to discover it - if a new MDT is used for a subdirectory that is not in the config, then the client should pull the config from the MGS to see if it was newly added. The similar situation exists with new OSTs added to an existing files, where the MDS is notified about an OST addition and allocates an object to a file, but the client has not yet been notified about the new OST and will return an error accessing the file. The solution in this case is the same - avoiding to use a new OST for object allocation for ~30s after the OST is added, and similarly for clients to pull the config from the MGS to see if the OST was newly added. This ticket is tracking the first issue - don't create new subdirs/files/objects on newly-added targets. |
Summary | Original: Avoid and/or handle new dir/file/object on newly added MDT/OST | New: Avoid new dir/file/object on newly added MDT/OST |
Link | New: This issue is related to EX-8750 [ EX-8750 ] |
A very simple solution here would be for newly-formatted MDTs and OSTs to just set no_create=1 automatically on detecting this is the first mount? If "-o no_create" was passed as a mount option, then this would stay set indefinitely (on the assumption that the admin knows to deactivate it manually when they are ready). If no mount option was used, then a delayed work item would set no_create=0 automatically 60s after mount was completed.
For most "real" filesystems this initial 60s delay before new files can be created on the OSTs would be a non-issue. This might slow down some testing for e.g. conf-sanity which is formatting mounting a lot of new filesystems, but it could also be cleared by test-framework.sh immediately after mount to avoid this delay.