diff --git a/source/RobotAPI/libraries/armem/server/ltm/detail/mixins/DiskStorageMixin.cpp b/source/RobotAPI/libraries/armem/server/ltm/detail/mixins/DiskStorageMixin.cpp
index 83f1e87f6aa53e9dd56891eaf8d05bb88b719d75..52e563378fa14a12f9dfacd6bb87418227a770a2 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/detail/mixins/DiskStorageMixin.cpp
+++ b/source/RobotAPI/libraries/armem/server/ltm/detail/mixins/DiskStorageMixin.cpp
@@ -144,12 +144,62 @@ namespace armarx::armem::server::ltm::detail::mixin
         util::fs::ensureFileExists(p, createIfNotExistent);
     }
 
+    bool
+    DiskMemoryItemMixin::enoughDiskSpaceLeft() const
+    {
+        std::string path_to_disk = "/dev/mapper/ubuntu--vg-root\\";
+
+        if (std::filesystem::exists(path_to_disk))
+        {
+            try
+            {
+                auto space_info = std::filesystem::space(path_to_disk);
+                int const conversion_factor = 1024;
+
+                auto available_space = space_info.available /
+                                       (conversion_factor * conversion_factor * conversion_factor);
+                ARMARX_DEBUG << "Capacity: "
+                             << space_info.capacity /
+                                    (conversion_factor * conversion_factor * conversion_factor)
+                             << " GB\n";
+                ARMARX_DEBUG << "Free space: "
+                             << space_info.free /
+                                    (conversion_factor * conversion_factor * conversion_factor)
+                             << " GB\n";
+                ARMARX_DEBUG << "Available space: "
+                             << space_info.available /
+                                    (conversion_factor * conversion_factor * conversion_factor)
+                             << " GB\n";
+
+                return static_cast<bool>(available_space >= 50);
+            }
+            catch (const std::filesystem::filesystem_error& e)
+            {
+                ARMARX_WARNING << "Error: " << e.what() << '\n';
+                return false;
+            }
+        }
+        else
+        {
+            ARMARX_DEBUG << "Cannot find path to disk and thus cannot check if enough space is "
+                            "still available";
+            return true;
+        }
+    }
+
     void
     DiskMemoryItemMixin::writeDataToFile(const std::string& filename,
                                          const std::vector<unsigned char>& data) const
     {
-        auto p = getFullPath() / filename;
-        util::fs::writeDataToFile(p, data);
+        if (enoughDiskSpaceLeft())
+        {
+            auto p = getFullPath() / filename;
+            util::fs::writeDataToFile(p, data);
+        }
+        else
+        {
+            ARMARX_DEBUG << "Canot store snapshot as not enough disk space available";
+        }
     }
 
     std::vector<unsigned char>
diff --git a/source/RobotAPI/libraries/armem/server/ltm/detail/mixins/DiskStorageMixin.h b/source/RobotAPI/libraries/armem/server/ltm/detail/mixins/DiskStorageMixin.h
index bf02aa5dfdae044416a0d15e91cbdf18f6b1dd83..96962ea213ef091d4214c3ce51202b0cd834009e 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/detail/mixins/DiskStorageMixin.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/detail/mixins/DiskStorageMixin.h
@@ -32,6 +32,7 @@ namespace armarx::armem::server::ltm::detail::mixin
         bool memoryBasePathExists() const;
         bool fullPathExists() const;
         bool fileExists(const std::string& filename) const;
+        bool enoughDiskSpaceLeft() const;
 
         void ensureMemoryBasePathExists(bool createIfNotExistent = false) const;
         void ensureFullPathExists(bool createIfNotExistent = false) const;
@@ -72,6 +73,7 @@ namespace armarx::armem::server::ltm::detail::mixin
     private:
         std::filesystem::path memoryBasePath;
         std::string memoryBasePathString;
+        std::string pathToHome;
         std::string exportName;
         armem::MemoryID _id;
     };