From 7f6591b5567eafcc6df483267cb572cfc3ce41ac Mon Sep 17 00:00:00 2001 From: Mike Ryan Date: Thu, 16 Aug 2012 15:50:10 -0700 Subject: [PATCH] ceph: support tmpfs_journal option to put journal on tmpfs Signed-off-by: Mike Ryan --- teuthology/nuke.py | 18 ++++++++++++++++++ teuthology/task/ceph.py | 21 +++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/teuthology/nuke.py b/teuthology/nuke.py index 6bb0166e9c..73e3e11d50 100644 --- a/teuthology/nuke.py +++ b/teuthology/nuke.py @@ -158,6 +158,21 @@ def remove_osd_mounts(ctx, log): ], ) +def remove_osd_tmpfs(ctx, log): + """ + unmount tmpfs mounts + """ + from .orchestra import run + ctx.cluster.run( + args=[ + 'grep', '/mnt', '/etc/mtab', run.Raw('|'), + 'awk', '{print $2}', run.Raw('|'), + 'xargs', '-r', + 'sudo', 'umount', run.Raw(';'), + 'true' + ], + ) + def reboot(ctx, remotes, log): import time nodes = {} @@ -345,6 +360,9 @@ def nuke_helper(ctx, log): log.info('Unmount any osd data directories...') remove_osd_mounts(ctx, log) + log.info('Unmount any osd tmpfs dirs...') + remove_osd_tmpfs(ctx, log) + log.info('Dealing with any kernel mounts...') kernel_mounts = find_kernel_mounts(ctx, log) #remove_kernel_mounts(ctx, kernel_mounts, log) diff --git a/teuthology/task/ceph.py b/teuthology/task/ceph.py index 9be7fc53ed..81d376a08d 100644 --- a/teuthology/task/ceph.py +++ b/teuthology/task/ceph.py @@ -343,6 +343,17 @@ def cluster(ctx, config): teuthology.roles_of_type(roles_for_host, 'osd'), devs ) log.info('journal map: %s', roles_to_journals) + + if config.get('tmpfs_journal'): + log.info('tmpfs journal enabled') + roles_to_journals = {} + remote.run( args=[ 'sudo', 'mount', '-t', 'tmpfs', 'tmpfs', '/mnt' ] ) + for osd in teuthology.roles_of_type(roles_for_host, 'osd'): + tmpfs = '/mnt/osd.%s' % osd + roles_to_journals[osd] = tmpfs + remote.run( args=[ 'truncate', '-s', '1500M', tmpfs ] ) + log.info('journal map: %s', roles_to_journals) + remote_to_roles_to_devs[remote] = roles_to_devs remote_to_roles_to_journals[remote] = roles_to_journals @@ -365,6 +376,9 @@ def cluster(ctx, config): conf[section] = {} conf[section][key] = value + if config.get('tmpfs_journal'): + conf['journal dio'] = False + ctx.ceph = argparse.Namespace() ctx.ceph.conf = conf @@ -759,6 +773,12 @@ def cluster(ctx, config): ] ) + for remote, roles_for_host in osds.remotes.iteritems(): + remote.run( + args=[ 'sudo', 'umount', '-f', '/mnt' ], + check_status=False, + ) + if ctx.archive is not None: # archive mon data, too log.info('Archiving mon data...') @@ -1041,6 +1061,7 @@ def task(ctx, config): mkfs_options=config.get('mkfs_options', None), mount_options=config.get('mount_options',None), block_journal=config.get('block_journal', None), + tmpfs_journal=config.get('tmpfs_journal', None), log_whitelist=config.get('log-whitelist', []), )), lambda: run_daemon(ctx=ctx, config=config, type_='mon'), -- 2.39.5