一、什么是文件系统
计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。在写入新数据之前,用户不必关心硬盘上的那个块地址没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件中。
二、文件系统的组成元素文件名:在文件系统中,文件名是用于定位存储位置。
元数据(Metadata):其它文件保存信息常常伴随着文件自身保存在文件系统中。文件长度可能是分配给这个文件的区块数,也可能是这个文件实际的字节数。文件最后修改时间也许记录在文件的时间戳中。有的文件系统还保存文件的创建时间,最后访问时间及属性修改时间。(不过大多数早期的文件系统不记录文件的时间信息)其它信息还包括文件设备类型(如:区块数,字符集,套接口,子目录等等),文件所有者的ID,组ID,还有访问权限(如:只读,可执行等等)。
数据(Data):实际存放的内容
安全访问:针对基本文件系统操作的安全访问可以通过访问控制列表或capabilities实现。研究表明访问控制列表难以保证安全,这也就是研发中的文件系统倾向于使用capabilities的原因。然而目前多数商业性的文件系统仍然使用访问控制列表。
三、文件系统的分类a.磁盘文件系统:磁盘文件系统是一种设计用来利用数据存储设备来保存计算机文件的文件系统,最常用的数据存储设备是磁盘驱动器,可以直接或者间接地连接到计算机上。例如:FAT、exFAT、NTFS、HFS、HFS+、ext2、ext3、ext4、ODS-5、btrfs。有些文件系统是进程文件系统(也有译作日志文件系统)或者追踪文件系统。
b.闪存文件系统:闪存文件系统是一种设计用来在闪存上储存文件的文件系统。
c.数据库文件系统:文件管理方面的一个新概念是一种基于数据库的文件系统的概念。不再(或者不仅仅)使用分层结构管理,文件按照他们的特征进行区分,如文件类型、专题、作者或者亚数据进行区分。于是文件检索就可以按照SQL风格甚至自然语言风格进行。
d.网络文件系统:网络文件系统(NFS,Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制。
说明:随着Linux的不断发展,它所支持的文件格式系统也在迅速扩充,Linux系统核心可以支持十多种文件系统类型:Btrfs、JFS、ReiserFS、ext、ext2、ext3、ext4、XFS、ISO 9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。 注意:部分Linux发行版默认不支持NTFS文件系统,解决方法是安装ntfs-3g或ufsd等NTFS驱动程序。部分Linux发行版对NTFS的支持度并不高。
四、文件系统结构:/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器 (bootloader, grub)都存放于此目录
/bin:供所有用户使用的基本命令;不能关联至独立分区, OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区, OS启动即 会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件 (/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/usr:Unix Software Resource universal shared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序 sbin: lib: 32位使用 lib64:只存在64位系统 include: C程序的头文件(header files) share:结构化独立的数据,例如doc, man等 local:第三方应用程序的安装位置 bin, sbin, lib, lib64, etc, share