From KDE Community Wiki
< GSoC‎ | 2018‎ | StatusReports

Finish LVM support and implement RAID support in KDE Partition Manager and Calamares

KDE Partition Manager is a utility program that helps the management of disk devices, partitions and file systems on your computer. It allows you to easily create, copy, move, delete, backup, restore partitions and resize without losing data. The program consists of a backend library, called kpmcore, and a user application that uses that library.

Calamares is a distribution-independent system installer, with an advanced partitioning feature for both manual and automated partitioning operations. It is designed to be customizable by distribution maintainers without need for cumbersome patching, thanks to third party branding and external modules support. It uses the kpmcore library to automate partitioning procedures.

One pending feature request for Calamares remains for LVM support. LVM support is currently finished in kpmcore and KDE Partition Manager, but there is some work to do in Calamares before proceeding to the other goals of this project. Furthermore, it is currently needed to implement RAID support in kpmcore, KDE Partition Manager and Calamares, which will offer a way to spread data across several disks, such that a single disk failure will not lose that data.

Mentors: Adriaan de Groot and Andrius Stikonas.

Project Goals

  • Finish LVM VG support in Calamares.
    • Status: Done.
  • Implement RAID support in kpmcore.
    • Status: Done.
  • Implement RAID support GUIs in KDE Partition Manager.
    • Status: Done.
  • Implement RAID support GUIs in Calamares.
    • Status: Pending.

Work Report

Community Bonding Period

During Community Bonding period, I've been in communication with my mentors, planning some goals and learn more about the codebase of KDE Partition Manager and Calamares. I'm getting more familiar with partitioning module in Calamares and LVM routines in KDE Partition Manager. In addition, I'm studying how LVM VG creation dialog works in KDE Partition Manager and how I can port it to Calamares and started solving some bugs and implementing some features related to LVM in kpmcore and partitionmanager. Also I'll take advantage of this first GSoC period to study more about mdadm tool, that will help me in the process of manipulation of RAID devices.

More details can be seen in Community Bonding Part 1, Part 2 and Part 3 in my blog.

Coding Period - May 14th to May 28th

During the first weeks of Coding Period, I was dedicated to create LVM VG creation process in Calamares. It involved creating a new VG GUI hierarchy and understanding the process of Jobs in Calamares. I'm planning to finish the first phase of the coding period with the implementation of some other operations of VGs in Calamares (i.e. resize and delete operations).

More details can be seen in Coding Period (May 14th to May 28th) post in my blog and this video showing how the process of VG creation is being done.

Coding Period - May 28th to June 18th

I got some problems during the last weeks of Google Summer of Code which made me deal with some challenges. One of these challenges was caused by a HD physical problem. I haven’t made a backup of some work and had to rework again in some parts of my code. As I already knew how to proceed, it was faster than the first time.

I had to understand how the device loading process is made in Calamares to load a preview of the new LVM VG during its creation in Partition Page. I need to list it as a new storage device in this page and deal with the revert process. I’ve implemented some basic fixes and tried to improve it.

More details can be seen in Coding Period (May 28th to June 18th) post in my blog.

Coding Period - June 18th to June 26th

I have finished LVM VG complete support to Calamares, including resize, deactivate and remove operations. I’ve changed Calamares’ Partition Page to include a group of buttons related to VG operations. Now there is a row reserved for it, organized in a horizontal layout.

More details can be seen in Coding Period (June 18th to June 26th) post in my blog.

Coding Period - June 26th to July 15th

During this period, I have finished the support of loading Software RAID (i.e. MD RAID) devices on kpmcore and KDE Partition Manager, including the process of partition manipulation on these devices. Now I am starting the implementation of the process of creation of Software RAID on kpmcore.

More details explaining about RAID and how this project is focused on it can be seen in Coding Period (June 26th to July 15th) post in my blog.

Coding Period - July 15th to August 6th

Finished creation of Software RAID on kpmcore. Improved the code to get more stability before creating KDE Partition Manager and Calamares GUIs for this process. Fixed some bugs related to udev events that where keeping the physical device that contains the linux_raid_member partitions busy. My work with LVM in Calamares was merged to master branch, as you can see here.

This post in Calamares' blog explains a little bit about my progress with LVM during the last months and my plans after finishing GSoC: Calamares progress on Google Summer of Code 2018.

Branches where I'm working

Important Links

Proposal Link

Blog Posts



Email: [email protected]

IRC: cjlcarvalho

Github: cjlcarvalho