a lot of fixes and improvements
diff --git a/io_scenario/sensors.py b/io_scenario/sensors.py
new file mode 100644
index 0000000..b7f8cd0
--- /dev/null
+++ b/io_scenario/sensors.py
@@ -0,0 +1,56 @@
+import os.path
+
+import psutil
+
+
+def get_disk_by_mountpoint(mnt_point):
+    """ Return disk of mountpoint """
+    diskparts = psutil.disk_partitions()
+    for item in diskparts:
+        if item.mountpoint == mnt_point:
+            return os.path.realpath(item.device)
+
+    raise OSError("Can't define disk for {0!r}".format(mnt_point))
+
+
+def find_mount_point(path):
+    """ Find mount point by provided path """
+    path = os.path.abspath(path)
+    while not os.path.ismount(path):
+        path = os.path.dirname(path)
+    return path
+
+
+class DiskInfo(object):
+    def __init__(self, name, rd_cnt=0, wr_cnt=0, rd_bytes=0,
+                 wr_bytes=0, rd_time=0, wr_time=0):
+        self.name = name
+        self.rd_cnt = rd_cnt
+        self.wr_cnt = wr_cnt
+        self.rd_bytes = rd_bytes
+        self.wr_bytes = wr_bytes
+        self.rd_time = rd_time
+        self.wr_time = wr_time
+
+    def __str__(self):
+        message = 'DISK {0.name}: read count {0.rd_cnt}' + \
+                  ', write count {0.wr_cnt}' + \
+                  ', read bytes {0.rd_bytes}' + \
+                  ', write bytes {0.wr_bytes}' + \
+                  ', read time {0.rd_time}' + \
+                  ', write time {0.wr_time}'
+        return message.format(self)
+
+
+def get_io_stats(path):
+    """ Return list of CEPHDiskInfo for all disks that used by CEPH on the
+        local node
+    """
+    stat = psutil.disk_io_counters(perdisk=True)
+    disk = get_disk_by_mountpoint(find_mount_point(path))
+    disk_base = os.path.basename(disk)
+    print disk_base
+    try:
+        return stat[disk_base]
+    except IndexError:
+        raise OSError("Disk {0} not found in stats".format(disk))