def METHOD_NAME(timeout):
    """ Run the iozone parallel. """
    iozone_sessions = []
    iozone_threads = []
    thread_maps = {}
    for _ in disk_letters:
        iozone_sessions.append(vm.wait_for_login(timeout=360))
    for iozone_session, disk_letter in zip(iozone_sessions, disk_letters):
        args = (iozone_cmd.format(disk_letter), iozone_timeout)
        thread_maps[disk_letter] = (iozone_session.cmd, args)
        iozone_thread = utils_misc.InterruptedThread(iozone_session.cmd, args)
        iozone_thread.setName(disk_letter)
        iozone_threads.append(iozone_thread)
        iozone_thread.start()
    start_time = time.time()
    while time.time() - start_time <= timeout:
        for iozone_thread in iozone_threads:
            if iozone_thread.is_alive():
                continue
            else:
                thread_name = iozone_thread.getName()
                iozone_threads.remove(iozone_thread)
                iozone_threads.append(
                    utils_misc.InterruptedThread(thread_maps[thread_name][0],
                                                 thread_maps[thread_name][1]))
                iozone_threads[-1].setName(thread_name)
                iozone_threads[-1].start()
    for iozone_thread in iozone_threads:
        iozone_thread.join()
    test.log.info('All the iozone threads are done.')