Details
-
Technical task
-
Resolution: Unresolved
-
Minor
-
None
-
None
-
None
-
9223372036854775807
Description
If there is a "kept" file on PCC, but the file was modified in Lustre after data restore, then we need to ensure that the stale PCC copy is removed from cache.
Usually there is a daemon running on the PCC client, monitoring the space usage of the PCC device, scanning the PCC device, doing some actions accordingly, which can be used to remove this kind of PCC copies.
We could add some lctl pcc commands or llapi interface as follows:
- lctl pcc clean $MNTPT $PCCPATH
The command above can be used to clean up the stale invalid PCC copies out from PCC to free up space. - lctl pcc uncache $MNTPT $PCCPATH
This command will restore all data back to Lustre OSTs, and then remove the PCC copies, similar with lctl pcc del, but does not delete the PCC backend from the client. - lctl pcc revalidate $MNTPT $PCCPATH
This command will try to attach the PCC copies again if it is still valid.
First, if the Layout generation is consistent, we can attach it directly;
Otherwise, compare the data version between the value in HSM attrs and the one of the file in Lustre, if they are same, we can also revalidate the PCC cache.
I was thinking about patch https://review.whamcloud.com/35230 "LU-12373 pcc: uncache the pcc copies when remove a PCC backend" to prevent the PCC cache filesystem from holding dirty files.
I think we are still a long way away from disconnected client operations like CODA/Intermezzo. I'm not against that at some point in the future (I actually worked on Intermezzo to have disconnected clients at the same time I first worked on Lustre) but we have to have our cache file management/resync much better than it is today before this would be practical to deploy.