Squashfs Binary Format【二进制格式】【文件系统】【详解一】

1  简介

在创建小型嵌入式Linux系统时,存储设备(软盘、闪存盘等)的每个字节都非常重要,因此压缩在任何可能的地方都被使用。此外,经常需要压缩文件系统来进行归档。对于庞大的公共数字档案,以及个人媒体数字档案,这是必不可少的。

SquashFS把这一切带到一个新的水平。它是一个只读文件系统,允许您压缩整个文件系统或单个目录,将它们写入其他设备/分区或普通文件,然后直接(如果是设备)或使用环回设备(如果是文件)挂载它们。

 SquashFS是作为 Linux内核源补丁(在内核中支持SquashFS读取)、mksquashfs工具(创建压缩文件系统(在文件或块设备中))和 unsquashfs 工具(从现有压缩文件系统中提取多个文件)分发的。

SquashFS是一种用于Linux的压缩的只读文件系统,它也可以作为一种灵活的通用压缩归档格式,通过支持Unix权限、稀疏文件和扩展属性,为快速随机访问进行了优化。

SquashFS支持通过zlib、lz4、lzo、lzma、xz或zstd对数据和元数据进行压缩。

为了快速随机访问,压缩文件被分割成固定大小的块,并分别压缩。

块大小可以设置在4k到1M之间( squash -tools 和squash -tools-ng 的默认值是128K)。本文档试图详细指定磁盘上的格式。  

 2  概述

SquashFS总是以小端序格式存储整数。

组成SquashFS存档的数据块是按字节对齐的,也就是说,它们通常不关心对齐。Linux内核中的实现要求归档本身的大小是1k或4k的倍数(称为设备块大小),用户空间工具通常使用4k来与两者兼容。

SquashFS归档文件最多由九个部分组成:

SquashFS 归档结构
Superblock

   超级块

关于存档的重要信息,包括其他部分的位置。

Compression  options

 压缩选项

如果使用了非默认的压缩选项,可以选择将它们存储在这里,以便以后离线编辑归档文件。

Data blocks & frgments

数据块 和 片段

归档文件内容,分成单独的压缩块
Inode table 

  索引表

存档中条目的元数据(所有权、权限等)。
Directory table

 目录表

目录清单(包括文件名)和索引节点的引用
Fragment  table      

片段表

在Datablocks & Fragments部分中描述片段位置。
Export table 

导出表

从inode编号到磁盘位置的映射,需要NFS导出。
  • 20
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_45554038

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值