Re: Estimate the size of iso file based on a kickstart file

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2019-09-24 at 11:32 -0700, Brian C. Lane wrote:
> On Thu, Sep 19, 2019 at 08:10:21PM +0800, Kalpa Welivitigoda wrote:
> > Hi all,
> > 
> > Given a kickstart file (flatten) and we intend to make an iso using
> > it, is there a tool or service by which we can estimate the size of
> > the final iso (based on the packages defined in the kickstart file)
> > before actually creating the iso?
> 
> AFAIK we don't have any stand-alone tools to do that, which is probably
> a good thing since trying to estimate the installed size usually ends up
> being very much not exact. In lorax-composer I have this:
> 
> https://github.com/weldr/lorax/blob/master/src/pylorax/api/projects.py#L288
> 
> which does the raw estimation. But then there is this:
> 
> https://github.com/weldr/lorax/blob/master/src/pylorax/api/compose.py#L738
> 
> Which adds 20%
> 
> But wait, that's not all! Anaconda then adds more:
> 
> https://github.com/rhinstaller/anaconda/blob/master/pyanaconda/payload/dnfpayload.py#L879
> 
> The reason behind all of this fudging is that we really don't know the
> exact sizes of the installed packages, and it can be influenced by block
> size, filesystem type, etc.
Exactly, just for fun I'll try to enumerate the factors I can remember:
- even an empty filesystem has to store it's metadata inside itself, so there will always be less
  useable space on a filesystem than it's raw size, this value depends on the filesystem and possibly
  other factors
- some older/simpler filesystems (such as FAT32) are very inefficient at storing many small files
  which can further increase actual needed ammount of storage space
- while RPMs do contain unpacked size of all the files inside, it does not list size per file,
  so if you have a separate mountpoint for say var, you can't know how much data will be installed
  in the given location by a RPM (but this is likely not a problem for image size)
- RPMs can do arbitrary stuff in their scriptlets, including cache generation, that can take an arbitrary ammount o
  space that simply can't be estimated beforehand
- when configuring the system Anaconda writes out config files, enables services and similar, which also uses up
  some space, though very very minor amount
- kickstart describing the installation and installaiton logs are stored on the system by default, those could
  eat up some more space - a couple MB
- AFAIK images generally use squashfs, so the content of its filesystem will be compressed, reducing it size,
  but again in a hard to tell beforehadn manner, based on how well the filesystem content compresses with the
  given algorithm used

So there is indeed quite a few variables, many with values uknown until things are already in place,
which is why the various percentual & absolute size adjustments are done.

Technically, I guess it might be possible to just run the size estimation code for a kickstart file
and then just output the estimated number instead of starting an installation/image generation if someone
finds that useful & wirtes the needed patches. :)

> 
> Even with all this added extra space I have occasionally seen it run out
> of space (usually when trying to do a smaller install than a bigger one,
> where the room for error is smaller).
> 
> The 'best' way to do what you want is to put together your kickstart,
> give it a big / partition, do a build and see how much free space there
> is, and trim it down. But not too far :)
Definitely, this is the only real way to get real numbers with the way our seoftware & its installation process is
built. Actually, I would suggest this to a regular thing, done automatically say nightly, with the results being
measured & notification being sent when when a given size threashold is reached.

AFAIK nothing like this is done currently and we basically only catch any signifficant size increases once they break
things, which is kinda late & makes fixing things harder.


> 
> Brian
> 
> -- 
> Brian C. Lane (PST8PDT) - weldr.io - lorax - parted - pykickstart
> _______________________________________________
> devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
> To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
> Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux