您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 第十章 Linux 文件系统
1Linux文件系统简介•操作系统中负责管理和存储信息的软件机构称为文件管理系统,简称文件系统,是操作系统用于明确磁盘或分区上的文件的方法和数据结构,即磁盘上组织的方法。•一个分区或磁盘能作为文件系统使用前,需要初始化,并将记录数据结构写到磁盘上。这个过程就叫建立文件系统。2Linux文件系统简介•Linux内核启动期间进行的最后操作之一就是安装(挂载)根文件系统,这一步操作完成,Linux下的程序就可以访问基于文件系统的数据文件或驱动程序。3Linux文件系统简介•在Unix业界有一句话叫做“一切皆文件”,这是对Linux文件系统的一个很好抽象。•我们说“Linux中一切皆文件”直观地可以这样理解:所有的东西,设备、内存都模拟成文件。•而Windows中,我们则可以极端地认为“一切皆设备”4Linux的文件系统可以认为包括4种主要组成部分:–命名空间(给事物取名,并按一种层次解构组织他们的形式)–API(用来便利和操作对象的一套系统调用)–安全模型(用来保护,隐藏和共享事物的方案)–实现(把逻辑模型同实际硬件联系到一起的软件)5文件类型•我们把Linux下的文件分成5种文件类型:–c字符设备–b块设备–l连接–f普通文件–d目录。}设备文件}6设备文件Linux中的设备有2种类型:字符设备(无缓冲且只能顺序存取)、块设备(有缓冲且可以随机存取)。每个字符设备和块设备都必须有主、次设备号,主设备号相同的设备是同类设备(使用同一个驱动程序)。这些设备中,有些设备是对实际存在的物理硬件的抽象,而有些设备则是内核自身提供的功能(不依赖于特定的物理硬件,又称为“虚拟设备”)。7设备文件的命名•内核能够识别的所有设备都记录在源码树下的Documentation/devices.txt文件中。----------------------------------------------------------------------主设备号设备类型次设备号=文件名简要说明----------------------------------------------------------------------0未命名设备(例如:挂载的非设备)0=为空设备号保留1char内存设备1=/dev/mem直接存取物理内存2=/dev/kmem存取经过内核虚拟之后的内存3=/dev/null空设备。任何写入都将被直接丢弃,任何读取都将得到EOF。……11=/dev/kmsg任何对该文件的写入都将作为printk的输出…...8API–文件操作系统调用•Linux操作系统提供了一系列的系统调用来进行文件操作。•常用的文件操作系统调用–创建creat–打开open–读写read/write–I/O操作ioctl–关闭close9文件系统的安全性•linux作为一种网络操作系统,允许多个用户使用,为了保护用户的个人文件不被其他用户所侵犯,linux(在unix的基础上)提供了文件权限机制,用来保护用户的个人信息。•使用用户分类:–超级用户:管理者–普通用户:合法用户–匿名用户:一般情况下为合法用户10文件访问权限Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。文件的访问权限分为只读,只写和可执行三种。以普通文件为例:只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。11查看文件访问权限•对文件来说,有三种不同类型的用户可进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中其他用户都能访问该用户拥有的文件或目录。•当用ls-l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。•例如:•$ls-lsobsrc.tgz•-rw-r--r--1rootroot483997Ju1l517:3lsobsrc.tgz12查看文件访问权限•第一个字符一般用来区分文件和目录:–d:表示是一个目录,事实上在ext2fs中,目录是一个特殊的文件。–-:表示这是一个普通的文件。–l:表示这是一个符号链接文件,实际上它指向另一个文件。–b、c:分别表示区块设备和其他的外围设备,是特殊类型的文件。–s、p:这些文件关系到系统的数据结构和管道,通常很少见到。•后9位就是文件的访问权限。每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。13文件访问权限的字母表示•文件的权限,分为三段,分别代表“所有者(u)”、“同组人(g)”、“其它人(o)”的读(r)、写(w)、执行(x)的权限。•对普通文件而言,“r”代表可以阅读文件内容,“w”代表可以修改或删除文件内容,“x”代表可以将文件作为命令来执行(同时需要r权限)。•对目录文件而言,r代表可以列出目录所包括的文件,w可以在目录内创建或删除文件(同时需要x权限),x表明目录可以做为活动目录。14文件访问权限的数字表示文件和目录的权限表示,是用rwx这三个字符来代表所有者、用户组和其他用户的权限。有时候,字符似乎过于麻烦,因此还有另外一种方法是以数字来表示权限,而且仅需三个数字。r:对应数值4w:对应数值2x:对应数值1-:对应数值0数字设定的关键是mode的取值,将rwx看成二进制数,如果有则用1表示,没有则用0表示,那么rwxr-xr--则可以表示成为:111101100再将其每三位转换成为一个十进制数,就是754。15改变文件的访问权限•例如,我们想让a.txt这个文件的权限为:•自己同组用户其他用户•可读是是是•可写是是•可执行是•那么,我们先根据上表得到权限串为:rw-rw-r--,那么转换成二进制数就是110110100,再每三位转换成为一个十进制数,就得到664,因此我们执行命令:•[root@localhost~]#chmod664a.txt•按照上面的规则,rwx合起来就是4+2+1=7。–一个rwxrwxrwx权限全开放的文件,数值表示为777;–而完全不开放权限的文件“---------”其数字表示为000。16Linux支持的常见的文件系统类型•Linux自身提供的缺省文件系统:ext2fs(一般根文件系统/使用此文件系统);新增的自身提供的文件系统:ext3fs、ReiserFS、IBMJFS等•其它UNIX使用的文件系统:minix,ext,xiafs等•DOS/Windows使用的文件系统:FAT-12,FAT-16,FAT-32,VFAT,NTFS•CD-ROM:ISO9660•NFS(网络文件系统);SMBFS(Windows共享文件系统)•嵌入式常用的文件系统:cramfs,JFFS2•/proc(用于内核和进程信息,操作系统在内存中创建)17虚拟文件系统•现在的系统大多都在系统内核和文件系统之间提供一个标准的接口,真实的文件系统通过一个接口层从操作系统和系统服务中分离出来,这样不同文件结构之间的数据可以十分方便地交换。•Linux也在系统内核和文件系统之间提供了一种叫做虚拟文件系统VFS(virtualfilesystem)的标准接口。•VFS允许Linux支持许多(通常是不同的)文件系统,每一个都向VFS表现一个通用的软件接口。Linux文件系统的所有细节都通过软件进行转换,所以所有的文件系统对于Linux核心的其余部分和系统中运行的程序显得一样。18虚拟文件系统转换Linux文件管理程序系统调用接口VFS转换FAT文件系统Ext2文件系统/proc文件系统1920•Linux成功的关键就是支持多文件系统•VFS所支持的文件系统,可以查看fs目录NetworknfsCodaAFS-AndrewFSsmbfs-LanManagerncpfs-NovellSpecialonesprocfs-/procumsdos-UnixinDOSuserfs-redirectortouserMediabasedext2-Linuxnativeufs-BSDfat-DOSFSvfat-win95hpfs-OS/2minix-well….Isofs-CDROMsysv-SysvUnixaffs-AmigaFastFSNTFS-NT’sFSadfs-Acorn-strongarm21检查/proc/filesystems•可以检查/proc/filesystems来查看登记了哪些文件系统22mount命令•命令格式:mount[-参数][设备名称][挂载点]•功能:linux中挂载不同格式文件系统命令。•常用选项-w以可读写模式加载设备,默认设置。-r以只读方式加载设备。-t指定设备的文件系统类型。常用的选项说明有:ext2Linux目前的常用文件系统。msdosMS-DOS的FAT。vfatWin85/98的VFAT。nfs网络文件系统。iso9660CD-ROM光盘的标准文件系统。auto自动检查文件系统-h显示在线帮助信息。-o指定加载文件系统时的选项。23df命令•命令格式:df[选项]...[FILE]...•功能:linux中df命令参数功能:检查文件系统的磁盘空间占用情况。•常用选项-a显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。-k以k字节为单位显示。-i显示i节点信息,而不是磁盘块。-t显示各指定类型的文件系统的磁盘空间使用情况。-x列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。-T显示文件系统类型。24mkfs命令•命令格式:mkfs[-V][-tfstype][fs-options]filesys[blocks]•说明:建立linux文件系统在特定的分区上•参数:-V:详细显示模式-t:指定文件系统格式,缺省值为ext2-c:在制做文件系统前,检查该分区是否有坏块block:给定block的大小•例子:在/dev/hda5上建一个msdos的文件系统,同时检查是否有坏块存在,並且将过程详细列出來:mkfs-V-tmsdos-c/dev/hda525基于FLASH的文件系统•Flash(闪存)作为嵌入式系统的主要存储媒介,有其自身的特性。Flash的写入操作只能把对应位置的1修改为0,而不能把0修改为1(擦除Flash就是把对应存储块的内容恢复为1),因此,一般情况下,向Flash写入内容时,需要先擦除对应的存储区间,这种擦除是以块(block)为单位进行的。•闪存主要有NOR和NAND两种技术。Flash的擦写次数是有限的,NAND闪存还有特殊的硬件接口和读写时序。因此,必须针对Flash的硬件特性设计符合应用要求的文件系统;传统的文件系统如ext2等,用作Flash的文件系统会有诸多弊端。•在嵌入式Linux下,MTD(MemoryTechnologyDevice,存储技术设备)为底层硬件(闪存)和上层(文件系统)之间提供一个统一的抽象接口,即Flash的文件系统都是基于MTD驱动层的。使用MTD驱动程序的主要优点在于,它是专门针对各种非易失性存储器(以闪存为主)而设计的,因而它对Flash有更好的支持、管理和基于扇区的擦除、读/写操作接口。26Jffs2•Jffs2:日志闪存文件系统版本2(JournallingFlashFileSystemv2)•JFFS文件系统最早是由瑞典AxisCommunications公司基于Linux2.0的内核为嵌入式系统开发的文件系统。JFFS2是RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入
本文标题:第十章 Linux 文件系统
链接地址:https://www.777doc.com/doc-3284650 .html