Simulating a slow disk with nbd

Michael Hudson-Doyle michael.hudson at canonical.com
Sat Sep 6 01:11:22 UTC 2014


Michael Foord <michael.foord at canonical.com> writes:

> Hey all,

Nice trick!

> I've been diagnosing some replicaset issues that particularly show up on 
> systems with slow disks, particularly our CI infrastructure. To simulate 
> a slow disk I've been using nbd (Network block device [1]), with 
> trickle. This provides a "remote mounted" disk (actually local served 
> over the loopback) that is rate limited. I then run the tests inside an 
> lxc container with its filesystem on the rate limited disk.
>
> Getting this working was tricky, so I thought I'd share the information. 
> In particular I couldn't get nbd-server to read a configuration file, so 
> I force it to skip loading the config file and specify the parameters at 
> the command line. This is deprecated, but works fine.
>
> The sequence of commands to create the nbd drive and create / start the 
> lxc container are as follows:
>
> sudo apt-get install trickle nbd-server nbd-client
>
> # create a 10GB file to act as the disk.
> dd if=/dev/zero of=/path/to/some/file bs=1024 count=10000000

Just one more factoid worth knowing if you are doing this sort of thing:
you can do this much much much more quickly with "truncate -s 10G
/path/to/some/file" (on the order of 0.01s vs minutes, and it creates a
sparse file too...).

Cheers,
mwh

> # create a file system on it
> mke2fs /path/to/some/file
>
> # start nbd-server under trickle
> trickle -d 2000 -u 2000 nbd-server -C " " 1234 /path/to/some/file
>
> # start the client
> sudo nbd-client localhost 1234 /dev/nbd0
>
> # create mount point
> sudo mkdir /mnt/nbd
> # mount the nbd device
> sudo mount /dev/nbd0 /mnt/nbd
>
> # create the lxc container
> sudo lxc-create -t ubuntu -n nbd --dir=/mnt/nbd
>
> # start the container
> sudo lxc-start --name nbd
>
>
> The "-d 2000 -u 2000" parameters to trickle tell it to rate limit access 
> to nbd-server to 2000 kB/s. Adjust this appropriately for a 
> faster/slower system.
>
> Something worth noting is that when shutting down it matters what order 
> you do things. If you shut down things in the wrong order you can end up 
> with an lxc container that you can't restart or a device that you can't 
> unmount / remount.
>
> The right order to (un)do things is:
>
> Shut down lxc container
> Unmount device
> Kill nbd-client / server
>
> I hope this is helpful to anyone else who may want to simulate a system 
> with slow i/o performance.
>
> All the best,
>
> Michael Foord
>
> [1] http://nbd.sourceforge.net/
>
> -- 
> Juju-dev mailing list
> Juju-dev at lists.ubuntu.com
> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/juju-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 818 bytes
Desc: not available
URL: <https://lists.ubuntu.com/archives/juju-dev/attachments/20140906/119d7c6a/attachment.pgp>


More information about the Juju-dev mailing list