linux系统中文件的特性,linux文件系统特性

1. 文件系统特性(索引式文件系统)

文件系统格式化后block group的组成部分:

super block:记录文件系统整体信息,inode和data block的总量,使用量,剩余量,以及文件系统格式与相关信息,一般大小为1024bytes.

inode table:记录文件的权限与属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码,每个inode默认固定大小为128bytes。

data block:记录文件的实际内容,若文件太大,会占用多个block,ext2文件系统所支持的block大小有1k,2k,4k三种

filesystem description:描述了每个block group的开始于结束的block号码

block bitmap:记录了使用的和未使用的block号

inode bitmap:记录了使用的和未使用的inode号

【N】文件系统格式化的过程会中就已经把inode与block规划好了,以便操作系统识别使用,除非重新格式化,或者resize2f更新文件系统

[root@Darren ~]# dumpe2fs /dev/sda3

dumpe2fs 1.41.12 (17-May-2010)

Filesystem volume name:   

Last mounted on:          /

Filesystem UUID:          7b6aa9b8-aa0d-4497-ac09-d423c035d50a

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)

Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize

Filesystem flags:         signed_directory_hash

Default mount options:    user_xattr acl

Filesystem state:         clean

Errors behavior:          Continue

Filesystem OS type:       Linux

Inode count:              479552       --inode总数

Block count:              1914624     --block总数

Reserved block count:     95731

Free blocks:              968312      --剩余block

Free inodes:              365275      --剩余inode

First block:              0

Block size:               4096    --每个block大小

Fragment size:            4096

Reserved GDT blocks:      467

Blocks per group:         32768

Fragments per group:      32768

Inodes per group:         8128

Inode blocks per group:   508

Flex block group size:    16

Filesystem created:       Wed Aug  3 23:22:08 2016

Last mount time:          Thu Nov 10 15:49:44 2016

Last write time:          Wed Aug  3 23:31:03 2016

Mount count:              32

Maximum mount count:      -1

Last checked:             Wed Aug  3 23:22:08 2016

Check interval:           0 ()

Lifetime writes:          9 GB

Reserved blocks uid:      0 (user root)

Reserved blocks gid:      0 (group root)

First inode:              11

Inode size:               256    --每个inode的大小

Required extra isize:     28

Desired extra isize:      28

Journal inode:            8

Default directory hash:   half_md4

Directory Hash Seed:      0d3fdc26-38ed-4b93-8a85-ec305215a827

Journal backup:           inode blocks

Journal features:         journal_incompat_revoke

Journal size:             128M

Journal length:           32768

Journal sequence:         0x00008bac

Journal start:            1

Group 0: (Blocks 0-32767) [ITABLE_ZEROED]

Checksum 0x5873, unused inodes 0

Primary superblock at 0, Group descriptors at 1-1

Reserved GDT blocks at 2-468

Block bitmap at 469 (+469), Inode bitmap at 485 (+485)

Inode table at 501-1008 (+501)

21078 free blocks, 0 free inodes, 1315 directories

Free blocks: 11080-11099, 11144-11199, 11227, 11764-11829, 11831-11883, 11886-32767

Free inodes:

2.与目录树的关系

目录:

linux下ext2文件系统新建一个目录会分配一个inode和至少一个block,inode记录该目录相关的属性和权限,还有分配到那block号码,而block则是记录该目录下文件名与该文件名占用的inode号

文件:

linux下ext2文件系统新建一个文件会分配一个inode和相对该文件大小的block数量的文件。

目录树读取:

系统通过挂载的inode号(文件系统最顶层的inode号由2开始),找到inode的内容,根据inode内容读取目录的block内的文件名和数据,再一层层找到文件数据。

[root@Darren ~]# ls -lid / /etc /etc/passwd

2 dr-xr-xr-x. 22 root root  4096 11月 10 15:49 /

130052 drwxr-xr-x  98 root root 12288 11月 10 17:39 /etc

137728 -rw-r--r--   1 root root  1532 11月 10 16:27 /etc/passwd

3.日志文件系统

日志文件系统就是一种具有故障恢复能力的文件系统,所谓日志就是一种特殊的文件,它会在一个循环的缓冲区内记录文件系统的修改,然后将其定期提交到文件系统。一旦系统发生崩溃,日志文件就会起到一个检查点的作用,用于恢复未保存的信息,防止损坏文件系统元数据。

ext2不支持日志文件系统,从ext3开始支持。

把ext3升级到ext4:

(1)卸载umount

(2)[root@Darren ~]# tune2fs -O extents,uninit_bg,dir_index /dev/sdb1

(3)[root@Darren ~]# e2fsck /dev/sdb1

4.其他linux支持的文件系统

linux支持哪些文件系统:

[root@Darren ~]# ls -l /lib/modules/$(uname -r)/kernel/fs

