From Fedora Project Wiki

Revision as of 09:53, 6 October 2013 by Ignatenkobrain (talk | contribs) (Test Results)

Fedora Test Days
SSD Cache

Date 2013-10-13
Time all day

Website QA/Fedora_20_test_days
IRC #fedora-test-day (webirc)

Mailing list

In construction
The Test Day page is yet in construction. It will be ready for the Test Day - when this message is removed :) .
Can't make the date?
If you come to this page before or after the test day is completed, your testing is still valuable, and you can use the information on this page to test, file any bugs you find at Bugzilla, and add your results to the results section. If this page is more than a month old when you arrive here, please check the current schedule and see if a similar but more recent Test Day is planned or has already happened.

What to test?

Today's instalment of Fedora Test Day will focus on bcache based SSD Caching in Fedora 20. Although dm-cache is another SSD caching implementation, today we'll only focus on the bcache implemntation.

General test objective

The objective of this Test day is to demonstrate a working Fedora 20 system using bcache. Te be more specific:

  • The system boots OK; after booting bcache is operating as expected
  • The system updates ("yum update") OK. After updating specifically the kernel the system boots OK.
  • The system is bootable when the caching device is disabled.


The bcache implementation of SSD caching is a new feature (since kernel 3.9) and should be considered experimental. The focus of this Test day is to evaluate the alignment of bcache-tools with other relevant Fedora packages to support a good basis for experimenting with SSD caching:

  • bcache-tools (version 0-0.12.20130909git or later)
  • util-linux (version 2.24-0.1 or later)
  • dracut (version 033-1 or later)
  • lvm2 (version 2.02.102-1 or later)
  • kernel (version 3.9 or later)

Anaconda support for bcache is expected to be available not until Fedora 21, so this is not in scope for the test day.

In general issues related to the bcache kernel driver are not in scope; SSD caching is not production yet so they should be addressed in the regular development process. This includes performance related issues. Only when the Test day demonstrates a unworkable situation, issues related to the bcache driver in the kernel are in scope on the Test day.

Who's available

The following cast of characters will be available testing, workarounds, bug fixes, and general discussion ...

Prerequisite for Test Day

Physical or Virtual

Although performance (of course) is a very important aspect of SSD caching, testing it is not required on the test day. Because of this testing can be done both on physical and virtual hardware, on a true SSD or a HDD. There is however a slight preference to do the testing on real hardware, with a real SSD.

Whenever the terms HDD or SDD are used below, they can be both physical and virtual. The same is true for the terms "system", "CPU", "RAM`and "bootable media".

Hardware & Software requirements

  • A fresh system:
 * 10GB+ HDD
 * 2GB+ SSD
 * 256MB+ RAM
 * x86 CPU (32bit or 64bit)
 * internet connection
  • bootable media containg Rawhide/F20 (?) netinst (?) image.

