
EXT4文件系统
文章平均质量分 50
EXT4文件系统
王二车
这个作者很懒,什么都没留下…
展开
-
EXT4文件系统挂载成功后执行init文件linuxrc失败
Hi3559av100平台,制作EXT4文件系统在EMMC存储设备上启动,发现EXT4文件系统挂载成功后执行init文件linuxrc失败,分析原因如下:错误打印sdhci: Secure Digital Host Controller Interface driversdhci: Copyright(c) Pierre Ossmansdhci-pltfm: SDHCI platform and OF driver helpermmc0: SDHCI controller on 100f00原创 2020-08-31 20:34:30 · 1894 阅读 · 0 评论 -
EXT4文件系统学习(17)路径定位
根据一个路径定位到一个文件的inode和数据块,这个过程看起来简单,但代码比较复杂。路径定位的过程就是依次从dentry对象的子节点匹配下一级目录,直到定位到最终的节点。路径定位进程的fs->root和fs->pwd这2个dentry对象分别指向进程的根目录和当前目录,以根目录/开头时就从fs->root作为起点,否则表示相对路径就从fs->pwd开始。比较重要...原创 2019-03-15 17:11:03 · 1070 阅读 · 0 评论 -
EXT4文件系统学习(16)文件系统的挂载mount
挂载一个新的块设备时,内核会根据文件系统的类型,找到它的file_system_type对象,并调用该文件系统的mount函数,mount函数初始化超级块对象,设置s_op函数指针,这样VFS通过这个指针就知道如何操作这个块设备了。同时mount函数也会设置根目录的inode对象,并设置i_op和i_fop函数指针。文件系统的挂载Linux中只有一颗目录树,新的块设备必须mount到现有的...原创 2019-03-05 20:41:53 · 2576 阅读 · 0 评论 -
EXT4文件系统学习(15)VFS之VFS 文件/目录对象
无论下层具体文件系统差异如何,VFS通过file结构向上层提供一个统一的文件目录对象。VFS的文件对象struct file { union { struct llist_node fu_llist; struct rcu_head fu_rcuhead; } f_u; struct path f_path; struct inode *f_inode; /* ca...原创 2019-03-05 20:40:06 · 663 阅读 · 0 评论 -
EXT4文件系统学习(14)VFS之VFS inode
不同的文件系统inode也不一样,对inode的操作函数也不一样,VFS inode的作用就是隐藏下面具体文件系统的inode差异,向上层提供统一的接口。inodestruct inode { umode_t i_mode; unsigned short i_opflags; kuid_t i_uid; kgid_t i_gid; unsigned int i_...原创 2019-02-18 18:04:50 · 1002 阅读 · 0 评论 -
EXT4文件系统学习(13)VFS之VFS超级块super_block
VFS超级块VFS超级块是根据具体文件系统的超级块建立起来的内存结构:struct super_block { struct list_head s_list; /* Keep this first */ dev_t s_dev; /* search index; _not_ kdev_t */ unsigned char s_blocksize_bits; unsig...原创 2019-02-14 18:09:11 · 1784 阅读 · 1 评论 -
EXT4文件系统学习(12)VFS之文件系统对象file_system_type
Linux支持各种不同的文件系统,但是上层应用只需使用open(),read(),write()等系统调用就可以对磁盘文件进行操作,而不需关心具体文件系统的细节问题。为此提出了虚拟文件系统VFS,作为中间层屏蔽了底层不同文件系统之间的差异,向上提供统一的接口,虚拟文件系统根据不同的文件系统构造出超级块,inode和direntry等,这些结构在VFS中是一致的。文件系统对象每一个文件系统驱...原创 2019-02-14 16:17:00 · 1287 阅读 · 0 评论 -
EXT4文件系统学习(11)VFS之内存结构sb和inode
前面2篇介绍了ext4磁盘上的布局,在使用过程中,内核需要频繁的访问某些数据结构,所以会把磁盘上面数据读出装在内存中相应的数据结构。超级块ext4在内存中的超级块结构定义如下:/* * fourth extended-fs super-block data in memory */struct ext4_sb_info { unsigned long s_desc_size;...原创 2019-02-13 20:31:38 · 1293 阅读 · 0 评论 -
EXT4文件系统学习(10)VFS之磁盘结构Group和superblock
direntry建立了各级目录和文件之间的联系,inode建立了文件与数据之间联系,但这还不够,还需要记录inode和数据块从哪里开始从哪里结束,以及哪些是空闲的,这样才能正确的分配文件。Group块组是一个逻辑概念,把一个分区分成若干个组,用来限制文件的数据块不要过于散落,尽量保证一个文件的数据块在一个组,这样可以提高读写效率,格式化一个ext4文件系统后在磁盘上的结构:G...原创 2019-02-13 20:27:57 · 1429 阅读 · 0 评论 -
EXT4文件系统学习(9)VFS之磁盘结构inode和direntry
内核版本:linux-4.1.27inode索引节点,记录文件的文件属性(mode,time),数据块个数(i_blocks_lo)和位置(i_block[])。/* * Structure of an inode on the disk */struct ext4_inode { __le16 i_mode; /* File mode */ __le16 i_uid; ...原创 2019-02-13 19:48:38 · 1929 阅读 · 0 评论 -
EXT4文件系统学习(八)磁盘结构
介绍硬盘以扇区作为基本的存储单位,目前的扇区大小是512字节。可以通过分区把一个物理硬盘划分为多个逻辑硬盘,每一个逻辑硬盘就是一个分区,每个分区可以使用独立的文件系统格式。硬盘的第一个扇区,保存了MBR,分区表和结束标志55AA,其中前446字节为MBR代码,其后64字节是分区表,最后4字节是标志55AA。查看查看分区查看数据前面红色区域446字节是MBR数据,中间黄色...原创 2019-01-07 21:09:19 · 2328 阅读 · 0 评论 -
EXT4文件系统学习(七)裸数据分析
环境 虚拟机CentOS 7,4GB TF卡 分区:fdisk /dev/sdc 格式化:mkfs.ext4 /dev/sdc1查看分区信息[wang@localhost ~]$ sudo fdisk -l /dev/sdc 磁盘 /dev/sdc:3965 MB, 3965190144 字节,7744512 个扇区Units = 扇区 of 1 * 512...原创 2018-12-25 20:45:46 · 992 阅读 · 0 评论 -
EXT4文件系统学习(五)掉电数据损坏重启挂载失败并修复
问题情况 500G机械硬盘使用过程中出现挂载失败的问题,查看是第二分区没有挂载,进行分析与排查;查看磁盘Disk /dev/sdb: 500.1 GB, 500107862016 bytes255 heads, 63 sectors/track, 60801 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes...原创 2018-11-30 17:55:27 · 6509 阅读 · 0 评论 -
EXT4文件系统学习(六)USB3.0 XHCI内存卡Buffer I/O error问题-未解决
现象 sd 1:0:0:0: [sdb] UNKNOWN(0x2003) Result: hostbyte=0x00 driverbyte=0x08 sd 1:0:0:0: [sdb] Sense Key : 0xb [current] sd 1:0:0:0: [sdb] ASC=0x30 ASCQ=0x0 【INCOMPATIBLE MEDIUM INSTALLED】不兼容的存储介质...原创 2018-11-30 17:56:37 · 5021 阅读 · 2 评论 -
EXT4文件系统学习(四)手动破坏文件系统信息并恢复
1、破坏主superblock能否挂载成功 备份: dd if=/dev/loop0 of=super2.img 卸载 umount 破坏superblock: dd if=/dev/zero of=/dev/loop0 bs=1k seek=1 count=1 记录了1+0 的读入 记录了1+0 的写出 1024字节(1...原创 2018-11-30 17:52:34 · 11628 阅读 · 1 评论 -
EXT4文件系统学习(三)文件系统的组成部分
文件系统的组成部分block Linux中通过文件系统控制使用"块"为读写单元 现在的文件系统上,块的大小一般为1024bytes(1K)或2048bytes(2K)或4096bytes(4K)inode 【文件存储位置的索引】 通过扫描索引找到对应的数据,而且索引可以存储部分数据。 在文件系统上索引技术具体化为索引节点(index node),在索...原创 2018-11-30 17:45:47 · 2803 阅读 · 0 评论 -
EXT4文件系统学习(二)dumpe2fs查看ext4文件系统超级块信息数据
编译dumpe2fs工具 Linux系统有此工具软件可直接使用, 如果没有可选择自己手动编译,下面介绍编译ARM开发板的dumpe2fs工具:下载 git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git[wang@localhost tmp]$ git clone git://git.kernel.org...原创 2018-11-30 17:38:36 · 4282 阅读 · 0 评论 -
EXT4文件系统学习(一)Linux创建虚拟块设备并格式化为ext4文件系统
环境 为了方便学习文件系统的原理和原始数据的分析,需要创建虚拟块设备并格式化为ext4文件系统;Linux创建虚拟块设备 losetup命令 -a 显示所有已经使用的回环设备状态 -d 卸除回环设备 -f 寻找第一个未使用的回环设备 -e <加密选项> 启动加密编码[root@rhel6 ~]# losetup -f //查...原创 2018-11-30 17:34:59 · 6526 阅读 · 0 评论