系统已经加载到内核中的文件系统:

[root@Darren ~]# cat /proc/filesystems

5.连接文件:ln

硬连接:通过文件系统的inode连接产生新文件名,而不是产生新文件,连接文件和源文件的inode一样,不占用inode和block。

限制:

不能跨分区建立硬连接;

不能连接目录;

软连接:相当于windows的快捷方式,是一个独立的新的文件,指向源文件,连接文件和源文件的inode不同,占用inode和block。

例:

[root@Darren tmp]# touch file1.txt

[root@Darren tmp]# ln file1.txt file2.txt     --创建硬链接

[root@Darren tmp]# ln -s file1.txt file3.txt   --创建软链接

[root@Darren tmp]# ls -il

3508 -rw-r--r-- 2 root root    0 Nov  8 01:08 file1.txt

3508 -rw-r--r-- 2 root root    0 Nov  8 01:08 file2.txt

3514 lrwxrwxrwx 1 root root    9 Nov  8 01:13 file3.txt -> file1.txt

硬连接文件file2.txt与原文件file1.txt 的inode节点相同,然而符号连接文件的inode节点不同。

[root@Darren tmp]# echo 'This is test' >> file1.txt

[root@Darren tmp]# cat file1.txt

This is test

[root@Darren tmp]# cat file2.txt

This is test

[root@Darren tmp]# cat file3.txt

This is test

[root@Darren tmp]# rm file1.txt    --删除file1.txt

[root@Darren tmp]# ls -li

3508 -rw-r--r-- 1 root root   13 Nov  8 01:20 file2.txt

3514 lrwxrwxrwx 1 root root    9 Nov  8 01:13 file3.txt -> file1.txt

[root@Darren tmp]# cat file2.txt  --硬链接无影响

This is test

[root@Darren tmp]# cat file3.txt  --软链接失效

cat: file3.txt: No such file or directory

总结:

(1)删除符号连接f3,对f1,f2无影响;

(2)删除硬连接f2,对f1,f3也无影响;

(3)删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;

(4)同时删除原文件f1,硬连接f2,整个文件会真正的被删除。

[root@Darren tmp]# mkdir -p dir1

[root@Darren tmp]# ln dir1/ dir2/

ln: target `dir2/' is not a directory: No such file or directory

[root@Darren tmp]# ln dir1/ dir2       --目录是不能做硬链接的

ln: `dir1/': hard link not allowed for directory

[root@Darren tmp]# ln -s dir1/ /tmp/dir2   --创建目录的软链接

[root@Darren tmp]# ls -li

total 20

3514 drwxr-xr-x 2 root root 4096 Nov  8 01:41 dir1

3617 lrwxrwxrwx 1 root root    5 Nov  8 01:55 dir2 -> dir1/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式基于Linux电机控制,基于嵌入式arm+linux平台的直流电机调速控制系统.pdf

2012--2013 学年第 二 学期 物电 学院期末考试卷嵌入式系统与应用学号 : 姓名 : 班级 :成绩:评语:装订(考试题目及要求)嵌入式大作:采用实验箱上的电位器作为信号输入器件, 控制直流电机的运转方向和运转速度。电位器处于中间值时…

linux安装gcc运行时库,Linux安装gcc-6.1.0

获取gcc源码包# wget https://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-6.1.0.tar.bz2# tar -jxvf gcc-6.1.0.tar.bz2下载依赖项执行download_prerequisites将会自动下载这些软件并解压到当前目录,生成gcc编译的make文件。自动安装gcc需要下载诸如gmp、mpfr、mpc等依赖文…

linux无缝升级的版本,最近一周发布新版本的Linux发行版 - 2020-01-03

本周主要有3款Linux发行版发布,除了BlackArch Linux之外,其他两个发行版更少听说,对于中文用户更是少有人关注。BlackArch LinuxBlackArch Linux是一份基于Arch Linux的发行,它被设计为服务于系统渗透测试人员及安全研究人员。它的…

支持1050ti显卡的linux系统,NVIDIA 的 GTX1050 Ti 与 GTX1050 显卡登场

一年来都忙着更新全系列显卡家族的 NVIDIA,先从 GTX1080 和 GTX1070 开始,到 GTX1060 和卡王 Titan X,一步一步将整条产品线升级到 Pascal 核心。今天的 GTX1050 和 GTX1050 Ti 则是补上了中低端市场的短板,让 AMD 享受了两个月优…

linux runqueue定义,Linux中多CPU的runqueue及抢占

一、引出在在嵌入式操作系统中,很多线程都可以为实时任务,因为毕竟这些线程很少和人接触,而是面向任务的。所有就有一个抢占的时机问题。特别是2.6内核中引入了新的内核态抢占任务,所以就可以说一下这个内核态抢占的实现。内核态抢…

