smartpools file policy with 'directory' type criteria
Hello,
I would like to hear if anyone has tried creating SmartPools file policy using the 'directory' file type filter criteria.
I would like to run a smartpools job so that it will set all directories under /ifs/data , and only directories, to store NEW files on a specific node pool. I don't want to have SmartPools move existing files because there are over 1Billion files and that will take forever (in fact it is running for weeks now and not making any progress). I only want the NEW files to be created in a specified new node pool.
So will using a the 'directory' file type help set the node pool target of all directories under /ifs/data and create new files in that pool?
The 'directory' file type rules are very efficient, because they don't rely on filename/attribute matching, but affected directories store within their own metadata the rule for new files.
Therefore, for this becoming effective, each directory in question must be UPDATED once AFTER the SmartPools rule has been set. Took me a roundtrip to support to get this clear the other day; I think it's now better documented.
Normally the full SmartPools job does it... but you a seeking to avoid exactly this.
You can use
isi smartpools apply /PATH/TO/DIRECTORY
instead -- very fast -- but need to be applied to every single directory in turn...
I am actually not looking to avoid running a full smartpools job just to confirm what you have said below - 'directory' type based rule are effective in marking the directory meta-data to create new files in the set target directory.
in fact 'directory' based rules are different from other rules (file name, size, attributes etc) insofar as they can be applied to newly created files at the very moment of file creation rather than later 'offline'. However this does NOT happen by matching each new file's full pathname to the rules, but instead the file's immediate owner directory is consulted.
This difference is very important.
It means that this directory must have been actively 'prepared' to 'carry' the rule with it before files are created. The preparation is done by either the SmartPools job, or the 'isi smart pools apply' command.
The latter is also a fantastic tool for trying out new SmartPool rules on a smaller set of dirs/files, and it's also valuable for 'fire fighting' in case the regular SmartPools jobs cannot cope with the amount of incoming data.
(E.g. you can check with 'isi statistics heat -nall --classes=create' where new files a being generated, and run the 'apply' command just there.)
Can you do me a favor and send the number of disks in your pools (or number of nodes plus node types), and wether metadata is on SSD? I'm testing a simple hypothesis on OneFS behavior...
I fully agree with your feedback. A key point I want to iterate. I am considering not a straigth forward path based 'directory' rule but a rule which includes BOTH directory path AND a 'directory file type' in the filter criteria.
My goal is to take an EXISTING directory and only mark the directory objects because I want to avoid moving the hundreds of millions of files themselves. I want to tell the cluster to START putting NEW files (only) in the new disk pool target and ignore and therefore bypass moving the EXISTING files.
I am doing this because I have a cluster with 8 NL400 nodes and 4 X200 nodes and NO SSD. This is ARCHIVE ONLY environment with 1Billion files. I want to run a single smartpools job so that new data will be created on NL400 only.
After this job will finish (faster because it it avoid moving actual files) I will have all NEW data created on NL400. That is my goal.
Peter_Sero
6 Operator
•
1169 Posts
801
0
Posted September 26th, 2013 02:00
The 'directory' file type rules are very efficient, because they don't rely on filename/attribute matching, but affected directories store within their own metadata the rule for new files.
Therefore, for this becoming effective, each directory in question must be UPDATED once AFTER the SmartPools rule has been set. Took me a roundtrip to support to get this clear the other day; I think it's now better documented.
Normally the full SmartPools job does it... but you a seeking to avoid exactly this.
You can use
isi smartpools apply /PATH/TO/DIRECTORY
instead -- very fast -- but need to be applied to every single directory in turn...
You can also try out
isi smartpools apply --recurse --dont-restripe /ifs/data
and see wether it is more efficient than a crafted find-apply script.
Either approach you can split to sub-sub-dirs and run in parallel on multiple nodes.
(How many disks are there in the cluster, and with or w/o metadata on SSD?)
-- Peter