Other requirements

  • Knowledge on how to build physical or virtual machines
  • Knowledge how to use the Linux command line (There's no graphical installer yet)
  • A desire to break software

Further reading

Here's a chunk which is commonly used for most Test Days. Replace XX with whatever Fedora release is pending:

How to test?

Because Anaconda does not support bcache yet, the test may be executed following certain steps: preparation and test case 1 to test case 3. The end result will be a F20 system running its root filesystem on bcache. These steps are merely suggestions, to allow testing in limited time. Of course testers are free to choose other ways of testing. As a suggestion, testers can focus on the following criteria:

  • Are your 'bcached' filesystems automatically operational after a reboot?
  • Are your 'bcached' filesystems automatically operational after a kernel update?

Each demonstrates the proper allignment of dracut, util-linux, lvm2 (when used), bcache-tools and the kernel.

Preparation: install F20

The first step is to do a minimal install:

  • this is the fastest install
  • it also saves time when copying the root filesystem during later test cases
  • it allows to install other packages later (yum groupinstall) as part of the test activities.

To prepare for the test cases, it is important to use the following partitioning:

 sda1 500MB  /boot
 sda2 2GB    /home
 sda3 2GB    /
 sda4 (rest) free space
 sdb1 >2GB   (caching device)

When using a VM sda may be vda and sdb may be vdb.

Both the partitioning and the installation of Fedora can be done by any of the iso's in, e.g. Fedora-20-Alpha-x86_64-netinst.iso.

Test Cases

Test case 1.A: /home on bcache (no LVM)

Once your fresh Fedora 20 system is running, we will "move" /home to a bcache device. To do this it's convenient to have a minimum amount of data on /home. Do the following steps:

  • yum install bcache-tools
  • If needed "backup" all data in /home to another place on your root filesystem
  • comment /home out in your /etc/fstab
  • unmount /home (which is on /dev/sda2)
  • Make /dev/sda2 a bcache backing device: make-bcache -B /dev/sda2
  • Make /dev/sdb1 a bcache caching device: make-bcache -C /dev/sdb1
  • Note the set uuid and attach /dev/sdb1 to /dev/sda2: echo <set uuid> > /sys/block/bcache0/bcache/attach

Now you have a bcache device: /dev/bcache0

  • use "bcache-status -s" to see details about your bcache device.
  • create a filesystem: mkfs -t ext4 -L HOME /dev/bcache0
  • create a /home entry in your /etc/fstab: LABEL=HOME /home ext4 defaults 1 2
  • mount /home: mount -a
  • If needed restore the /home backup you made earlier.

Now you have a system with /home on bcache.

  • reboot your system to see if it boots OK.
  • do some other testing if you like. Limit the amount of data on /home or accept that it gets lost in the following steps.

Test case 1.B: / on bcache (no LVM)

step 1: / on bcache with fallback

Now we have a stable system with /home on bcache, we're going forward and have / on bcache. To do so we'll stop using /home on bcache first:

  • if needed make a bachup of /home on your root filesystem.
  • comment /home out in your /etc/fstab
  • umount /home
  • if needed restore your bachup to the /home directory

Now your /home is in your root filesystem. Next:

  • create a new filesystem on /dev/bcache0: mkfs -t ext4 -L ROOTFS /dev/bcache0
  • mount it: mount /dev/bcache0 /mnt
  • copy your current root filesystem to /mnt: cp -ax / /mnt

Now we have a duplicate root filesystem on /dev/bcache0. To use it we need to build a new initramfs:

  • rename your current initramfs: mv /boot/initramfs...img /boot/initramfs...img.sav
  • create a new initramfs: dracut -N

Now reboot your system. Edit your default grub entry:

  • replace the root=UUID=... parameter in the "linux" line by: root=LABEL=ROOTFS
  • boot it.

If all goes well, your system now boots fine and it's running on bcache!

  • Edit your /etc/grub2.cfg file..
  • .. duplicate the first "menuentry ... { ...}" (about 15 lines).
  • Now change the first one and replace the root=UUID=... parameter in the "linux" line by root=LABEL=ROOTFS
  • reboot again

Now your system should boot fine.

step 2: / on bcache no fallback

Now your system boots fine you can drop the fallback root filesystem.

Live image

Optionally, you may download a non-destructive Rawhide live image for your architecture. Tips on using a live image are available at FedoraLiveCD. Live images can be found here.

Test Results

Construct a table or list to allow testers to post results. Each column should be a test case or configuration, and each row should consist of test results. Include some instructions on how to report bugs, and any special instructions. Here's an example, from a Palimpsest test day:

If you have problems with any of the tests, report a bug to Bugzilla usually for the component bcache-tools. If you are unsure about exactly how to file the report or what other information to include, just ask on IRC and we will help you. Once you have completed the tests, add your results to the Results table below, following the example results from the first line as a template. The first column should be your name with a link to your User page in the Wiki if you have one. For each test case, use the result template to enter your result, as shown in the example result line.

User /home on bcache w/o/ LVM Sample test 2 Sample test 3 Sample test 4 References
Sample User
Pass pass
Warning warn
Fail fail
  1. Test pass, but also encountered RHBZ #54321
  2. RHBZ #12345