diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1b17823566d5f878c2549dce761ed8d9233480c0..6a99f6b4df5008e9d9d6734ecb6dae6dd396ba10 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -139,7 +139,7 @@ ELSE(DEFINED PackageOnly)
 
   add_subdirectory(catalogue)
   add_subdirectory(common)
-  add_subdirectory(eos)
+  add_subdirectory(disk)
   add_subdirectory(mediachanger)
   add_subdirectory(objectstore)
   add_subdirectory(python)
diff --git a/cta.spec.in b/cta.spec.in
index 4a7933ec1ef15948ed17d91a4692aafc8b49830c..0b7a6e073b9b56e73bedc8618d8b7e9e1daa431b 100644
--- a/cta.spec.in
+++ b/cta.spec.in
@@ -246,6 +246,7 @@ The shared libraries
 %{_libdir}/libctamessagesutils.so*
 %{_libdir}/libctardbms.so*
 %{_libdir}/libctardbmswrapper.so*
+%{_libdir}/libdisk.so*
 %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-catalogue.conf.example
 
 #CTA-lib installs libraries so we need ldconfig.
diff --git a/eos/CMakeLists.txt b/disk/CMakeLists.txt
similarity index 57%
rename from eos/CMakeLists.txt
rename to disk/CMakeLists.txt
index 3a9e4224214e08e889c57d4633aa9288a7a33437..e0b0891f8b93de8bdd20a45534e7f06381bae566 100644
--- a/eos/CMakeLists.txt
+++ b/disk/CMakeLists.txt
@@ -16,11 +16,30 @@
 
 cmake_minimum_required (VERSION 2.6)
 
+find_package (xrootd REQUIRED)
 find_package (xrootdclient REQUIRED)
+
 include_directories (${XROOTD_INCLUDE_DIR} ${CMAKE_SOURCE_DIR})
 
-add_library (ctaeos
+add_library(disk SHARED
   DiskReporter.cpp
   DiskReporterFactory.cpp
-  EOSReporter.cpp)
+  EOSReporter.cpp
+  DiskFile.cpp
+  RadosStriperPool.cpp
+)
+
+target_link_libraries (disk XrdCl cryptopp radosstriper)
+
+set_property(TARGET disk PROPERTY SOVERSION "${CTA_SOVERSION}")
+set_property(TARGET disk PROPERTY   VERSION "${CTA_LIBVERSION}")
+
+add_library(ctadiskunittests SHARED
+  CryptoPPTest.cpp
+)
+
+set_property(TARGET ctadiskunittests PROPERTY SOVERSION "${CTA_SOVERSION}")
+set_property(TARGET ctadiskunittests PROPERTY   VERSION "${CTA_LIBVERSION}")
 
