Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ensure destination directory exists + handle index mount directories #167

Merged
merged 3 commits into from
Apr 11, 2024

Conversation

bdevcich
Copy link
Contributor

@bdevcich bdevcich commented Apr 8, 2024

This change un-reverts PR #161 with a couple twists: account for index mount directories and use mpirun to perform the actions.

Logic was added to prepare the destination directory by performing a mkdir -p on the user supplied destination. This logic ensures that the correct pathing is performed by determining the filetype (dir vs file) on both the source and destination paths. In addition to the supplied destination path, if the source filesystem is determined to have index mount directories (i.e. xfs/gfs2), those directories are created on the destination path to ensure that all data is retained.

  • All necessary filesystem interaction is ran through mpirun so that the proper mpi worker nodes are used to prepare the destination. This required for lustre2lustre data movement.
  • These file system interactions (i.e. stat, mkdir) are performed through setpriv to ensure that all interactions are done as the supplied UID/GID (from the workflow).
  • The hostfile createion logic now standsalone since these new mpirun calls need the hostfile before the final data movement command is built
  • Added in some local system calls when using unit tests since mpirun is not available in textenv

Tested via https://github.com/bdevcich/dm-system-test

This change un-reverts PR #161 with a couple twists: account for index
mount directories and use mpirun to perform the actions.

Logic was added to prepare the destination directory by performing a
`mkdir -p` on the user supplied destination. This logic ensures that the
correct pathing is performed by determining the filetype (dir vs file)
on both the source and destination paths. In addition to the supplied
destination path, if the source filesystem is determined to have index
mount directories (i.e. xfs/gfs2), those directories are created on the
destination path to ensure that all data is retained.

- All necessary filesystem interaction is ran through mpirun so that the
  proper mpi worker nodes are used to prepare the destination. This
  required for lustre2lustre data movement.
- These file system interactions (i.e. `stat`, `mkdir`) are performed
  through `setpriv` to ensure that all interactions are done as the
  supplied UID/GID (from the workflow).
- The hostfile createion logic now standsalone since these new mpirun
  calls need the hostfile before the final data movement command is
  built
- Added in some local system calls when using unit tests since mpirun is
  not available in textenv

Signed-off-by: Blake Devcich <blake.devcich@hpe.com>
Signed-off-by: Blake Devcich <blake.devcich@hpe.com>
Signed-off-by: Blake Devcich <blake.devcich@hpe.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Data Movement: different behavior when destination directories do not exist
2 participants