Anaconda Storage Filtering
This is the main page for information about anaconda's further/continuing storage rewrite. The entire storage subsystem was rewritten from scratch in F11, this page tracks the cleanup and last bits of support.
Anaconda's storage configuration code was rewritten from scratch in F11 to address several design limitations and replace outdated chunks of code. A number of outstanding problem areas remain, and this page tracks progress. It also documents the storage device filtering design and test requirements.
- Name: Chris Lumens
- email: clumens AT fedoraproject DOT org
- Targeted release: Fedora 12
- Last updated: 2009-07-22
- Percentage of completion: 40%
The new storage code still needs numerous bugfixes and the addition of device filtering. This page tracks the broad categories of problem and the progress we're making.
This page does not track the UI cleanup for storage configuration.
- Storage device filtering
At the request of many folks with lots of storage available, we plan to add the ability to prune the available storage presented as an install target. We want to provide users the ability to select which devices to use during installation, a way to specify disks by something other than the device node name for kickstart, and we're also curious if there is a way we can control which LUNs are scanned/activated by the kernel. For device identifiers, the best we have right now is sysfs path, which is rather verbose.
This is a pervasive change. Work items include:
- Pick desired format (udev?)
- Review code for all places where device can be specified, ensure that it will accept desired format.
- Resolvedevice should handle all formats.
- Probably loader change, new class for Ignoredisk, review blacklist/whitelist support.
Additional Cleanup Work Items:
- improve handling of parted's partition renumbering
- improve extended partition management (bug 497293)
- improve utilization of disk space w/ growable partition requests
- add support for optionally-partitioned devices (disks, md)
- whole-disk formatting (bug 489991)
- improve UI handling of pre-existing devices and their formatting
- improve handling of unusual/broken pre-existing lvm/md setups (XXX need bz refs)
- update swap recommendation algorithm
- create md devices w/ bitmap by default
- traceback when editing locked LUKS device (bug 502310)
- overlapping partition geometry (bug 499544)
- can't create four primary partitions with kickstart (bug 505269)
See Anaconda/StorageRewrite for further details.
Benefit to Fedora
We need to complete the newly redesigned storage management module and improve the stability of installation.
All of anaconda's code for creating and configuring disk partitions, LVM, mdraid, dmraid, multipath, iSCSI, LUKS devices, and filesystems was rewritten. Several known problem areas remain.
How To Test
Testing will need to be extensive.
We will have to verify the following areas of functionality as a starting point:
- Ideally, find a testbed with MANY LUNs
- creation/configuration of filesystems
- on new partitions
- on existing partitions
- on new LVM logical volumes
- on preexisting LVM logical volumes
- on new software RAID devices
- on existing software RAID devices
- creation of encrypted block devices at various levels in the device stack (partition, PV, LV, mdarray, &c)
- detection of arbitrarily complex device configurations (luks, mdraid, lvm, &c)
- management and configuration of existing encrypted block devices
- automatic partitioning of systems
- clearing of existing devices/partitions
- removal of existing devices
- reconfiguration of existing devices
- detection of existing upgradable installations with widely varied storage configurations
- rescue mounting of existing systems with a wide variety of storage configurations
There is more. Unit tests are being developed, and we will plan a Fedora Test Day. Before this code hits Rawhide it will be smoke-tested in a custom compose.
This should improve the user's experience with regard to the storage configuration portion of system installation.
It additionally includes the ability to filter out unwanted storage devices as potential installation targets.
- Anaconda's storage code uses general storage utilities such as mdadm, parted, dmraid. If liblvm becomes available in time it would be an optional work item to replace existing calls to the lvm command line with library references, but this is more likely to happen in F13.
- Storage device filtering requires udev change being driven by LVM and devicemapper guys.
- Need people with many storage devices to test as we dont have 600 luns.
Revert to previous codebase and selectively include bugfixes. Which will be difficult to unwedge from the new functionality, which is minor and intertwined with the bugfixes. Basically, this is a lousy option.
See Anaconda/StorageRewrite for further details.
- Install Guide update to reflect ability to filter devices