+install(TARGETS disk DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
+install(TARGETS ctadiskunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
\ No newline at end of file
diff --git a/tapeserver/castor/tape/tapeserver/file/CryptoPPTest.cpp b/disk/CryptoPPTest.cpp
similarity index 98%
rename from tapeserver/castor/tape/tapeserver/file/CryptoPPTest.cpp
rename to disk/CryptoPPTest.cpp
index 7ab487297746d230849963f215cce59de9e4c622..b138ab44106c52dfb701a5c06bd6fb35580ae58b 100644
--- a/tapeserver/castor/tape/tapeserver/file/CryptoPPTest.cpp
+++ b/disk/CryptoPPTest.cpp
@@ -23,9 +23,9 @@
 
 #include <gtest/gtest.h>
 #include "common/threading/Thread.hpp"
-#include "castor/tape/tapeserver/file/DiskFileImplementations.hpp"
-#include "castor/tape/tapeserver/file/DiskFile.hpp"
-#include "castor/tape/tapeserver/file/RadosStriperPool.hpp"
+#include "disk/DiskFileImplementations.hpp"
+#include "disk/DiskFile.hpp"
+#include "disk/RadosStriperPool.hpp"
 #include <cryptopp/base64.h>
 #include <cryptopp/osrng.h>
 
diff --git a/tapeserver/castor/tape/tapeserver/file/DiskFile.cpp b/disk/DiskFile.cpp
similarity index 99%
rename from tapeserver/castor/tape/tapeserver/file/DiskFile.cpp
rename to disk/DiskFile.cpp
index 7d11cb26a7701ea678224cc1677d2e9c5747ab1a..3dc01e8fdb6aa696d020edb0a3fad7909b49d386 100644
--- a/tapeserver/castor/tape/tapeserver/file/DiskFile.cpp
+++ b/disk/DiskFile.cpp
@@ -23,8 +23,8 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 
-#include "castor/tape/tapeserver/file/DiskFileImplementations.hpp"
-#include "castor/tape/tapeserver/file/RadosStriperPool.hpp"
+#include "disk/DiskFileImplementations.hpp"
+#include "disk/RadosStriperPool.hpp"
 #include "common/exception/Errnum.hpp"
 #include "common/threading/MutexLocker.hpp"
 #include "common/utils/utils.hpp"
diff --git a/tapeserver/castor/tape/tapeserver/file/DiskFile.hpp b/disk/DiskFile.hpp
similarity index 100%
rename from tapeserver/castor/tape/tapeserver/file/DiskFile.hpp
rename to disk/DiskFile.hpp
diff --git a/tapeserver/castor/tape/tapeserver/file/DiskFileImplementations.hpp b/disk/DiskFileImplementations.hpp
similarity index 99%
rename from tapeserver/castor/tape/tapeserver/file/DiskFileImplementations.hpp
rename to disk/DiskFileImplementations.hpp
index a95b7b9a192b803d5e6c302b8dad188e3ee06e48..eb799a2b39f89816d81a41a2359630db88704af5 100644
--- a/tapeserver/castor/tape/tapeserver/file/DiskFileImplementations.hpp
+++ b/disk/DiskFileImplementations.hpp
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include "tapeserver/castor/tape/tapeserver/file/DiskFile.hpp"
+#include "disk/DiskFile.hpp"
 #include "tapeserver/castor/tape/tapeserver/file/Structures.hpp"
 #include "tapeserver/castor/tape/tapeserver/daemon/VolumeInfo.hpp"
 #include "common/exception/XrootCl.hpp"
diff --git a/eos/DiskReporter.cpp b/disk/DiskReporter.cpp
similarity index 100%
rename from eos/DiskReporter.cpp
rename to disk/DiskReporter.cpp
diff --git a/eos/DiskReporter.hpp b/disk/DiskReporter.hpp
similarity index 100%
rename from eos/DiskReporter.hpp
rename to disk/DiskReporter.hpp
diff --git a/eos/DiskReporterFactory.cpp b/disk/DiskReporterFactory.cpp
similarity index 100%
rename from eos/DiskReporterFactory.cpp
rename to disk/DiskReporterFactory.cpp
diff --git a/eos/DiskReporterFactory.hpp b/disk/DiskReporterFactory.hpp
similarity index 100%
rename from eos/DiskReporterFactory.hpp
rename to disk/DiskReporterFactory.hpp
diff --git a/eos/EOSReporter.cpp b/disk/EOSReporter.cpp
similarity index 100%
rename from eos/EOSReporter.cpp
rename to disk/EOSReporter.cpp
diff --git a/eos/EOSReporter.hpp b/disk/EOSReporter.hpp
similarity index 100%
rename from eos/EOSReporter.hpp
rename to disk/EOSReporter.hpp
diff --git a/eos/NullReporter.hpp b/disk/NullReporter.hpp
similarity index 100%
rename from eos/NullReporter.hpp
rename to disk/NullReporter.hpp
diff --git a/tapeserver/castor/tape/tapeserver/file/RadosStriperPool.cpp b/disk/RadosStriperPool.cpp
similarity index 100%
rename from tapeserver/castor/tape/tapeserver/file/RadosStriperPool.cpp
rename to disk/RadosStriperPool.cpp
diff --git a/tapeserver/castor/tape/tapeserver/file/RadosStriperPool.hpp b/disk/RadosStriperPool.hpp
similarity index 100%
rename from tapeserver/castor/tape/tapeserver/file/RadosStriperPool.hpp
rename to disk/RadosStriperPool.hpp
diff --git a/scheduler/ArchiveJob.cpp b/scheduler/ArchiveJob.cpp
index ee2cb7c24a0effa032949d1f87a2722387641a05..98e26951421d843c9d5b64add0f1c5091b8f016c 100644
--- a/scheduler/ArchiveJob.cpp
+++ b/scheduler/ArchiveJob.cpp
@@ -18,7 +18,7 @@
 
 #include "scheduler/ArchiveJob.hpp"
 #include "scheduler/ArchiveMount.hpp"
-#include "eos/DiskReporterFactory.hpp"
+#include "disk/DiskReporterFactory.hpp"
 #include "common/make_unique.hpp"
 #include <limits>
 #include <cryptopp/base64.h>
diff --git a/scheduler/ArchiveJob.hpp b/scheduler/ArchiveJob.hpp
index 8fa331c79216e24243a32cfb0eea93abcba24388..a157d088a064d7afc3a5e1af08a1bb91e42b4a45 100644
--- a/scheduler/ArchiveJob.hpp
+++ b/scheduler/ArchiveJob.hpp
@@ -23,7 +23,7 @@
 #include "common/Timer.hpp"
 #include "scheduler/SchedulerDatabase.hpp"
 #include "catalogue/Catalogue.hpp"
-#include "eos/DiskReporter.hpp"
+#include "disk/DiskReporter.hpp"
 
 #include <stdint.h>
 #include <string>
diff --git a/scheduler/ArchiveMount.hpp b/scheduler/ArchiveMount.hpp
index a7012b6233a8d26f8a23d978d3f9a930da6b513d..ec9dcc0009ed2011c77f49d385badb67132603b0 100644
--- a/scheduler/ArchiveMount.hpp
+++ b/scheduler/ArchiveMount.hpp
@@ -23,7 +23,7 @@
 #include "scheduler/SchedulerDatabase.hpp"
 #include "scheduler/TapeMount.hpp"
 #include "catalogue/Catalogue.hpp"
-#include "eos/DiskReporterFactory.hpp"
+#include "disk/DiskReporterFactory.hpp"
 
 #include <memory>
 #include <atomic>
diff --git a/scheduler/CMakeLists.txt b/scheduler/CMakeLists.txt
index 9f80a883c3d0cf1cee3f044dc457991dee5f5748..9632cd3dc87bef6f01117a5142cb13d057b44223 100644
--- a/scheduler/CMakeLists.txt
+++ b/scheduler/CMakeLists.txt
@@ -34,7 +34,7 @@ set_property(TARGET ctascheduler PROPERTY   VERSION "${CTA_LIBVERSION}")
 
 install (TARGETS ctascheduler DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
 
-target_link_libraries (ctascheduler ctacommon ctaobjectstore ${PROTOBUF3_LIBRARIES} ctaeos File)
+target_link_libraries (ctascheduler ctacommon ctaobjectstore ${PROTOBUF3_LIBRARIES} disk)
 
 #add_library (ctaschedulerutils SHARED
 #  _old_prototype_DummyScheduler.cpp)
diff --git a/scheduler/DiskReportRunner.hpp b/scheduler/DiskReportRunner.hpp
index 50eb47cd74d661384cc4bd01d0280f4f68ee4049..2d35c173b7dc575897eca3caabab2f5ab5e4751b 100644
--- a/scheduler/DiskReportRunner.hpp
+++ b/scheduler/DiskReportRunner.hpp
@@ -19,7 +19,7 @@
 #pragma once
 
 #include "common/log/LogContext.hpp"
-#include "eos/DiskReporterFactory.hpp"
+#include "disk/DiskReporterFactory.hpp"
 
 namespace cta {
 
diff --git a/scheduler/OStoreDB/OStoreDB.cpp b/scheduler/OStoreDB/OStoreDB.cpp
index 1670419788d6c42f0e71967ab497febf79c56275..e388b8cd7d2d0ee5100da79d85cf20ca69aabc69 100644
--- a/scheduler/OStoreDB/OStoreDB.cpp
+++ b/scheduler/OStoreDB/OStoreDB.cpp
@@ -37,7 +37,7 @@
 #include "common/make_unique.hpp"
 #include "tapeserver/castor/tape/tapeserver/daemon/TapeSessionStats.hpp"
 #include "Scheduler.hpp"
-#include "tapeserver/castor/tape/tapeserver/file/DiskFile.hpp"
+#include "disk/DiskFile.hpp"
 #include <algorithm>
 #include <cmath>
 #include <stdlib.h>     /* srand, rand */
diff --git a/scheduler/RetrieveJob.cpp b/scheduler/RetrieveJob.cpp
index 567119857c1b63b43f929f391077acd78987fbf2..e3b4c77343d4809370fc690cba17d42e164cefd3 100644
--- a/scheduler/RetrieveJob.cpp
+++ b/scheduler/RetrieveJob.cpp
@@ -18,7 +18,7 @@
 
 #include "scheduler/RetrieveJob.hpp"
 #include "common/Timer.hpp"
-#include "eos/DiskReporter.hpp"
+#include "disk/DiskReporter.hpp"
 #include "RetrieveMount.hpp"
 #include <cryptopp/base64.h>
 #include <future>
diff --git a/scheduler/RetrieveMount.hpp b/scheduler/RetrieveMount.hpp
index 753056d8949a5b5b6379f37df549dbb52d648694..728474d88b0c84538f42a034281b2d5ebc2f7b64 100644
--- a/scheduler/RetrieveMount.hpp
+++ b/scheduler/RetrieveMount.hpp
@@ -23,7 +23,7 @@
 #include "scheduler/RetrieveMount.hpp"
 #include "scheduler/SchedulerDatabase.hpp"
 #include "scheduler/TapeMount.hpp"
-#include "eos/DiskReporterFactory.hpp"
+#include "disk/DiskReporterFactory.hpp"
 
 #include <memory>
 #include <queue>
diff --git a/scheduler/Scheduler.cpp b/scheduler/Scheduler.cpp
index c915b3c4f0d756dabc2f13c829fa7ffd7b7fce6e..571fdbc9e67da5aab4967751c100912e02164688 100644
--- a/scheduler/Scheduler.cpp
+++ b/scheduler/Scheduler.cpp
@@ -30,8 +30,8 @@
 #include "common/make_unique.hpp"
 #include "objectstore/RepackRequest.hpp"
 #include "RetrieveRequestDump.hpp"
-#include "tapeserver/castor/tape/tapeserver/file/DiskFileImplementations.hpp"
-#include "tapeserver/castor/tape/tapeserver/file/RadosStriperPool.hpp"
+#include "disk/DiskFileImplementations.hpp"
+#include "disk/RadosStriperPool.hpp"
 
 #include <iostream>
 #include <sstream>
diff --git a/scheduler/Scheduler.hpp b/scheduler/Scheduler.hpp
index cffd8d3ba2018d132280b263917016ac2e536c81..3c4867bce8529e4e1e0d445a35aac6a5439e5150 100644
--- a/scheduler/Scheduler.hpp
+++ b/scheduler/Scheduler.hpp
@@ -51,8 +51,8 @@
 #include "objectstore/RetrieveRequest.hpp"
 #include "objectstore/ArchiveRequest.hpp"
 
-#include "eos/DiskReporter.hpp"
-#include "eos/DiskReporterFactory.hpp"
+#include "disk/DiskReporter.hpp"
+#include "disk/DiskReporterFactory.hpp"
 
 #include <list>
 #include <map>
diff --git a/tapeserver/castor/tape/tapeserver/daemon/DiskReadTask.hpp b/tapeserver/castor/tape/tapeserver/daemon/DiskReadTask.hpp
index 04690255d68c9e4653f4fe9497a2998317319ff6..5a8a7dca503358db0dcf830c3ba442ffc6811cce 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/DiskReadTask.hpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/DiskReadTask.hpp
@@ -30,7 +30,7 @@
 #include "castor/tape/tapeserver/daemon/TaskWatchDog.hpp"
 #include "common/threading/AtomicFlag.hpp"
 #include "common/log/LogContext.hpp"
-#include "castor/tape/tapeserver/file/DiskFile.hpp"
+#include "disk/DiskFile.hpp"
 
 namespace castor {
 namespace tape {
diff --git a/tapeserver/castor/tape/tapeserver/daemon/DiskReadTaskTest.cpp b/tapeserver/castor/tape/tapeserver/daemon/DiskReadTaskTest.cpp
index 4a37689d010e197ec124e3a36d02baebb193f6cf..dbe9e6de4ca4d581694d487493863f19a31b8b23 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/DiskReadTaskTest.cpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/DiskReadTaskTest.cpp
@@ -25,7 +25,7 @@
 #include "castor/tape/tapeserver/daemon/MigrationMemoryManager.hpp"
 #include "castor/tape/tapeserver/daemon/MigrationReportPacker.hpp"
 #include "castor/tape/tapeserver/daemon/MemBlock.hpp"
-#include "castor/tape/tapeserver/file/RadosStriperPool.hpp"
+#include "disk/RadosStriperPool.hpp"
 #include "common/log/LogContext.hpp"
 #include "common/log/StringLogger.hpp"
 #include "castor/messages/TapeserverProxyDummy.hpp"
diff --git a/tapeserver/castor/tape/tapeserver/daemon/DiskReadThreadPool.hpp b/tapeserver/castor/tape/tapeserver/daemon/DiskReadThreadPool.hpp
index 6de7e7cb1cbc9c9a4460064d3f4d8270f41e419a..993908dbb6fd9000572e772d7e76c1e1f54e61e5 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/DiskReadThreadPool.hpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/DiskReadThreadPool.hpp
@@ -26,7 +26,7 @@
 
 #include "castor/tape/tapeserver/daemon/DiskReadTask.hpp"
 #include "castor/tape/tapeserver/daemon/TaskWatchDog.hpp"
-#include "castor/tape/tapeserver/file/RadosStriperPool.hpp"
+#include "disk/RadosStriperPool.hpp"
 #include "common/threading/BlockingQueue.hpp"
 #include "common/threading/Thread.hpp"
 #include "common/threading/AtomicCounter.hpp"
diff --git a/tapeserver/castor/tape/tapeserver/daemon/DiskWriteThreadPool.hpp b/tapeserver/castor/tape/tapeserver/daemon/DiskWriteThreadPool.hpp
index 8fdcd68f2551ce3b56b9233e757c5087896a5b7f..725a78624f1211fc1922356240a16d52530f01c5 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/DiskWriteThreadPool.hpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/DiskWriteThreadPool.hpp
@@ -32,7 +32,7 @@
 #include "castor/tape/tapeserver/daemon/DiskWriteTask.hpp"
 #include "castor/tape/tapeserver/daemon/DiskStats.hpp"
 #include "castor/tape/tapeserver/daemon/TaskWatchDog.hpp"
-#include "castor/tape/tapeserver/file/RadosStriperPool.hpp"
+#include "disk/RadosStriperPool.hpp"
 #include "common/Timer.hpp"
 #include <vector>
 #define __STDC_FORMAT_MACROS
diff --git a/tapeserver/castor/tape/tapeserver/daemon/Payload.hpp b/tapeserver/castor/tape/tapeserver/daemon/Payload.hpp
index 7767bcb42a55204643ef27748b0200e275130ada..d8fd1adde6a7d1c63a9ed6e343431309bc8ad2a4 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/Payload.hpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/Payload.hpp
@@ -21,7 +21,7 @@
  * @author Castor Dev team, castor-dev@cern.ch
  *****************************************************************************/
 #include <zlib.h>
-#include "castor/tape/tapeserver/file/DiskFile.hpp"
+#include "disk/DiskFile.hpp"
 #include "castor/tape/tapeserver/file/File.hpp"
 #include "common/exception/MemException.hpp"
 #include "common/exception/EndOfFile.hpp"
diff --git a/tapeserver/castor/tape/tapeserver/file/CMakeLists.txt b/tapeserver/castor/tape/tapeserver/file/CMakeLists.txt
index 9d7881ba4c9219206a487fb3e5fde1b9c24a5ac6..86a4cd552895eb5fbf44ede5c544178c61a07a34 100644
--- a/tapeserver/castor/tape/tapeserver/file/CMakeLists.txt
+++ b/tapeserver/castor/tape/tapeserver/file/CMakeLists.txt
@@ -27,8 +27,6 @@ include_directories (${XROOTD_INCLUDE_DIR})
 
 set(TAPESERVER_FILE_LIBRARY_SRCS
   File.cpp
-  DiskFile.cpp
-  RadosStriperPool.cpp
   Structures.cpp)
 
 if(CMAKE_COMPILER_IS_GNUCC)
@@ -62,7 +60,6 @@ target_link_libraries(BasicReadWriteTest
 
 add_library(File
   ${TAPESERVER_FILE_LIBRARY_SRCS})
-target_link_libraries (File XrdCl cryptopp radosstriper)
 
 if(CMAKE_COMPILER_IS_GNUCC)
   if(GCC_VERSION_GE_4_8_0)
@@ -78,7 +75,12 @@ endif(CMAKE_COMPILER_IS_GNUCC)
 add_library(ctatapeserverfileunittests SHARED
   StructuresTest.cpp
   FileTest.cpp
-  CryptoPPTest.cpp)
+)
+
+target_link_libraries(ctatapeserverfileunittests
+  disk
+)
+
 set_property(TARGET ctatapeserverfileunittests PROPERTY SOVERSION "${CTA_SOVERSION}")
 set_property(TARGET ctatapeserverfileunittests PROPERTY   VERSION "${CTA_LIBVERSION}")
 
diff --git a/tapeserver/castor/tape/tapeserver/file/FileTest.cpp b/tapeserver/castor/tape/tapeserver/file/FileTest.cpp
index d8c676478383da75babccf10edcc2ae8b1c58ef4..03bf6fd3d90ed0c693a50e68ad820b3945440c37 100644
--- a/tapeserver/castor/tape/tapeserver/file/FileTest.cpp
+++ b/tapeserver/castor/tape/tapeserver/file/FileTest.cpp
@@ -26,13 +26,13 @@
 #include "castor/tape/tapeserver/drive/DriveInterface.hpp"
 #include "castor/tape/tapeserver/drive/FakeDrive.hpp"
 #include "castor/tape/tapeserver/file/File.hpp"
-#include "castor/tape/tapeserver/file/DiskFile.hpp"
-#include "castor/tape/tapeserver/file/RadosStriperPool.hpp"
+#include "disk/DiskFile.hpp"
+#include "disk/RadosStriperPool.hpp"
 #include "common/exception/Errnum.hpp"
 #include "common/exception/Exception.hpp"
 #include "scheduler/ArchiveJob.hpp"
 #include "scheduler/RetrieveJob.hpp"
-#include "DiskFileImplementations.hpp"
+#include "disk/DiskFileImplementations.hpp"
 
 #include <gtest/gtest.h>
 #include <memory>
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 18c79e2aef871b9b5ea0cb93e1321ce190e0fcbc..620fd8287a120dfe797ad2fb32f477c2fb9f1094 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -40,6 +40,7 @@ target_link_libraries(cta-unitTests
   ctatapeserverdriveunittests
   ctatapeserverfileunittests
   ctatapeserverscsiunittests
+  ctadiskunittests
   gtest
   pthread)