精华内容
下载资源
问答
  • 只读文件系统

    2016-06-10 10:51:00
    我们就需要使用只读文件系统来保护我们的系统文件不被修改. 常见的只读文件系统有:cramfs文件系统和squashfs文件系统(cramfs文件系统的继任者) 一、cramfs文件系统: ...

    在有些项目中,我们不希望系统的文件的被修改,如路由器的系统文件等等.我们就需要使用只读文件系统来保护我们的系统文件不被修改.

    常见的只读文件系统有:cramfs文件系统和squashfs文件系统(cramfs文件系统的继任者)

     

    一、cramfs文件系统: http://sourceforge.net/projects/cramfs/
    1. compressed ROM filesystem
    主要用于嵌入式Linux系统中,简单与空间高效

    2. 特性:
    支持最大分区:272MB (256MB + 16MB)
    支持最大文件:16MB
    压缩格式: Zlib,压缩比一般可以达到1:2,每页单独进行压缩处理 ————> 支持随机读取
    动态解压:访问数据时实时解压访问到的页到内存,节省内存空间
    使用透明:解压缩以及解压缩之后的内存中数据存放位置都是由cramfs文件系统本身进行维护,对外部使用透明

    二、squashfs文件系统: cramfs的替代
    1. http://www.squashfs.org
    为通用只读文件系统等设计

    2. 特性:
    支持最大分区: 16EB
    支持最大文件: 2TB
    支持多种压缩格式:GZIP LZMA/LZMA2(XZ) LZO

     

    三,cramfs文件系统的制作

    1,安装制作工具

    sudo apt-get install cramfsprogs

    安装成功以后会有2个命令

    mkcramfs:创建文件系统镜像
    cramfsck:对文件系统镜像的一些操作

    2,制作文件系统

    mkcramfs 选项(可以没有) 目录名 镜像名称

    cramfsck 镜像名 :验证是否正确

    cramfsck -x 镜像名:解压该镜像

     

    四,squashfs文件系统制作

    1,制作工具的安装

    sudo apt-get install squashfs-tools

    mksquashfs:制作镜像
    unsquashfs:对镜像的一些操作

    2,制作文件系统

    mksquashfs source1 source2 ... dest [options] [-e list of exclude dirs/files]
    主要选项:
    -comp <comp> 指定压缩算法:gzip (default)/lzo/xz
    -b <block_size> 设置块大小,单位 Bytes,默认 131072 bytes (1MB)
    -no-exports 不支持NFS文件系统导出
    -no-sparse 不检测稀疏文件
    -no-xattrs 不存储扩展文件属性(XATTR)
    -xattrs 存储扩展文件属性(default)
    -noI 不压缩Inode节点表
    -noD 不压缩数据块
    -noF 不压缩片段块
    -noX 不压缩扩展文件属性
    -no-fragments 不使用片段管理
    -always-use-fragments 对比块大小大的文件也是用片段块
    -no-duplicates 不对文件重复进行检查
    -all-root 修改所有的文件拥有者为root
    -force-uid uid 设置所有文件的uid为指定的uid
    -force-gid gid 设置所有文件的gid为指定的gid
    -nopad 不对文件系统进行4K字节对齐
    -keep-as-directory 如果指定的源中有目录,在文件系统中创建根目录包含该目录,而不是包含目录内容


    mksquashfs 目录名 镜像名 -no-exports -no-xattrs -all-root

    内容提取:
    unsquashfs [options] filesystem [directories or files to extract]
    主要选项:
    -d[est] <pathname> 解压到指定目录,默认为"squashfs-root"
    -n[o-progress] 不显示进度条
    -no[-xattrs] 不提取xattr属性,默认提取
    -l[s] 列出文件系统内容,不进行解压缩提取

     

    因为有些文件涉及到了管理员权限,所以建议使用管理员权限来制作和解压文件系统镜像以避免一些权限错误.

    转载于:https://www.cnblogs.com/CHYI1/p/5573366.html

    展开全文
  • 我们就需要使用只读文件系统来保护我们的系统文件不被修改.常见的只读文件系统有:cramfs文件系统和squashfs文件系统(cramfs文件系统的继任者)一、cramfs文件系统: ...

    在有些项目中,我们不希望系统的文件的被修改,如路由器的系统文件等等.我们就需要使用只读文件系统来保护我们的系统文件不被修改.

    常见的只读文件系统有:cramfs文件系统和squashfs文件系统(cramfs文件系统的继任者)

    一、cramfs文件系统: http://sourceforge.net/projects/cramfs/

    1. compressed ROM filesystem

    主要用于嵌入式Linux系统中,简单与空间高效

    2. 特性:

    支持最大分区:272MB (256MB + 16MB)

    支持最大文件:16MB

    压缩格式: Zlib,压缩比一般可以达到1:2,每页单独进行压缩处理 ————> 支持随机读取

    动态解压:访问数据时实时解压访问到的页到内存,节省内存空间

    使用透明:解压缩以及解压缩之后的内存中数据存放位置都是由cramfs文件系统本身进行维护,对外部使用透明

    二、squashfs文件系统: cramfs的替代

    1. http://www.squashfs.org

    为通用只读文件系统等设计

    2. 特性:

    支持最大分区: 16EB

    支持最大文件: 2TB

    支持多种压缩格式:GZIP LZMA/LZMA2(XZ) LZO

    三,cramfs文件系统的制作

    1,安装制作工具

    sudo apt-get install cramfsprogs

    安装成功以后会有2个命令

    mkcramfs:创建文件系统镜像

    cramfsck:对文件系统镜像的一些操作

    2,制作文件系统

    mkcramfs 选项(可以没有) 目录名 镜像名称

    cramfsck 镜像名 :验证是否正确

    cramfsck -x 镜像名:解压该镜像

    四,squashfs文件系统制作

    1,制作工具的安装

    sudo apt-get install squashfs-tools

    mksquashfs:制作镜像

    unsquashfs:对镜像的一些操作

    2,制作文件系统

    mksquashfs source1 source2 ... dest [options] [-e list of exclude dirs/files]

    主要选项:

    -comp 指定压缩算法:gzip (default)/lzo/xz

    -b 设置块大小,单位 Bytes,默认 131072 bytes (1MB)

    -no-exports 不支持NFS文件系统导出

    -no-sparse 不检测稀疏文件

    -no-xattrs 不存储扩展文件属性(XATTR)

    -xattrs 存储扩展文件属性(default)

    -noI 不压缩Inode节点表

    -noD 不压缩数据块

    -noF 不压缩片段块

    -noX 不压缩扩展文件属性

    -no-fragments 不使用片段管理

    -always-use-fragments 对比块大小大的文件也是用片段块

    -no-duplicates 不对文件重复进行检查

    -all-root 修改所有的文件拥有者为root

    -force-uid uid 设置所有文件的uid为指定的uid

    -force-gid gid 设置所有文件的gid为指定的gid

    -nopad 不对文件系统进行4K字节对齐

    -keep-as-directory 如果指定的源中有目录,在文件系统中创建根目录包含该目录,而不是包含目录内容

    mksquashfs 目录名 镜像名 -no-exports -no-xattrs -all-root

    内容提取:

    unsquashfs [options] filesystem [directories or files to extract]

    主要选项:

    -d[est] 解压到指定目录,默认为"squashfs-root"

    -n[o-progress] 不显示进度条

    -no[-xattrs] 不提取xattr属性,默认提取

    -l[s] 列出文件系统内容,不进行解压缩提取

    因为有些文件涉及到了管理员权限,所以建议使用管理员权限来制作和解压文件系统镜像以避免一些权限错误.

    展开全文
  • 为什么需要只读压缩文件系统?在存储容量有限的嵌入式设备上,一般对于系统分区在使用过程中...Linux早期的只读文件系统有CramFS和SquashFS,以及参考了上述两个文件系统设计的用户态只读压缩文件系统CromFS。另外...

    为什么需要只读压缩文件系统?

    在存储容量有限的嵌入式设备上,一般对于系统分区在使用过程中没有数据写入需求,同时希望可以节省存储空间——只读压缩文件系统应运而生。另外,只读压缩文件系统也可用于归档文件。相比tar,zip等压缩软件,只读压缩文件系统的性能和灵活性都更好。Linux早期的只读文件系统有CramFS和SquashFS,以及参考了上述两个文件系统设计的用户态只读压缩文件系统CromFS。另外,最近两年在Android平台上实现商用的EROFS也值得关注。EROFS针对手机使用场景,对读放大和内存占用过多从设计理念上带来了一些新的优化。

    CramFS,SquashFS,CromFS横评

    CramFS被设计成用于存储空间很小的嵌入式设备上,倾向于极致简单、极其节省空间。在使用上存在诸多限制,如:单个文件大小不能超过16MB、文件系统大小略大于256MB(最后一个文件允许超过256MB空间范围,即文件系统总大小不超过272MB)。CramFS的gid只保存8位,mkcramfs会简单的将gid截断保留最后8位(有一些安全风险)。CramFS支持硬链接,但是被硬链接的文件引用计数不会增加。CramFS文件没有时间戳,所有文件的创建/访问时间戳都是1970年1月1日 0:00:00 GMT。(最近访问过的文件可能会被更新时间戳,但只在内存中保存。)CramFS的镜像只支持被同样字节对齐方式的机器创建和挂载使用,页面大小只支持4KB。

    SquashFS的出现替代了CramFS,但CramFS通过支持XIP(Execution In Place)有了新的用武之地。SquashFS设计上相比CramFS去掉了大部分限制因素:其会保存完整的uid/gid(32位)、文件创建时间,单文件最大支持16 EB,文件系统最大大小也是16 EB。压缩后的inode平均消耗8字节,根据文件类型不同(文件、目录、符号链接等)inode大小有所变化。对于压缩文件系统,压缩输入的数据块大小(chunk size)决定了压缩率收益和潜在的读放大开销。SquashFS 2.x版本的chunk size最大为64KB, SquashFS 3.x版本的chunk size最大可达1MB。SquashFS 3.x版本默认的chunk size是128KB,相比4KB大小的chunk size压缩率有明显提升。SquashFS还支持fragment block,即多个小文件存入一个block,极大的提升了压缩率。SquashFS支持大端和小端对齐方式,可以在不同的字节序机器上创建和挂载。

    CromFS的主要设计目标是高压缩率,性能和内存使用量不是它关心的方面。CromFS是一个用户态文件系统,通过块级别去冗和高压缩率算法实现压缩收益最大化。同CramFS和SquashFS的详细特性对比如下表:

    表1 CramFS,SquashFS,CromFS对比

    c296de77dd976b57ead58176ede53f91.png

    EROFS带来哪些新变化?

    EROFS的全称是Enhanced Read-Only File System,相比前述只读压缩文件系统最大的不同是压缩思路和解压方式的改变。不同于以往固定输入长度(Fixed Sized Input)的压缩形式,EROFS采用固定输出长度(Fixed Sized Output)的压缩思路。这解决了固定输入长度的压缩带来的读放大问题,4KB的固定输出长度压缩就可达到128KB的固定输入长度压缩的压缩率。对于SquashFS来说,达到同样的压缩收益可能需要比EROFS多读几倍的数据块。另外,SquashFS在运行时内存使用方面也远远多于EROFS的原地解压策略,这在系统处于低内存状态时会导致读性能大幅下降。为了更好的解压速度同时保证一定的压缩率,EROFS使用的压缩算法为LZ4。默认压缩输出块大小为4KB,其他特性支持上均对标SquashFS。这里不再一一赘述。

    定长输出和定长输入的示意如下图所示,EROFS会通过多次尝试不同长度的输入数据将其压缩到固定大小(4KB)的输出块上,SquashFS则是根据预先配置好的输入长度(Chunk Size)压缩数据并写到输出块上(可能跨多个数据块)。当EROFS的固定输出长度设为存储设备的块大小(如:4KB)时,可以认为没有读放大。因为无论要读的内容是哪一部分以及大小,对于块设备来说都至少要读取一个数据块。

    bfce0499e7d8bf52b93ce112c0151132.png

    图 1 定长输出和定长输入的区别

    在内存分配上,EROFS根据上层希望读取的内容是否需要将盘上读出数据全部解压会选择不同的策略。对于需全部解压的情况,EROFS会使用VFS已分配的Page Cache内存页,这样节省了内存的占用;对于需部分解压的情况,EROFS则会独立分配缓存页以便后续读取相同压缩块时避免产生新的I/O。当压缩数据块已被读入内存后,以下图中读取数据块3,4为例,EROFS的基本数据解压方式大致步骤如下:

    1) 根据上层要读取范围计算要解压的数据块(这个例子中是0,1,2,3,4)

    2) 分配临时缓存页(可选)存放解压内容(0,1,2),VFS已分配数据页不用再分配

    3) 通过vmap将上述物理页映射为连续虚拟页

    4) 如果有原地I/O占用了VFS分配的数据页,则将数据拷贝到临时页

    5) 解压数据到指定虚拟地址

    49d0617b65d9d82b5365ccb7a2248809.png

    图 2 EROFS压缩和解压示意图

    为优化内存占用,EROFS还提供了缓存解压/滚动解压(预分配一定数量的内存页)、原地解压等策略。另外,通过调度优化和协同解压进一步改善了数据读取性能。理论上,解压的过程增加了CPU计算时间,而压缩数据读取减少了I/O时间(特别是对于顺序读取来说)。所以对于只读压缩文件来说,压缩率达到一定收益后读性能会好于不压缩的文件系统。即CPU时间的增加小于I/O时间的减少,这从EROFS的测试数据也可以看出:当压缩节省空间超过35%以上时,随压缩比提升EROFS的读性能(特别是顺序读)会越来越好于EXT4。

    以上就是对只读压缩文件系统的一个简单介绍,可以看出根据应用场景的不同各个只读压缩文件系统在压缩比、压缩/解压效率上各有侧重。EROFS相比其他只读压缩文件系统引入了更多的设计思路,实现细节和一些优化值得肯定。

    参考文献:

    [1]  Gao et. al., EROFS: A Compression-friendly Readonly File System for Resource-scarce Devices, ATC 2019

    [2] SquashFS, https://zh.wikipedia.org/wiki/SquashFS

    [3] CromFS, https://bisqwit.iki.fi/source/cromfs.html

    [4] SquashFS HOWTO, https://tldp.org/HOWTO/SquashFS-HOWTO/whatis.html

    [5] CramFS, https://www.kernel.org/doc/html/latest/filesystems/cramfs.html

    e63873685ec1f0d97dbe1a86d8f6afe5.gif

    扫码关注

    “内核工匠”微信公众号

    Linux 内核黑科技 | 技术文章 | 精选教程

    展开全文
  • 有些时候可能需要重新 mount 一个已经 mount 的文件系统,改变 mount 标记,比如,...mount 命令的 remount 选项可以将只读文件系统 remount 为可读写文件系统,命令如下: $ mount -o remount,rw /dev/vad1 / ...

    有些时候可能需要重新 mount 一个已经 mount 的文件系统,改变 mount 标记,比如,将只读的文件系统重新 mount 为可写文件系统。

    mount 命令的 remount 选项可以实现这一功能,命令如下:

    $ df -h
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        486M     0  486M   0% /dev
    tmpfs           496M     0  496M   0% /dev/shm
    tmpfs           496M  492K  495M   1% /run
    tmpfs           496M     0  496M   0% /sys/fs/cgroup
    /dev/vda1        40G  9.2G   29G  25% /
    tmpfs           100M     0  100M   0% /run/user/0
    
    $ mount -o remount,rw /dev/vad1 /
    $
    

     

    展开全文
  • 有请高手帮忙解答:root不能创建目录,只读文件系统(2011-08-24 01:48:56)标签:杂谈有请高手帮忙解答:root不能创建目录, 只读文件系统linux是RED HAT AS4完全安装,ssh连接上以后,root登录(用的是“SSH Secure ...
  • 快速的高压缩率只读文件系统 目录 概述 DwarFS是一个只读文件系统,其重点是实现非常高的压缩率,尤其是对于非常冗余的数据。 这听起来可能并不令人兴奋,因为如果有多余的话,它应该可以很好地压缩。 但是,我...
  • 三行命令教你解决linux系统下U盘只读文件系统问题 1.问题: 使用linux不管是centos还是ubuntu的小伙伴都难免遇到插入U盘的时候,不能对U盘进行操作。提示权限不足或者是只读文件系统。 现在教你三行命令教你...
  • 只读文件系统下修改文件方法

    千次阅读 2018-01-08 12:57:36
    相信很多人都遇到这样的情况,进行嵌入式开发,遇到只读文件系统时,当修改一个脚本或网页,要把整个工程编译一次,大家都觉得很麻烦,效率低。  那么有没有只读文件系统下修改文件方法呢?答案是肯定的。 mount ...
  • linux创建只读文件系统。用root也无法创建,无法删除文件.zip
  • U盘只读文件系统

    千次阅读 2014-01-09 11:22:21
    Linux下使用U盘时,在没有卸载的情况下擅自拔出U盘后,U盘成为只读文件系统,说下修复的办法。 环境: OS: Linux 3.9.4-1-ARCH U盘:FAT32 今天向U盘上拷了文件后,没有卸载就拔了U盘,再插上电脑,稍等片刻时,...
  • tomcat启动报只读文件系统错误。 -bash-3.00# dmesg EXT3-fs error (device dm-0) in start_transaction: Journal has aborted 在dmesg命令下发现了上面的错误,使用fsck进行修复。 -bash-3.00# df -Th Filesystem ...
  • 为避免设备意外断电出现文件系统损坏,根文件系统起不来的情况,用ramdisk+overlay的方式制作分层的只读文件系统,lower层为只读文件系统,upper层为可读写分区,这样当文件系统出现问题时只需将upper层文件删除即可...
  • U盘只读文件系统修复详解

    千次阅读 2018-03-26 18:03:17
    例如不能新建文件和文件夹,不能向U盘中复制文件等,系统提示:只读文件系统。二、分析1、原因大概是U盘的文件系统信息出错(保存在一个硬盘或U盘最前面的头,其中有所有文件的信息)。2、格式化U盘自然可以解决问题...
  • 只读文件系统不能写的文件不能保存(掉电丢失),此代码是通过linux应用层直接掉用mtd子系统提供API对flash的分区进行读写、擦除,实现文件的保存。
  • Ubuntu硬盘只读文件系统

    千次阅读 2017-09-24 16:36:43
    博主安装win10和ubuntu双系统,今日登入ubuntu发现挂载的硬盘无法写入,显示只读文件系统。 尝试网上各种重新挂载和修复的方案,重启无数次均无法解决。 后来登入win10后发现之前打开的文件都没有关,推测是因为...
  • 由于学习需要,安装了双系统,两个多月没用Linux系统,想在Linux下写一个作业,在NTFS(Window所用的文件系统)类型的分区下创建工程文件,却提醒文件为只读文件系统。 sudo touch aaa.txt 创建文件 查看文件权限,...
  • 如果有碰到类似问题,可以回忆一下是如何进入Ubuntu系统的。 双系统进入Ubuntu有2个方式: ...经过测试,只有从Windows下重启进入时会避免发生只读文件系统的错误,推测是通过Windows重启后将写权限转接。 ...
  • U盘量产--U盘只读文件系统

    千次阅读 2018-03-26 18:20:42
    一、问题1、U盘变成只读文件系统;2、U盘不能格式化;3、按照此文章U盘只读文件系统修复详解二、分析1、基于上述的问题,可以知道U盘只读文件系统并不是简单的额权限问题。2、可能的原因是U盘底层硬件信息受损,需要...
  • 问题:从移动硬盘向linux磁盘复制文件时,报错“只读文件系统”,开始以为是权限问题,尝试通过chmod添加权限,同样报错“只读文件系统”。 后来发现可能是磁盘挂载的问题,需要重新挂载,解决方案如下: 1. ...
  • 三行命令教你解决linux系统下U盘只读文件系统问题

    万次阅读 多人点赞 2018-04-12 15:26:47
    Ubuntu插入U盘为只读文件系统,无法新建文件,文件夹或者向U盘中复制文件 1.问题: 使用linux不管是centos还是ubuntu的小伙伴都难免遇到插入U盘的时候,不能对U盘进行操作。提示权限不足或者是只读文件系统。 现在...
  • linux 64位只读文件系统 内核 2.6.32, 其它内核可能需要相应调整 扩展:从32位到64位 提高文件读取效率。 优化方式: 文件节点读入内存,采用数组管理,实现对分搜索,hash 搜索 性能不是很完美,仅供参考
  • 之前把U盘借出论文,还回来之后我再想用,发现U盘里的文件只能读取或者复制出去,但是不能修改删除,也不能添加新文件进来,显示该U盘是只读文件系统。 用了以下方法来解决这个问题: 在终端执行以下命令,作用是...
  • 使用docker创建只读文件系统容器化部署对应用的运维带来了极大的方便,同时也带来一些新的安全问题需要考虑.比如黑客入侵到容器内,对容器内的系统级别或者应用级别文件进行修...
  • chmod u+x /media/usbdisk提示“只读文件系统 ”无法更改。2. sudo mount -o rw -o remount -o user -t vfat /dev/sdb1 /media/usbdisk还是出现只读文件系统的提示。3. 格式化,也是提示“只读文件系统”。。最...
  • 查阅资料发现造成这种情况的因素很多,代码中实在找不到是什么原因导致的,故只能检测是否变成了只读文件系统,使用如下命令修改回来。 mount -o rw,remount /media/mmcblk0p1/ 此时变正常了,可以正常读写 ...
  • linux只读文件系统

    2020-02-08 10:42:50
    一般方法如下 ...1. mount命令查看变成只读文件的位置,比如/dev/sda3 2. umount /dev/sda3 #必须要先解除挂载! 3. fsck -y /dev/sda3 需要注意的是用fsck自动修复,可能会自动删除一些有问题的文件 ...
  • Ubuntu插入U盘为只读文件系统,无法新建文件,文件夹或者向U盘中复制文件 插入U盘并用df -h查看U盘信息 这里是我的信息, 可以看到U盘文件系统为/dev/sdb4,挂载点为/media/nwj/Ubuntu 16.0 卸载U盘sudo umount /...
  • Linux 下 SD 卡 只读文件系统

    千次阅读 2015-11-18 14:52:27
    SD卡有时会显示只读文件系统,无法拷贝,删除,查看文件: ①sudo fdisk -l 查看文件分区,例如该SD卡为sde1。 ②umount /dev/sde1。 ③sudo dosfsck -v -a /dev/sde1,修复该文件系统。
  • 背景:某天当我打开自己的设备,突然发现ntfs分区无法写入任何文件,提示为只读文件系统,具体现象如下: 修复过程:排除权限问题,使用fsck进行修复无果后,使用e2fsck进行修复 显示超级快损坏,这样就好做了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,930
精华内容 2,772
关键字:

只读文件系统