diff --git a/CMakeLists.txt b/CMakeLists.txt
index c777a6a..3965851 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -792,6 +792,7 @@
                         glog
                         quickstep_catalog_CatalogRelation
                         quickstep_cli_Constants
+                        quickstep_cli_DefaultsConfigurator
                         quickstep_cli_Flags
                         quickstep_cli_LineReader
                         quickstep_cli_PrintToScreen
diff --git a/cli/DefaultsConfigurator.cpp b/cli/DefaultsConfigurator.cpp
index 21b0af6..0e1f64c 100644
--- a/cli/DefaultsConfigurator.cpp
+++ b/cli/DefaultsConfigurator.cpp
@@ -41,10 +41,7 @@
 
 namespace quickstep {
 
-void DefaultsConfigurator::InitializeDefaultDatabase(const string &storage_path, const string &catalog_path) {
-  // TODO(jmp): Refactor the code in this file!
-  LOG(INFO) << "Initializing the database, creating a new catalog file and storage directory";
-
+void DefaultsConfigurator::CreateDirectory(const std::string &storage_path) {
   // Create the directory
   // TODO(jmp): At some point, likely in C++-17, we will just have the
   //            filesystem path, and we can clean this up
@@ -54,11 +51,18 @@
       << "\nCheck if the directory already exists. If so, delete it or move it before initializing";
 #else
   {
-    const string path_name = "mkdir " + storage_path;
+    const string path_name = "mkdir -p " + storage_path;
     CHECK(!std::system(path_name.c_str()))
          << "Failed when attempting to create the directory: " << storage_path;
   }
 #endif  // QUICKSTEP_OS_WINDOWS
+}
+
+void DefaultsConfigurator::InitializeDefaultDatabase(const string &storage_path, const string &catalog_path) {
+  // TODO(jmp): Refactor the code in this file!
+  LOG(INFO) << "Initializing the database, creating a new catalog file and storage directory";
+
+  CreateDirectory(storage_path);
 
   // Create the default catalog file.
   std::ofstream catalog_file(catalog_path.c_str());
diff --git a/cli/DefaultsConfigurator.hpp b/cli/DefaultsConfigurator.hpp
index 4b534d6..28d84b8 100644
--- a/cli/DefaultsConfigurator.hpp
+++ b/cli/DefaultsConfigurator.hpp
@@ -116,6 +116,13 @@
   static void InitializeDefaultDatabase(const std::string &storage_path,
                                         const std::string &catalog_path);
 
+  /**
+   * @brief Create the directory.
+   *
+   * @param storage_path The filesystem directory for StorageManager.
+   **/
+  static void CreateDirectory(const std::string &storage_path);
+
  private:
   /**
    * @brief Private constructor to disable instantiation of the class.
diff --git a/cli/distributed/CMakeLists.txt b/cli/distributed/CMakeLists.txt
index 6a31895..93d3b5e 100644
--- a/cli/distributed/CMakeLists.txt
+++ b/cli/distributed/CMakeLists.txt
@@ -55,6 +55,7 @@
 target_link_libraries(quickstep_cli_distributed_Executor
                       glog
                       quickstep_catalog_CatalogTypedefs
+                      quickstep_cli_DefaultsConfigurator
                       quickstep_cli_Flags
                       quickstep_cli_InputParserUtil
                       quickstep_cli_distributed_Role
diff --git a/cli/distributed/Cli.cpp b/cli/distributed/Cli.cpp
index 9f48ecc..665ab9b 100644
--- a/cli/distributed/Cli.cpp
+++ b/cli/distributed/Cli.cpp
@@ -31,6 +31,7 @@
 #include "catalog/CatalogRelation.hpp"
 #include "cli/CliConfig.h"  // For QUICKSTEP_USE_LINENOISE.
 #include "cli/Constants.hpp"
+#include "cli/DefaultsConfigurator.hpp"
 #include "cli/Flags.hpp"
 
 #ifdef QUICKSTEP_USE_LINENOISE
@@ -112,6 +113,8 @@
   bus_.RegisterClientAsSender(cli_id_, kBlockDomainRegistrationMessage);
   bus_.RegisterClientAsReceiver(cli_id_, kBlockDomainRegistrationResponseMessage);
 
+  DefaultsConfigurator::CreateDirectory(FLAGS_storage_path);
+
   client_id locator_client_id;
   storage_manager_ = make_unique<StorageManager>(
       FLAGS_storage_path,
diff --git a/cli/distributed/Executor.cpp b/cli/distributed/Executor.cpp
index 4ca5693..d8e63ce 100644
--- a/cli/distributed/Executor.cpp
+++ b/cli/distributed/Executor.cpp
@@ -24,6 +24,7 @@
 #include <vector>
 
 #include "catalog/CatalogTypedefs.hpp"
+#include "cli/DefaultsConfigurator.hpp"
 #include "cli/Flags.hpp"
 #include "cli/InputParserUtil.hpp"
 #include "query_execution/BlockLocatorUtil.hpp"
@@ -76,6 +77,8 @@
   worker_directory_ =
       make_unique<WorkerDirectory>(worker_client_ids.size(), worker_client_ids, worker_numa_nodes);
 
+  DefaultsConfigurator::CreateDirectory(FLAGS_storage_path);
+
   client_id locator_client_id;
   storage_manager_ = make_unique<StorageManager>(
       FLAGS_storage_path,
