Proposal, create snapshots of portage as squashfs iso, to be used in place
of /usr/portage directory.
prior art: see #1
Already working here: one central server which keep the portage full tree
and that after a sync create "portage.sqsh" a squashfs 4.0 iso.
Advantages are mainly:
- cleaner root directory (ext4: du -sh /usr/portage ~= 600M | find
/g/portage | wc -l ~= 130000)
- faster `emerge --sync` with fast connections
- faster `emerge -uDpvN world`
- less cpu/disk load on the server (if not serving from memory)
Disadvantages
- need to mount portage, or to use autofs
- need kernel >= 2.6.30
- bigger rsync transfer size (?= 2x) #2
- bigger initial transfer size, lzma snapshot currently weight 30.8M,
portage.sqsh 45M
How it's done here:
Currently on the dispatcher the following run after every emerge --sync:
mksquashfs /usr/portage /srv/portage.sqsh \
-noappend -no-exports -no-recovery -force-uid 250 -force-gid 250
The clients run from cron the following:
umount /g/portage 2>/dev/null \
; cp /srv/server/portage.sqsh /var/tmp/portage.sqsh \
&& mount /usr/portage
/etc/fstab:
/srv/server/portage.sqsh /usr/portage squashfs loop,ro,noauto 1 1
some real data:
stats for a portage sync, one day
Number of files: 136429
Number of files transferred: 326
Total file size: 180345216 bytes
Total transferred file size: 1976658 bytes
Literal data: 1976658 bytes
Matched data: 0 bytes
File list size: 3377038
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 47533
Total bytes received: 4120255
sent 47533 bytes received 4120255 bytes 124411.58 bytes/sec
total size is 180345216 speedup is 43.27
stats for a portage.sqsh sync, one day
Number of files: 1
Number of files transferred: 1
Total file size: 46985216 bytes
Total transferred file size: 46985216 bytes
Literal data: 8430976 bytes
Matched data: 38554240 bytes
File list size: 27
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 48096
Total bytes received: 8454837
sent 48096 bytes received 8454837 bytes 5668622.00 bytes/sec
total size is 46985216 speedup is 5.53
#1 http://forums.gentoo.org/viewtopic-p-2218914.html
http://www.mail-archive.com/gentoo-dev@gentoo.org/msg05240.html
#2 May be mitigated by mksquashfs '--sort' option, to be tested
- francesco (vivo)
of /usr/portage directory.
prior art: see #1
Already working here: one central server which keep the portage full tree
and that after a sync create "portage.sqsh" a squashfs 4.0 iso.
Advantages are mainly:
- cleaner root directory (ext4: du -sh /usr/portage ~= 600M | find
/g/portage | wc -l ~= 130000)
- faster `emerge --sync` with fast connections
- faster `emerge -uDpvN world`
- less cpu/disk load on the server (if not serving from memory)
Disadvantages
- need to mount portage, or to use autofs
- need kernel >= 2.6.30
- bigger rsync transfer size (?= 2x) #2
- bigger initial transfer size, lzma snapshot currently weight 30.8M,
portage.sqsh 45M
How it's done here:
Currently on the dispatcher the following run after every emerge --sync:
mksquashfs /usr/portage /srv/portage.sqsh \
-noappend -no-exports -no-recovery -force-uid 250 -force-gid 250
The clients run from cron the following:
umount /g/portage 2>/dev/null \
; cp /srv/server/portage.sqsh /var/tmp/portage.sqsh \
&& mount /usr/portage
/etc/fstab:
/srv/server/portage.sqsh /usr/portage squashfs loop,ro,noauto 1 1
some real data:
stats for a portage sync, one day
Number of files: 136429
Number of files transferred: 326
Total file size: 180345216 bytes
Total transferred file size: 1976658 bytes
Literal data: 1976658 bytes
Matched data: 0 bytes
File list size: 3377038
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 47533
Total bytes received: 4120255
sent 47533 bytes received 4120255 bytes 124411.58 bytes/sec
total size is 180345216 speedup is 43.27
stats for a portage.sqsh sync, one day
Number of files: 1
Number of files transferred: 1
Total file size: 46985216 bytes
Total transferred file size: 46985216 bytes
Literal data: 8430976 bytes
Matched data: 38554240 bytes
File list size: 27
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 48096
Total bytes received: 8454837
sent 48096 bytes received 8454837 bytes 5668622.00 bytes/sec
total size is 46985216 speedup is 5.53
#1 http://forums.gentoo.org/viewtopic-p-2218914.html
http://www.mail-archive.com/gentoo-dev@gentoo.org/msg05240.html
#2 May be mitigated by mksquashfs '--sort' option, to be tested
- francesco (vivo)