志在指尖
用双手敲打未来

linux文件系统(linux文件系统类型有哪些)

linux文件系统

在LINUX体系中有一个重要的概念:全部都是文件。其实这是UNIX哲学的一个表现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX体系中,把全部资源都看作是文件,包括硬件设备。UNIX体系把每个硬件都看成是一个文件,通常称为设备文件,这样用户就能够用读写文件的方法完成对硬件的拜访。这样带来优势也是显而易见的:
UNIX权限模型也是围绕文件的概念来树立的,所以对设备也就能够相同处理了。
在这里刺进图片描绘
硬盘驱动
常见的硬盘类型有PATA,SATA和AHCI等,在Linux体系中,对不同硬盘所供给的驱动模块一般都寄存在内核目录树drivers/ata中,而关于一般通用的硬盘驱动,也许会直接被编译到内核中,而不会以模块的方法呈现,能够经过检查/boot/config-xxx.xxx文件来确认:
CONFIG_SATA_AHCI=y
GeneralBlockDeviceLayer
这一层的作用,正是解答了上面提出的第一个问题,不同的硬盘驱动,会供给不同的IO接口,内核以为这种凌乱的接口,不利于办理,需求把这些接口笼一致下,构成一个一致的对外接口,这样,不论你是什么硬盘,什么驱动,对外而言,它们所供给的IO接口没什么差异,都天公地道的被看作块设备来处理。
所以,如果在一层做的任何修正,将会直接影响到一切文件体系,不论是ext3,ext4仍是其它文件体系,只要在这一层次做了某种修正,对它们都会产生影响。
文件体系
文件体系这一层相信大家都再了解不过了,现在大多Linux发行版别默许运用的文件体系一般是ext4,别的,新一代的btrfs也呼之欲出,不论什么样的文件体系,都是由一系列的mkfs.xxx指令来创立,如:
mkfs.ext4/dev/sda
mkfs.btrfs/dev/sdb
内核所支撑的文件体系类型,能够经过内核目录树fs目录中的内容来检查。
虚拟文件体系(VFS)
VirtualFileSystem这一层,正是用来处理上面提出的第二个问题,试想,当咱们经过mkfs.xxx系列指令创立了许多不同的文件体系,但这些文件体系都有各自的API接口,而用户想要的是,不论你是什么API,他们只关怀mount/umount,或open/close等操作。
所以,VFS就把这些不同的文件体系做一个笼统,供给一致的API拜访接口,这样,用户空间就不必关怀不同文件体系中不一样的API了。VFS所供给的这些一致的API,再经过SystemCall包装一下,用户空间就能够经过SCI的体系调用来操作不同的文件体系。
VFS所供给的常用API有:
mount(),umount()…
open(),close()…
mkdir()…
和文件体系联系最密切的便是存储介质,存储介质大致有RAM,ROM,磁盘磁带,闪存等。
闪存(FlashMemory)是一种长寿命的非易失性(在断电情况下仍能坚持所存储的数据信息)的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位(注意:NORFlash为字节存储。),区块巨细一般为256KB到20MB。闪存是电子可擦除只读存储器(EEPROM)的变种,EEPROM与闪存不同的是,它能在字节水平上进行删除和重写而不是整个芯片擦写,这样闪存就比EEPROM的更新速度快。因为其断电时仍能保存数据,闪存通常被用来保存设置信息,如在电脑的BIOS(基本输入输出程序)、PDA(个人数字助理)、数码相机中保存资料等。
外存通常是磁性介质或光盘,像硬盘,软盘,磁带,CD等,能长时刻保存信息,而且不依赖于电来保存信息,可是由机械部件带动,速度与CPU比较就显得慢的多。内存指的便是主板上的存储部件,是CPU直接与之交流,并用其存储数据的部件,寄存当前正在运用的(即履行中)的数据和程序,它的物理实质便是一组或多组具备数据输入输出和数据存储功能的集成电路,内存只用于暂时寄存程序和数据,一旦封闭电源或发生断电,其间的程序和数据就会丢掉。
RAM又分为动态的和静态。。静态被用作cache,动态的常用作内存。。网上说闪存不能替代DRAM是因为闪存不像RAM(随机存取存储器)一样以字节为单位改写数据,因此不能取代RAM。这个以后能够了解下硬件的常识再来辨别.
Linux下的文件体系结构如下:
在这里刺进图片描绘
Linux发动时,第一个有必要挂载的是根文件体系;若体系不能从指定设备上挂载根文件体系,则体系会犯错而退出发动。之后能够主动或手动挂载其他的文件体系。因此,一个体系中能够一同存在不同的文件体系。
不同的文件体系类型有不同的特点,因此根据存储设备的硬件特性、体系需求等有不同的运用场合。在嵌入式Linux运用中,首要的存储设备为RAM(DRAM,SDRAM)和ROM(常选用FLASH存储器),常用的根据存储设备的文件体系类型包括:jffs2,yaffs,cramfs,romfs,ramdisk,ramfs/tmpfs等。
1.根据FLASH的文件体系
Flash(闪存)作为嵌入式体系的首要存储媒介,有其自身的特性。Flash的写入操作只能把对应方位的1修正为0,而不能把0修正为1(擦除Flash便是把对应存储块的内容恢复为1),因此,一般情况下,向Flash写入内容时,需求先擦除对应的存储区间,这种擦除是以块(block)为单位进行的。
闪存首要有NOR和NAND两种技能。Flash存储器的擦写次数是有限的,NAND闪存还有特别的硬件接口和读写时序。因此,有必要针对Flash的硬件特性规划符合运用要求的文件体系;传统的文件体系如ext2等,用作Flash的文件体系会有许多弊端。
在嵌入式Linux下,MTD(MemoryTechnologyDevice,存储技能设备)为底层硬件(闪存)和上层(文件体系)之间供给一个一致的笼统接口,即Flash的文件体系都是根据MTD驱动层的(参见上面的Linux下的文件体系结构图)。运用MTD驱动程序的首要优点在于,它是专门针对各种非易失性存储器(以闪存为主)而规划的,因此它对Flash有更好的支撑、办理和根据扇区的擦除、读/写操作接口。
顺便一提,一块Flash芯片能够被划分为多个分区,各分区能够选用不同的文件体系;两块Flash芯片也能够合并为一个分区运用,选用一个文件体系。即文件体系是针关于存储器分区而言的,而非存储芯片。
(1)jffs2
JFFS文件体系最早是由瑞典AxisCommunications公司根据Linux2.0的内核为嵌入式体系开发的文件体系。JFFS2是RedHat公司根据JFFS开发的闪存文件体系,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件体系,所以JFFS2也能够用在Linux,uCLinux中。
Jffs2:日志闪存文件体系版别2(JournallingFlashFileSystemv2)
首要用于NOR型闪存,根据MTD驱动层,特点是:可读写的、支撑数据紧缩的、根据哈希表的日志型文件体系,并供给了溃散/掉电安全保护,供给“写平衡”支撑等。缺陷首要是当文件体系已满或接近满时,因为垃圾搜集的联系而使jffs2的运转速度大大怠慢。
现在jffs3正在开发中。关于jffs系列文件体系的运用具体文档,可参考MTD补丁包中mtd-jffs-HOWTO.txt。
jffsx不适合用于NAND闪存首要是因为NAND闪存的容量一般较大,这样导致jffs为保护日志节点所占用的内存空间迅速增大,别的,jffsx文件体系在挂载时需求扫描整个FLASH的内容,以找出一切的日志节点,树立文件结构,关于大容量的NAND闪存会耗费大量时刻。
(2)yaffs:YetAnotherFlashFileSystem
yaffs/yaffs2是专为嵌入式体系运用NAND型闪存而规划的一种日志型文件体系。与jffs2比较,它减少了一些功能(例如不支撑数据紧缩),所以速度更快,挂载时刻很短,对内存的占用较小。别的,它仍是跨平台的文件体系,除了Linux和eCos,还支撑WinCE,pSOS和ThreadX等。
yaffs/yaffs2自带NAND芯片的驱动,而且为嵌入式体系供给了直接拜访文件体系的API,用户能够不运用Linux中的MTD与VFS,直接对文件体系操作。当然,yaffs也可与MTD驱动程序合作运用。
yaffs与yaffs2的首要差异在于,前者仅支撑小页(512Bytes)NAND闪存,后者则可支撑大页(2KB)NAND闪存。一同,yaffs2在内存空间占用、垃圾收回速度、读/写速度等方面均有大幅提升。
(3)Cramfs:CompressedROMFileSystem
Cramfs是Linux的创始人LinusTorvalds参加开发的一种只读的紧缩文件体系。它也根据MTD驱动程序。
在cramfs文件体系中,每一页(4KB)被独自紧缩,能够随机页拜访,其紧缩比高达2:1,为嵌入式体系节省大量的Flash存储空间,使体系可经过更低容量的FLASH存储相同的文件,然后降低体系成本。
Cramfs文件体系以紧缩方法存储,在运转时解紧缩,所以不支撑运用程序以XIP方法运转,一切的运用程序要求被拷到RAM里去运转,但这并不代表比Ramfs需求的RAM空间要大一点,因为Cramfs是选用分页紧缩的方法寄存档案,在读取档案时,不会一会儿就耗用过多的内存空间,只针对现在实践读取的部分分配内存,尚没有读取的部分不分配内存空间,当咱们读取的档案不在内存时,Cramfs文件体系主动计算紧缩后的资料所存的方位,再即时解紧缩到RAM中。
别的,它的速度快,效率高,其只读的特点有利于保护文件体系免受损坏,提高了体系的可靠性。
因为以上特性,Cramfs在嵌入式体系中运用广泛。
可是它的只读属性一同又是它的一大缺陷,使得用户无法对其内容对进扩大。?
Cramfs映像通常是放在Flash中,可是也能放在别的文件体系里,运用loopback设备能够把它安装别的文件体系里。
(4)Romfs
传统型的Romfs文件体系是一种简单的、紧凑的、只读的文件体系,不支撑动态擦写保存,按次序寄存数据,因此支撑运用程序以XIP(eXecuteInPlace,片内运转)方法运转,在体系运转时,节省RAM空间。uClinux体系通常选用Romfs文件体系。
其他文件体系:fat/fat32也可用于实践嵌入式体系的扩展存储器(例如PDA,Smartphone,数码相机等的SD卡),这首要是为了更好的与最流行的Windows桌面操作体系相兼容。ext2也能够作为嵌入式Linux的文件体系,不过将它用于FLASH闪存会有许多弊端。
2.根据RAM的文件体系
(1)Ramdisk
Ramdisk是将一部分固定巨细的内存当作分区来运用。它并非一个实践的文件体系,而是一种将实践的文件体系装入内存的机制,而且能够作为根文件体系。将一些经常被拜访而又不会更改的文件(如只读的根文件体系)经过Ramdisk放在内存中,能够明显地提高体系的功能。
在Linux的发动阶段,initrd供给了一套机制,能够将内核映像和根文件体系一同载入内存。
(2)ramfs/tmpfs
Ramfs是LinusTorvalds开发的一种根据内存的文件体系,工作于虚拟文件体系(VFS)层,不能格式化,能够创立多个,在创立时能够指定其最大能运用的内存巨细。(实践上,VFS本质上可看成一种内存文件体系,它一致了文件在内核中的表示方法,并对磁盘文件体系进行缓冲。)
Ramfs/tmpfs文件体系把一切的文件都放在RAM中,所以读/写操作发生在RAM中,能够用ramfs/tmpfs来存储一些临时性或经常要修正的数据,例如/tmp和/var目录,这样既避免了对Flash存储器的读写损耗,也提高了数据读写速度。
Ramfs/tmpfs相关于传统的Ramdisk的不同之处首要在于:不能格式化,文件体系巨细可随所含文件内容巨细改变。
Tmpfs的一个缺陷是当体系重新引导时会丢掉一切数据。
3.网络文件体系NFS(NetworkFileSystem)
NFS是由Sun开发并发展起来的一项在不同机器、不同操作体系之间经过网络共享文件的技能。在嵌入式Linux体系的开发调试阶段,能够利用该技能在主机上树立根据NFS的根文件体系,挂载到嵌入式设备,能够很方便地修正根文件体系的内容。
以上评论的都是根据存储设备的文件体系(memory-basedfilesystem),它们都可用作Linux的根文件体系。实践上,Linux还支撑逻辑的或伪文件体系(logicalorpseudofilesystem),例如procfs(proc文件体系),用于获取体系信息,以及devfs(设备文件体系)和sysfs,用于保护设备文件。
附录:NOR闪存与NAND闪存比较
NORFLASH
接口时序同SRAM,易运用
读取速度较快
擦除速度慢,以64-128KB的块为单位
写入速度慢(因为一般要先擦除)
随机存取速度较快,支撑XIP(eXecuteInPlace,芯片内履行),适用于代码存储。在嵌入式体系中,常用于寄存引导程序、根文件体系等。
单片容量较小,1-32MB
最大擦写次数10万次
NANDFLASH
地址/数据线复用,数据位较窄
读取速度较慢
擦除速度快,以8-32KB的块为单位
写入速度快
次序读取速度较快,随机存取速度慢,适用于数据存储(如大容量的多媒体运用)。在嵌入式体系中,常用于寄存用户文件体系等。
单片容量较大,8-128MB,提高了单元密度linux

