|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 5/6] ts-xen-build-prep: mkfs a new /home/osstest, don't resize2fs
On Wed, 2014-06-11 at 21:47 +0100, Ian Jackson wrote:
> Online resize is 40x slower than mkfs. It appears that the
> backgrounded resize2fs can starve build tasks of IO bandwidth.
>
> So instead, use mkfs to make a new filesystem for /home/osstest.
> We use rsync to copy in the old contents.
>
> For convenience of (a) review (b) possible reversion, we keep (for
> now) the lvextend machinery. So we create a new 1-extent LV for the
> lvextend machinery to work on.
>
> But we don't call resize2fs when we extend it, because now it doesn't
> have a fs on it yet. We make the filesystem later.
>
> We move the ccache_setup until after this is done because it's a bit
> pointless to put things in the to-be-removed /home/osstest when they
> could be put in the new one after it had been set up.
>
> We take slight care to make the rune slightly idempotent: if it
> completed successfully we detect this and do not run it again. But if
> it didn't, things may be messed up and running it again is unlikely to
> help and may make things worse.
>
> I have tested this on rice-weevil and the whole new target command
> (including rsync, mkfs, mount etc.) takes 126s.
>
> Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
> ---
> ts-xen-build-prep | 46 ++++++++++++++++++++++++++++++++++++++++++----
> 1 file changed, 42 insertions(+), 4 deletions(-)
>
> diff --git a/ts-xen-build-prep b/ts-xen-build-prep
> index d600285..ab1346d 100755
> --- a/ts-xen-build-prep
> +++ b/ts-xen-build-prep
> @@ -30,7 +30,7 @@ exit 0 if $ho->{SharedReady};
>
> our ($vg,$lv);
>
> -our $lvleaf = 'root';
> +our $lvleaf = 'osstest_home';
> our $pe_size;
> our $extended_pes = 0;
>
> @@ -83,6 +83,11 @@ sub vginfo () {
> return @vginfo;
> }
>
> +sub lvcreate () {
> + target_cmd_output_root($ho,
> + "lvdisplay $lv || lvcreate -l 1 -n $lvleaf $vg");
> +}
> +
> sub lvextend1 ($$$) {
> my ($what, $max_more_gb) = @_;
>
> @@ -157,8 +162,39 @@ sub lvextend1 ($$$) {
>
> my $timeout = 2000 + int($pe_size * 0.000003 * $more_pe);
> logm("$what: ${pe_size}k x $more_pe (timeout=$timeout)");
> - my $cmd = "resize2fs $lv";
> - target_cmd_root($ho, $cmd, $timeout);
> +}
> +
> +sub replace_home () {
> + my $dir = '/home/osstest';
> + my $mapper = lv_dev_mapper($vg,$lvleaf);
> + my ($fstype,@opts) = qw(ext3 -m 0 -O sparse_super);
> + target_cmd_root($ho, <<END, 1000);
> + set -ex
> + if mount | sed -e 's/^[^ ].* on //; s/ .*//' | grep -F '$dir'; then
> + exit 0
> + fi
> + mkfs -t $fstype @opts $lv
> + mount $lv /mnt
Some mixture hard and soft tabs here.
> + rsync -aHx --numeric-ids $dir/. /mnt/.
> + rm -rf $dir
> + mkdir -m 2700 $dir
> + echo '$mapper $dir $fstype defaults 0 0' >>/etc/fstab
> + umount /mnt
> + mount $dir
> +END
> +
> + # for convenience, here is a small scriptlet to undo this:
> + <<'END';
> +#!/bin/sh
> +set -ex
> +cd /home
> +rm -rf osstest.new
> +rsync -aH --numeric-ids osstest/. osstest.new
This made me wonder why not move the original one to osstest.foo instead
of rm -rf it? Doesn't really matter of course.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |