ref: d42b5ae9b1b41d92fb88cffa6bdb930c2b476570
dir: /partitioner/design/
Needs to: * Be given a list of disks * Raw disks, partitions, files * Disks can be partitioned * Files and partitions must be used as a full partition each * Disks may be empty * Can partition, or use whole disk as one region * Disks may contain partitions and empty space * In which case, may want to use part of the disk * Replace existing partitions * Use unused space * If neither, unusable * Or realize it's the wrong disk * Be given desired constraints * How many fossils, in what size range? * Determine usable regions * Size * Disk * Offset * Redundancy * Sequential performance * Random-access performance * Determine what to do with each region within constraints v1: * Have bloom filter if there's enough space * Allocate five fossils, each 1% of total space * Statically size index and arenas as percentages of the total remaining space * Create one index section, one arena partition, bloom filter, and fossils * Try to give index minimal random read latency, and arena maximum sequential read speed * No interactivity v2: * Give the user the ability to edit the plan before executing it v3: * Talk with /dev/fs, take into account redundancy * Create multiple index sections and arena partitions, as needed * In order of highest to lowest priority: * Try not to use arena disks for anything else * Try not to use fossil disks for anything else * Try not to use index disks for anything else * Create the partitions * Format the partitions * Generate the venti configuration file