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()
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()
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()
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()