def exit_raid(self): cmds = ['rmmod raid456 md_mod', 'modprobe -r async_raid6_recov async_pq', #'rmmod raid6_pq', #'dmesg -C > /dev/null' ] run_command_list(cmds)
def init_asd(cleanup=0): cmds = [ 'modprobe dm-mod', 'modprobe asd_deadline', 'modprobe asd_driver', 'modprobe asd_map_module' ] if cleanup: cmds.append('apremove -a -f') run_command_list(cmds)
def change_raid_stripe_cache_size(self): if not self.get_sys_name(): return cmd_change = ''.join(['echo ', str(self.get_stripe_cache_size()), ' > /sys/block/', self.get_sys_name(), '/md/stripe_cache_size']) cmds = [cmd_change] run_command_list(cmds)
def show_raid_info(self): if not self.get_sys_name(): return cmds = ['cat /proc/mdstat', ''.join(['cat /sys/block/', self.get_sys_name(), '/md/stripe_cache_size']), 'cat /proc/modules | grep raid456' ] run_command_list(cmds)
def zero_raid_sub_dev(self, tgt = None): raid_cmd = self.get_cmd() if self.get_sub_dev_cnt() == 0: return if tgt: devs = tgt else: devs = ' '.join(self.get_sub_dev_list()) cmds = [' '.join([raid_cmd, '--zero-superblock', '--force', devs])] run_command_list(cmds)
def init_raid(self): if self.get_raid_txn(): src_dir = self.get_src_dir() cmds = ['insmod ' + src_dir + '/raid6_pq.ko', 'modprobe async_raid6_recov', 'insmod ' + src_dir + '/md-mod.ko', 'insmod ' + src_dir + '/raid456.ko'] else: cmds = ['modprobe md_mod', 'modprobe raid456'] run_command_list(cmds)
def add_one(self, index = 0): if not self.get_sys_name(): return tgt = self.get_sub_dev_list()[index] self.zero_raid_sub_dev(tgt) cmd = ' '.join([self.get_cmd(), self.get_raid_path(), '--add', tgt ]) cmds = [cmd] run_command_list(cmds) (err, _) = run_command_list(cmds) if not err: self.add_sub_dev(tgt)
def remove_asdpool(plname): cmds = [ ' '.join(['asdpoolchange -a n', plname]), ' '.join(['asdpoolremove -f', plname]) ] (status, _) = run_command_list(cmds) return status
def create_asd(pool, asd_name, size_kb): cmd = ' '.join(['asdcreate -n', asd_name, '-L', str(size_kb) + 'K', pool]) cmds = [cmd] (err, _) = run_command_list(cmds) if not err: return asd_name return None
def check_recovery_speed(self, speed_obj): if not self.get_sys_name(): return 0 cmd = ' '.join(['cat /proc/mdstat | grep -A3', self.get_sys_name(), '| grep speed' ]) cmds = [cmd] (status, speed) = run_command_list(cmds) if status: return 0 speed_start = speed.find('speed=') if speed_start < 0: return 0 speed_start += len('speed=') speed_end = -1 speed_units = ['K', 'M', 'G', 'B'] for unit in speed_units: speed_end = speed[speed_start:].find(unit) if speed_end >= 0: break if speed_end < 0: print speed return 0 speed_end += speed_start speed_value = speed[speed_start: speed_end] speed_obj.record_value(speed_value) return 1
def remove_raid(self): path = self.get_raid_path() if not path: return cmds = [' '.join([self.get_cmd(), '-S', path])] (status, _) = run_command_list(cmds) if not status: self.__sys_name = None
def create_cbd(plname, cbd_name, dev_path): cmd = ' '.join([ 'cbddevcreate -n', cbd_name, '-p', plname, '-d', dev_path, '-c vlru -a buddy' ]) cmds = [cmd] (status, output) = run_command_list(cmds) if status: print output return status
def create_cbdpool(plname, size_kb): block_cnt = size_kb / 4 cmd = ' '.join( ['cbdpoolcreate -n', plname, '-p scap', '-s', str(block_cnt)]) cmds = [cmd] (status, output) = run_command_list(cmds) if status: print output return status
def find_min_dev_size_kb(dev_path_list): min_size_kb = -1 for dev_path in dev_path_list: name = dev_path.split(os.sep)[-1] cmds = ['cat /proc/partitions | grep ' + name] (status, line) = run_command_list(cmds) if status: continue size_kb = int(line.split()[2]) if (size_kb < min_size_kb) or (min_size_kb < 0): min_size_kb = size_kb return min_size_kb
def create_raid(self): if self.get_sub_dev_cnt() < self.get_lest_sub_dev_cnt(): return raid_cmd = self.get_cmd() if self.get_raid_txn(): txn = '-T' else: txn = '' devs = ' '.join(self.get_sub_dev_list()) cmd_create = ' '.join(['echo "y" |', raid_cmd, '-C', '/dev/md/' + self.raid_name, self.cmd_args, '-n', str(self.get_sub_dev_cnt()), '-l', str(self.get_raid_level()), '-z', str(self.get_raid_sub_dev_size_KB()), txn, devs]) cmds = [cmd_create] (err, _) = run_command_list(cmds) if err: return cmd_map = ' '.join(['cat /dev/md/md-device-map', '|', 'grep', self.raid_name]) (status, output) = getstatusoutput(cmd_map) if not status: dev_path = '/dev/' + output.split()[0] else: dev_path = self.search_raid_dev_path() if dev_path: cmd_link1 = ''.join(['ln -s ', dev_path, ' /dev/',self.raid_name]) cmd_link2 = ''.join(['ln -s ', dev_path, ' /dev/md/', self.raid_name]) cmds = [cmd_link1, cmd_link2] run_command_list(cmds) return
def fail_one(self, index = 0): if not self.get_sys_name(): return tgt = self.get_sub_dev_list()[index] cmd_fail = ' '.join([self.get_cmd(), self.get_raid_path(), '--fail', tgt ]) cmd_remove = ' '.join([self.get_cmd(), self.get_raid_path(), '--remove', tgt ]) cmds = [cmd_fail, cmd_remove] (err, _) = run_command_list(cmds) if not err: self.del_sub_dev(tgt)
def create_sd(sd_name, asd_name, sd_type='orig', sd_orig=None): asd_path = '/dev/' + asd_name if sd_type == 'orig': cmds = [' '.join(['sdcreate -n', sd_name, '-t orig', '-d', asd_path])] elif sd_type == 'sdro' and sd_orig: cmds = [ ' '.join([ 'sdcreate -n', sd_name, '-t sdro', '-d', asd_path, '-o', sd_orig ]) ] (err, _) = run_command_list(cmds) if not err: return sd_name return None
def __cleanup_dev(self, dev): print 'clean %s' % (dev) cmd = ''.join(['dd if=/dev/zero of=', dev, ' bs=1M count=100']) cmds = [cmd] run_command_list(cmds)
def remove_asd(name): cmds = [ ' '.join(['asdchange -a n', name]), ' '.join(['asdremove -f', name]) ] (status, _) = run_command_list(cmds) return status
def create_asdpool(dev, plname): cmd = ' '.join(['asdpoolcreate -n', plname, '-g 16', '-d', dev]) print cmd cmds = [cmd] (status, _) = run_command_list(cmds) return status
def exit_sd(): cmds = ['sdunload'] (status, _) = run_command_list(cmds) return status
def cleanup_sd(): cmds = ['truncate /etc/sd/meta --size 0'] (status, _) = run_command_list(cmds) return status
def remove_cbd(plname, name): cmd1 = ' '.join(['cbddevdelete -n', name, '-p', plname]) cmd2 = ' '.join(['rm -rf', '/dev/' + name]) cmds = [cmd1, cmd2] (status, _) = run_command_list(cmds) return status
def remove_cbdpool(plname): cmd1 = ' '.join(['cbdpooldelete -n', plname]) cmd2 = ' '.join(['rm -rf', plname]) cmds = [cmd1, cmd2] (status, _) = run_command_list(cmds) return status
def exit_asd(): cmds = [ 'modprobe -r asd_map_module', 'modprobe -r asd_driver', 'modprobe -r asd_deadline', 'modprobe -r msios' ] run_command_list(cmds)
def exit_cbd(): cmds = ['modprobe -r buddy', 'modprobe -r vlru', 'modprobe -r cbd'] (status, _) = run_command_list(cmds) return status
def init_cbd(): cmds = ['modprobe cbd'] (status, _) = run_command_list(cmds) return status
def assemble_all_sd(): cmds = ['sdrebuild'] (status, _) = run_command_list(cmds) return status
def assemble_all_asd(): cmds = ['modprobe dm-mod', 'asd_load'] (status, _) = run_command_list(cmds) return status
def remove_sd(sd_name): cmds = [' '.join(['sdremove', sd_name])] (status, _) = run_command_list(cmds) return status