c语言中把时间拷到字符串中,C语言中将日期和时间以字符串格式输出的方法

ctime()函数:头文件:#include 定义函数:char *ctime(const time_t *timep);函数说明:ctime()将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由…

c语言补全程序,跪求高手解答简单的程序补全题~!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼英勇的你不断疯狂的射击天上的幽灵,这些太空怪物也毫不留情地还击,逼得你只好左闪右闪地躲,但是你仍奋战不懈,穿梭于枪林弹雨之中,直到你消灭所有的幽灵,或者是…

数控机床需要c语言程序吗,数控机床编程与操作--详细介绍

前言第1章 数控机床加工概述111 数控加工概述1111 数控技术1112 数控加工的概念212 数控机床的组成和分类2121 数控机床的组成2122 数控机床的工作原理5123 数控机床的分类513 数控机床的特点和应用范围10131 数控机床加工的…

c语言数学语文英语成绩编程,急求一编程题!…

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include "stdlib.h"int i,j;struct STUDENT{int xuehao;float yuwen;float shuxue;float yingyu;float sum;float average;}student[3];void huhuan1(int a,int b){int c; ca;ab;bc;}void huhuan(float x,floa…

c语言英文星期几,输入字母,判断星期几,求大神指点

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#includevoid uh() //判断周二还是周三{ char sec;printf("请继续输入:\n");bq:scanf("%c",&sec);if(secu||secU)printf("It is Tuesday!\n");else if(secH||sech)printf("It i…

c语言怎么判断文件类型,判断你的文件是否为合法的PE文件和应用类型

作者:赖锋源代码下载可能很多的人都没有注意到一些事情,就是你的程序是不是合法的可运行的应用程序,例如一个文件只是把后缀改成 .exe 的形式就显示为应用程序的图标了! 你不想写一个根据后缀名就确定应用程序类型的程序吧!这样太哪个了吧!解…

c语言项开发班级登入系统,c语言--班级管理系统

满意答案dgfetc5832013.12.10采纳率:47% 等级:12已帮助:14710人class student{public:char m_strName[10]; // 姓名int m_nNum; // 学号float m_dScore[4]; // 成绩};void InputScore(student* p, int nNumber){if(nNumber > 10){print…

android 高度百分比,如何在Android中进行百分比高度和宽度?

现在,可以用Guidelines定位百分比值xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"android:layout_width"match_parent"android:layout_height"match_parent&q…

android 知识点大全,Android基础知识总结(一)

1.面向对象(OOP):针对业务处理过程的实体及其属性和行为进行抽象封装以获得高效清晰的逻辑单元划分。三大特性:①封装(隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变量隔离便于使用,提高代码的服用小和安全性…

android fragment 弹出对话框,Android中使用Dialogfragment显示对话框

其他注意事项:1、如何设置自己的Dialogfragment没有标题栏?可以通过两种方法来设置 ,一种是使用dialogfragment的setStyle函数,另外就是使用getDialog().getWindow().requestFeature方法,具体代码如下Overridepublic D…

android sd卡不可写,Android检查SD卡是否可读写

因为external storage可能是不可用的,比如遇到SD卡被拔出等情况时。因此在访问之前应对其可用性进行检查。我们可以通过执 行 getExternalStorageState()来查询external storage的状态。若返回状态为MEDIA_MOUNTED, 则 可以读写。/* Checks if external storage is …

Android7.0 emui主题,全新EMUI5.0基于Android7.0 天生快,一生快!

EMUI5.0是基于Android 7.0开发的全新一代操作系统。 循着神秘古老的爱琴海带来的灵感,EMUI5.0用户界面的设计极其简单干净,令人赏心悦目。 因了解用户习惯而全新改善,EMUI5.0流畅自然的表现不会随时间递减,让生活得心应手&#xf…

html生成原理,Axure生成HTML的原理是什么?

回答:云渲染平台分布式并行计算分为空间上的并行和时间上的并行。空间上的并行是指用多个处理器并发的执行计算,比如Mentalray渲染器就支持单帧画面分割渲染,时间上的并行就是指流水线技术。云渲染平台现在的集群计算系统的前沿科学研究主要是…

在微信公众号中写html代码吗,微信公众号代码编写怎么做

微信公众号编写微信代码,因为有这方面的需要,需要去进行微信公众号代码编写。以下是学习啦小编为您带来的关于微信公众号代码编写,希望对您有所帮助。微信公众号代码编写微信公众平台编辑器不能直接编写微信代码,但是可以通过第三…

html代码在线分析,网站html代码解析

1、什么是HTML文件?HTML中文叫做“超文本标记语言”,一个HTML文件不仅包含文本内容,还包含一些标记,一个HTML文件的后缀名是.htm或者是.html。用文本编辑器(Dreamweaver)就可以编写HTML文件。2、html文件的基本结构:(成…