linux文件系统类型有哪些

Linux中一切皆为文件,文件类型也有多种,运用ls-l指令能够检查文件的特点,所显现成果的榜首列的榜首个字符用来标明该文件的文件类型,如下:
1、一般文件
运用ls-l指令后,榜首列榜首个字符为”-“的文件为一般文件,如上图所示,一般文件一般为灰色字体,绿色字体的是可执行文件,红色字体的是压缩文件。
文件的权限:
以一般文件为例,运用ls-l指令,能够看到成果的榜首列是-rwxrwxrwx的方法,其间榜首个字符”-“标明这个文件为一般文件,它也能够是其他的字符,不同的字符代表不同类型的文件。这以后的一串字符标明晰该文件的权限,其间:
1)r标明该文件具有可读权限,若该方位为”-“,则标明文件不可读;
2)w标明该文件具有写权限,若该方位为”-“,则标明文件不可写;
3)x标明该文件具有可执行权限,若该方位为”-“,则标明文件不具有可执行权限;
4)榜首个rwx标明该文件的所有者对该文件的权限;第二个rwx标明该文件所属组对该文件的权限;第三个rwx标明其他用户对该文件的权限。
创立一个一般文件:
能够运用touch指令来创立一个文件:
touchnewfile
删去一个一般文件:
能够运用rm指令来删去一个文件:
rmnewfile
2、目录文件
Linux中的目录也是文件,目录文件中保存着该目录下其他文件的inode号和文件名等信息,目录文件中的每个数据项都是指向某个文件inode号的链接,删去文件名就等于删去与之对应的链接。目录文件的字体颜色是蓝色,运用ls-l指令检查,榜首个字符为”d”(directory)。
目录文件的权限:
1)r标明该目录文件具有可读权限,即能够运用ls指令检查该目录的存储情况;
2)w标明该目录文件具有写权限,即能够往该目录下增加、修正、删去文件;
3)x标明该目录文件具有可执行文件,即能够运用cd指令进入到该目录下。
能够运用chmod指令来改变文件的权限。
创立一个目录:
能够运用mkdir指令来创立一个目录文件:
删去一个目录:
能够运用rmdir指令来删去一个空目录:
rmdirdirectory
假如该目录下有其他文件,则能够运用rm-r指令来递归删去该目录下的所有文件。需要留意的是,运用该指令将会删去该目录及目录下的所有数据,进程不可逆,需要谨慎运用:
3、链接文件
链接文件一般指的是一个文件的软连接(或符号链接),运用ls-l指令检查,榜首个符号为”l”,文件名为浅蓝色,如下:
这儿,test_softlink便是一个链接文件,从成果上还能够看到它是文件test.txt的软链接,删去原文件test.txt的话,对应的软链接文件test_softlink也会消失。能够运用ln指令来创立一个文件的链接文件:
1)软链接
软链接(又称符号链接),运用ln-sfilefile_softlink指令能够创立一个文件的软链接文件:
软链接相当于给原文件创立了一个快捷方法,假如删去原文件,则对应的软链接文件也会消失。
2)硬链接
硬链接,相当于给原文件取了个别名,其实两者是同一个文件,删去二者中任何一个,另一个不会消失;对其间任何一个进行更改,另一个的内容也会随之改变,因为这两个本质上是同一个文件,仅仅姓名不同。运用ls-i指令检查,能够发现硬链接的两个文件的inode号是一样的:
相同的,运用ln指令能够创立一个文件的硬链接:
4、设备文件
Linux中的硬件设备如硬盘、鼠标等也都被标明为文件,即为设备文件。设备文件一般存放在/dev/目录下,文件名为黄色,如下:
设备文件分两种:
1)块设备文件:
块设备文件支撑以块(block)为单位的拜访方法。在EXT4文件体系中,一个block一般为4KB的巨细,也便是说每次能够存取4096(或其整数倍)个字节的数据。应用程序能够随机拜访块设备文件的数据,程序能够自行确认数据的方位,硬盘、软盘等都是块设备。运用ls-l指令检查,块设备文件的榜首个字符是”b”(block)。
2)字符设备文件:
字符设备文件以字节流的方法进行拜访,由字符设备驱动程序来实现这种特性,这一般要用到open、close、read、write等体系调用。字符终端、串口和键盘等便是字符设备。另外,因为字符设备文件是以文件流的方法进行拜访的,因而能够顺序读取,但一般不支撑随机存取。运用ls-l指令检查,字符设备文件的榜首个字符是”c”(char)。
5、管道文件(FIFO文件)
管道文件首要用于进程间通讯,运用ls-l指令检查,榜首个字符为”p”(pipe)。能够运用mkfifo指令来创立一个管道文件:
在FIFO中能够很好地解决在无关进程间数据交换的要求,FIFO的通讯方法类似于在进程中运用文件来传输数据,只不过FIFO类型的文件一起具有管道的特性,在读取数据时,FIFO管道中一起铲除数据。

未经允许不得转载:IT技术网站 » linux文件系统(linux文件系统类型有哪些)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载