On 03/20/2014 05:24 AM, Christian Hesse wrote: > Gerardo Exequiel Pozzi <[email protected]> on Wed, 2014/03/19 22:21: >> On 01/11/2014 08:35 AM, Christian Hesse wrote: >>> Gerardo Exequiel Pozzi <[email protected]> on Fri, 2014/01/10 23:53: >>>> On 01/10/2014 11:47 PM, Gerardo Exequiel Pozzi wrote: >>>>> On 01/09/2014 05:49 AM, Christian Hesse wrote: >>>>>> Christian Hesse <[email protected]> on Mon, 2013/09/02 10:03: >>>>>>> From: Christian Hesse <[email protected]> >>>>>>> >>>>>>> This allows to grow the filesystem after system boot up. We have no >>>>>>> additional cost as squashfs handles sparse files. >>>>>>> --- >>>>>>> archiso/mkarchiso | 2 ++ >>>>>>> 1 file changed, 2 insertions(+) >>>>>>> >>>>>>> diff --git a/archiso/mkarchiso b/archiso/mkarchiso >>>>>>> index 8f9ed42..563f624 100755 >>>>>>> --- a/archiso/mkarchiso >>>>>>> +++ b/archiso/mkarchiso >>>>>>> @@ -364,6 +364,8 @@ _mkfs () { >>>>>>> cp -aT "${_fs_src}/" "${work_dir}/mnt/${_src}/" >>>>>>> _msg_info "Done!" >>>>>>> _umount_fs "${work_dir}/mnt/${_src}" >>>>>>> + # double size with sparse blocks, will allow to grow the >>>>>>> filesystem >>>>>>> + truncate -s$((_fs_size*2))M "${_fs_img}" >>>>>>> } >>>>>>> >>>>>>> command_checksum () { >>>>>> >>>>>> Currently I am maintaining this in a local package for myself. Any >>>>>> chance to get this merged upstream? >>>>>> >>>>> >>>>> No. This is a special case. If root-image.fs.sfs is copied to a >>>>> filesystems that does not support sparse files (FAT commonly for >>>>> USB-keys), this is waste of free space. >>>>> >>>> >>>> brb, ignore me!! truncate is on root-image.fs not root-images.fs.sfs :P >>>> >>>> Yes, this can be safe by default and can be included for next release :) >>> >>> Great, thanks! >>> >> >> I am still not changing this because, I am thinking in a different way >> to do this, in a more "systemd-friendly-way" (because currently I need >> to mount the squashfs, then fetch the size in blocks of the file inside >> it...). >> This is, for all cases, create a fixed size of the filesystem, (i.e 4G >> or 8G), the overhead is minimal, really :) >> >> >> $ truncate -s 1G coco.fs >> $ mkfs.ext4 -q -O ^has_journal -E lazy_itable_init=0 -m 0 -F coco.fs >> $ du -h coco.fs >> 408K coco.fs >> $ truncate -s 16G pepe.fs >> $ mkfs.ext4 -q -O ^has_journal -E lazy_itable_init=0 -m 0 -F pepe.fs >> $ du -h pepe.fs >> 4.3M pepe.fs > > Not sure if I got you right... With this solution you want the filesystem to > always fill the whole file? Where is the size specified? >
Yes, just like now. The diference is, while now the size is specified at
aitab file using a percent of free space you want, I am now thinking in
always using a know big size for total space, since the basic structure
of a filesystem is small.
In this way I can write systemd.units with fixed values.
> I wonder why you need the filesystem size in a systemd setup. What is it good
> for?
Because this is what is done in archiso hook in the most basic boot:
(if you just copy and paste this in a new "archiso" hook, system will
boot fine)
mkdir -p /run/archiso/bootmnt
mount -r /dev/disk/by-label/ARCH_201403 /run/archiso/bootmnt
mkdir -p /run/archiso/cowspace
mount -t tmpfs -o size=75%,mode=0755 cowspace /run/archiso/cowspace
mkdir -p /run/archiso/cowspace/persistent_ARCH_201403/x86_64
losetup --find --read-only
/run/archiso/bootmnt/arch/x86_64/root-image.fs.sfs
mkdir -p /run/archiso/sfs/root-image
mount -r /dev/loop0 /run/archiso/sfs/root-image
losetup --find --read-only /run/archiso/sfs/root-image/root-image.fs
#blockdev --getsz /dev/loop1 # -> in my case says: 2080768 and is used
below
dd of=/run/archiso/cowspace/persistent_ARCH_201403/x86_64/root-image.cow
count=0 seek=2080768
losetup --find
/run/archiso/cowspace/persistent_ARCH_201403/x86_64/root-image.cow
dmsetup create arch_root-image --table "0 2080768 snapshot /dev/loop1
/dev/loop2 N 8"
mkdir -p /new_root
mount -w /dev/mapper/arch_root-image /new_root
>
> You could create a filesystem that fits the needed size, truncate the
> file and have a fixed size nevertheless.
>
> $ _fs_size=1024
> $ truncate -s ${_fs_size}M coco.fs
> $ mkfs.ext4 -q -O ^has_journal -E lazy_itable_init=0 -m 0 -F coco.fs
> $ du -h coco.fs
> 408K coco.fs
> $ truncate -s 16G coco.fs
> $ du -h coco.fs
> 408K coco.fs
>
> And optionally later in live environment:
>
> $ resize2fs coco.fs
> $ du -h coco.fs
> 4.3M coco.fs
>
As I said before, we can just create big FS without significant overhead.
--
Gerardo Exequiel Pozzi
\cos^2\alpha + \sin^2\alpha = 1
signature.asc
Description: OpenPGP digital signature
