Exemplo n.º 1
0
    def create_rbd(self):
        self.pool = self.name
        dp_option = ''

        self.cluster.rmpool(self.pool, self.pool_profile)
        self.cluster.mkpool(self.pool, self.pool_profile, 'rbd')
        if self.data_pool_profile:
            self.data_pool = '%s-data' % self.name
            dp_option = '--data-pool %s' % self.data_pool
            self.cluster.rmpool(self.data_pool, self.data_pool_profile)
            self.cluster.mkpool(self.data_pool, self.data_pool_profile, 'rbd')

        for node in common.get_fqdn_list('clients'):
            for ep_num in xrange(0, self.endpoints_per_client):
                rbd_name = self.get_rbd_name(node, ep_num)

                # Make the RBD Image
                cmd = '%s -c %s create %s --pool %s --size %s %s --order %s' % (
                    self.rbd_cmd, self.tmp_conf, rbd_name, self.pool,
                    self.endpoint_size, dp_option, self.order)
                common.pdsh(settings.getnodes('head'),
                            cmd,
                            continue_if_error=False).communicate()

                # Disable Features
                if self.disabled_features:
                    cmd = 'sudo %s feature disable %s/%s %s' % (
                        self.rbd_cmd, self.pool, rbd_name,
                        self.disabled_features)
                    common.pdsh(settings.getnodes('head'),
                                cmd,
                                continue_if_error=False).communicate()
Exemplo n.º 2
0
    def mount_rbd(self):
        for ep_num in xrange(0, self.endpoints_per_client):
            dir_name = self.get_dir_name(ep_num)
            for node in common.get_fqdn_list('clients'):
                rbd_name = self.get_rbd_name(node, ep_num)
                rbd_device = self.map_rbd(node, rbd_name)

                logger.info(rbd_device)

                # mkfs
                common.pdsh(node,
                            'sudo mkfs.xfs %s' % rbd_device,
                            continue_if_error=False).communicate()

                # mkdir
                common.pdsh(node,
                            'sudo mkdir -p -m0755 -- %s' % dir_name,
                            continue_if_error=False).communicate()

                # mount
                common.pdsh(node,
                            'sudo mount -t xfs %s %s' % (rbd_device, dir_name),
                            continue_if_error=False).communicate()
            self.endpoints.append(dir_name)
        self.endpoints_type = "directory"
        return self.get_endpoints()
Exemplo n.º 3
0
 def mount_fs(self):
     for ep_num in xrange(0, self.endpoints_per_client):
         dir_name = self.get_dir_name(ep_num) 
         for node in common.get_fqdn_list('clients'):
             common.pdsh(node, 'sudo mkdir -p -m0755 -- %s' % dir_name, continue_if_error=False).communicate()
             # FIXME: Apparently something is racey because we can get:
             # "mount error 2 = No such file or directory" without the pause.
             time.sleep(1)
             self.mount_fs_helper(node, dir_name)
         self.endpoints.append(dir_name)
     self.endpoint_type = "directory"
     return self.get_endpoints()
Exemplo n.º 4
0
 def mkimages(self):
     monitoring.start("%s/pool_monitoring" % self.run_dir)
     if (self.use_existing_volumes == False):
       self.cluster.rmpool(self.pool_name, self.pool_profile)
       self.cluster.mkpool(self.pool_name, self.pool_profile, 'rbd')
       if self.data_pool_profile:
           self.data_pool = self.pool_name + "-data"
           self.cluster.rmpool(self.data_pool, self.data_pool_profile)
           self.cluster.mkpool(self.data_pool, self.data_pool_profile, 'rbd')
       for node in common.get_fqdn_list('clients'):
           for volnum in xrange(0, self.volumes_per_client):
               node = node.rpartition("@")[2]
               self.cluster.mkimage('cbt-librbdfio-%s-%d' % (node,volnum), self.vol_size, self.pool_name, self.data_pool, self.vol_order)
     monitoring.stop()