Software:cloop

From HandWiki
Revision as of 08:25, 9 February 2024 by Corlink (talk | contribs) (over-write)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Short description: Linux kernel module

cloop
Original author(s)Rusty Russell
Developer(s)Klaus Knopper
Stable release
2.637-1 / 12 January 2011; 13 years ago (2011-01-12)
Size338 KB
TypeLoadable kernel module
LicenseGNU GPL v2[1]
Websiteknoppix.net/wiki/Cloop

The compressed loop device (cloop) is a module for the Linux kernel. It adds support for transparently decompressed, read-only block devices. It is not a compressed file system: cloop is mostly used as a convenient way to compress conventional file systems onto Live CDs.

Cloop was originally written for the Levanta Bootable Business Card by Rusty Russell, but is now maintained by Klaus Knopper, the author of Knoppix.

A compression ratio of about 2.5:1 is common for software. The Knoppix cloop image, for example, is 700 MB compressed and around 1.8 GB uncompressed.

Design

cloop images contain:

  • A shell script (with mount commands for the image)
  • A header with the number of blocks and the uncompressed block size
  • A seek index with compressed and uncompressed block sizes in pairs
  • zlib-compressed data blocks, packed end-to-end

The data blocks are compressed separately; this makes it possible to seek to individual blocks without having to decompress the entire image from the start, but at the cost of slightly reducing the compression ratio. Live CD images typically use a block size of 256 KB as a compromise between decompression speed and space-efficiency.

Apple uses a similar file format in the compressed variant of its DMG disk images.

Limitations

The design of the cloop driver requires that compressed blocks be read whole from disk. This makes cloop access inherently slower when there are many scattered reads, which can happen if the system is low on memory or when a large program with many shared libraries is starting. A big issue is the seek time for CD-ROM drives (~80 ms), which exceeds that of hard disks (~10 ms) by a large factor. On the other hand, because files are packed together, reading a compressed block may thus bring in more than one file into the cache. The effects of tail packing are known to improve seek times (cf. reiserfs, btrfs), especially for small files. Some performance tests related to cloop have been conducted.[2]

See also

References

External links

  • cloop sources against the mainline Linux kernels and a patch to support any known cloop format. Note: versions 0.xx are for kernel 2.2; 1.xx are for kernel 2.4; 2.xx are for kernel 2.4 and 2.6.
  • cloop at Knoppix Linux Wiki (installation instructions are here)
  • Slides from a LinuxTag presentation by Klaus Knopper on the implementation of cloop (in German).
  • A fuse driver for cloop with a patch (description) to support any known cloop format and the binary.