还剩7页未读,继续阅读
文本内容:
Linux文件系统Linux最早的文件系统是Minix但是专门为Linux设计的文件系统一一扩展文件系统第二版或者EXT2被设计出来并添加到Linux中,这对Linux产生了重大影响EXT2文件系统功能强大、易扩充、性能上进行了全面优化,也是现在所有Linux发布和安装的标准文件系统类型磁盘组织ext2系统中,所有元数据结构的大小均基于“块”,而不是“扇区”块的大小随文件系统的大小而有所不同而一定数量的块又组成一个块组,每一个块组的起始部份有多种多样的描述该块组各种属性的元数据结构ext2系统中对各个结构的定义都包含在原始码的include/linux/ext2_fs.h文件中
1、超级块每一个ext2文件系统都必须包含一个超级块,其中存储了该文件系统的大量基本信息包括块的大小、每块组中包含的块数等同时,系统会对超级块进行备份,备份被存放在块组的第一个块中超级块的起始位置为其所在分区的第1024个字节,占用1KB的空间
2、块组描述符一个块组描述符用以描述一个块组的属性块组描述符组由若干块组描述符组成,描述了文件系统中所有块组的属性,存放于超级块所在块的下一个块中
3、块位图和inode位图块位图和inode位图的每一位分别指出块组中对应的那个块或者inode是否被使用
4、inode表inode表用于跟踪定位每一个文件,包括位置、大小等(但不包括文件名),一个块组惟独一个inode表
5、数据块数据块中存放文件的内容,包括目录表、扩展属性、符号链接等目录结构在ext2文件系统中,目录是作为文件存储的根目录总是在inode表的第二项,而其子目录则在根目录文件的内容中定义目录项在include八inux/ext2_fs.h文件中定义文件扩展属性文件的属性大多数是位于该文件的inode结构中的标准属性,也还包含其他一些扩展属性(于系统中所有的inode相关,通常用于增加额外的功能),在fs/ext2/xattr.h文件中定义虚拟文件系统VirtualFileSystemsVFSLinux是近年来发展起来的一种新型的操作系统,其最重要的特征之一就是支持多种文件系统,使其更加灵便,从而与许多其它的操作系统共存Linux支持extext2xiaminixumsdosmsdesfat32ntfsprocstubnephpfsaffs以及ufs等多种文件系统为了实现这一目的,Linux对所有的文件系统采用统一的文件界面,用户通过文件的操作界面来实现对不同文件系统的操作对于用户来说,我们不要去关心不同文件系统的具体操作过程,而只是对一个虚拟的文件操作界面来进行操作,这个操作界面就是Linux的虚拟文件系统VFSo形象地说,Linux的内核好象一个PC机的母板,VFS就是上面的一个插槽,具体的文件系统就是一块块的接121卡因此,每一个文件系统之间互不干扰,而只是调用相应的程序来实现其功能在Linux的内核文件中,VFS和具体的文件系统程序都放在Linux\FS中,其中每一种文件系统对应一个子目录,此外还有一些共用的VFS程序在具体的实现上,每一个文件系统都有自己的文件操作数据结构file—operations所以,VFS作为ILinux内核中的一个软件层,用于给用户空间的程序提供文件系统接口,同时也提供了内核中的一个抽象功能,允许不同的文件系统很好地共存VFS使Linux同时安装、支持许多不同类型的文件系统成为可能VFS拥有关于各种特殊文件系统的公共界面,如超级块、inode、文件操作函数入口等实际文件系统的细节,统一由VFS的公共界面来索引,它们对系统核心和用户进程来说是透明的Linux文件结构linux下的文件结构,看看每一个文件夹都是干嘛用的/bin二进制可执行命令/dev设备特殊文件/etc系统管理和配置文件/etc/rc.d启动的配置文件和脚本/home用户主目录的基点,比如用户user的主目录就是/home/user可以用~user表示/lib标准程序设计库,又叫动态链接共享库,作用类似windows里的dl文件/sbin系统管理命令,这里存放的是系统管理员使用的管理程序/tmp公用的暂时文件存储点/root系统管理员的主目录呵呵,特权阶级/mnt系统提供这个目录是让用户暂时挂载其他的文件系统/lost+found这个目录平时是空的,系统非正常关机而留下“无家可归”的文件windows下叫什么.chk就在这里/proc虚拟的目录,是系统内存的映射可直接访问这个目录来获取系统信息/var某些大文件的溢出区,比方说各种服务的日志文件/usr最庞大的目录,要用到的应用程序和文件几乎都在这个目录其中包含/usr/x11r6存放xwindow的目录/usr/bin众多的应用程序/usr/sbin超级用户的一些管理程序/usr/doclinux文档/usr/includelinux下开辟和编译应用程序所需要的头文件/usr/lib常用的动态链接库和软件包的配置文件/usr/man匡助文档/usr/src源代码,linux内核的源代码就放在/usr/srcAinux里/usr/local/bin本地增加的命令/usr/local/lib本地增加的库通常情况下,根文件系统所占空间普通应该比较小,因为其中的绝大部份文件都不需要时常改动,而且包括严格的文件和一个小的不时常改变的文件系统不容易损坏除了可能的一个叫/vmlinuz标准的系统引导映像之外,根目录普通不含任何文件所其他文件在根文件系统的子目录中/bin目录/bin目录包含了引导启动所需的命令或者普通用户可能用的命令(可能在引导启动后)这些命令都是二进制文件的可执行程序(bin是binary一二进制的简称),多是系统中重要的系统文件/sbin目录/sbin目录类似/bin也用于存储二进制文件因为其中的大部份文件多是系统管理员使用的基本的系统程序,所以虽然普通用户必要且允许时可以使用,但普通不给普通用户使用/etc目录/etc目录存放着各种系统配置文件,其中包括了用户信息文件/etc/passwd系统初始化文件/etc/rc等linux正是*这些文件才得以正常地运行/root目录/root目录是超级用户的目录/lib目录/lib目录是根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件这些文件包含了可被许多程序共享的代码,以避免每一个程序都包含有相同的子程序的副本,故可以使得可执行文件变得更小,节省空间/lib/modules目录/lib/modules目录包含系统核心可加载各种模块,特别是那些在恢复损坏的系统时重新引导系统所需的模块(例如网络和文件系统驱动)/dev目录/dev目录存放了设备文件,即设备驱动程序,用户通过这些文件访问外部设备比如,用户可以通过访问/dev/mouse来访问鼠标的输入,就像访问其他文件一样/tmp目录/tmp目录存放程序在运行时产生的信息和数据但在引导启动后,运行的程序最好使用/var/tmp来代替/tmp因为前者可能拥有一个更大的磁盘空间/boot目录/boot目录存放引导加载器(bootstraploader)使用的文件,如IiIo核心映像也时常放在这里,而不是放在根目录中但是如果有许多核心映像,这个目录就可能变得很大,这时使用单独的文件系统会更好一些还有一点要注意的是,要确保核心映像必须在ide硬盘的前1024柱面内/mnt目录/mnt目录是系统管理员暂时安装munt文件系统的安装点程序并不自动支持安装到/mnt/mnt下面可以分为许多子目录,例如/mnt/dosa可能是使用msdos文件系统的软驱,而/mnt/exta可能是使用ext2文件系统的软驱,/mnt/cdrom光驱等等/proc/usr/var/home目录其他文件系统的安装点下面详细介绍;/e忙文件系统/etc目录包含各种系统配置文件,下面说明其中的一些其他的你应该知道它们属于哪个程序,并阅读该程序的man页许多网络配置文件也在/e忙中/etc/rc或者/etc/rc.d或者/etc/rc.d启动、或者改变运行级时运行的脚本或者脚本的目录/etc/passwd用户数据库,其中的域给出了用户名、真实姓名、用户起始目录、加密口令和用户的其他信息/etc/fdprm软盘参数表,用以说明不同的软盘格式可用setfdprm进行设置更多的信息见setfdprm的匡助页/etc/fstab指定启动时需要自动安装的文件系统列表也包括用swapon-a启用的swap区的信息/etc/group类似/etc/passwd,但说明的不是用户信息而是组的信息包括组的各种数据/etc/inittabinit的配置文件/etc/issue包括用户在登录提示符前的输出信息通常包括系统的一段短说明或者欢迎信息具体内容由系统管理员确定/etc/magic“fi1e”的配置文件包含不同文件格式的说明,“fi1e”基于它猜测文件类型/etc/motdmotd是messageoftheday的缩写,用户成功登录后自动输出内容由系统管理员确定常用于通告信息,如计划关机时间的警告等/etc/mtab当前安装的文件系统列表由脚本scritp初始化,并由mount命令自动更新当需要一个当前安装的文件系统的列表时使用例如df命令/etc/shadow在安装了影子shadow口令软件的系统上的影子口令文件影子口令文件将/etc/passwd文件中的加密口令挪移到/etc/shadow中,而后者只对超级用户(root)可读这使破译口令更困难,以此增加系统的安全性/etc/login.defslogin命令的配置文件/etc/printcap类似/etc/termcap但针对打印机语法不同/etc/profile、/etc/csh.login/etc/csh.cshrc登录或者启动时bourne或者cshells执行的文件这允许系统管理员为所实用户建立全局缺省环境/etc/securetty确认安全终端,即哪个终端允许超级用户(root)登录普通只列出虚拟控制台,这样就不可能(至少很艰难)通过调制解调器(modem)或者网络闯入系统并得到超级用户特权/etc/shells列出可以使用的she11ochsh命令允许用户在本文件指定范围内改变登录的she11提供台机器ftp服务的服务进程ftpd检查用户shell是否列在/etc/shells文件中,如果不是,将不允许该用户登录/etc/termcap终端性能数据库说明不同的终端用什么“转义序列”控制写程序时不直接输出转义序列(这样只能工作于特定品牌的终端),而是从/etc/termcap中查找要做的工作的正确序列这样,多数的程序可以在多数终端上运行/dev文件系统/dev目录包括所有设备的设备文件设备文件用特定的约定命名,这在设备列表中说明设备文件在安装时由系统产生,以后可以用/dev/makedev描述/dev/makedev.local是系统管理员为本地设备文件(或者连接)写的描述文稿(即如一些非标准设备驱动不是标准makedev的一部份)下面简要介绍/dev下一些常用文件/dev/console系统控制台,也就是直接和系统连接的监视器/dev/hdide硬盘驱动程序接口如/dev/hda指的是第一个硬盘,had1则是指/dev/hda的第一个分区如系统中有其他的硬盘,则挨次为/dev/hdb、/dev/hdc;如有多个分区则挨次为hda
1、hda2/dev/sdscsi磁盘驱动程序接口如有系统有scsi硬盘,就不会访问/dev/had而会访问/dev/sdao/dev/fd软驱设备驱动程序如/dev/fdO指系统的第一个软盘,也就是通常所说的a盘,/dev/fd1指第二个软盘,而/dev/fd1h1440则表示访问驱动器1中的
4.5高宓川.lJjnTLo/dev/stscsi磁带驱动器驱动程序/dev/tty提供虚拟控制台支持如/dev/tty1指的是系统的第一个虚拟控制台,/dev/tty2则是系统的第二个虚拟控制台/dev/pty提供远程登陆伪终端支持在进行teInet登录时就要用到/dev/pty设备/dev/ttys计算机串行接口,对于dos来说就是“coml”口/dev/cua计算机串行接口,与调制解调器一起使用的设备/dev/null“黑洞”,所有写入该设备的信息都将消失例如当想要将屏幕上的输出信息隐藏起来时,只要将输出信息输入到/dev/nu11中即可/usr文件系统/usr是个很重要的目录,通常这一文件系统很大,因为所有程序安装在这里/usr里的所有文件普通来自Iinux发行版(distribution);本地安装的程序和其他东西在/usr/local下,因为这样可以在升级新版系统或者新发行版时无须重新安装全部程序/usr目录下的许多内容是可选的,但这些功能会使用户使用系统更加有效/usr可容纳许多大型的软件包和它们的配置文件下面列出一些重要的目录(一些不太重要的目录被省略了)/usr/x11r6包含xwindow系统的所有可执行程序、配置文件和支持文件为简化x的开辟和安装,x的文件没有集成到系统中xwindow系统是一个功能强大的图形环境,提供了大量的图形工具程序用户如果对microsoftwindows或者machintosh比较熟悉的话,就不会对xwindow系统感到束手无策了/usr/x386类似/usr/x11r6但是是专门给x11release5的/usr/bin集中了几乎所实用户命令,是系统的软件库另有些命令在/bin或者/us〃local/bin中/usr/sbin包括了根文件系统不必要的系统管理命令,例如多数服务程序/usr/man/usr/info/usr/doc这些目录包含所有手册页、gnu信息文档和各种其他文档文件每一个联机手册的“节”都有两个子目录例如/usr/man/man1中包含联机手册第一节的源码(没有格式化的原始文件),/usr/man/cat1包含第一节已格式化的内容I联机手册分为以下九节内部命令、系统调用、库函数、设备、文件格式、游戏、宏软件包、系统管理和核心程序/usr/include包含了c语言的头文件,这些文件多以.h结尾,用来描述c语言程序中用到的数据结构、子过程和常量为了保持一致性,这实际上应该放在/usr/lib下,但习惯上向来沿用了这个名字/usr/lib包含了程序或者子系统的不变的数据文件,包括一些site-wide配置文件名字lib来源于库(library);编程的原始库也存在/usr/lib里当编译程序时,程序便会和其中的库进行连接也有许多程序把配置文件存入其中/usr/local本地安装的软件和其他文件放在这里这与/usr很相似用户可能会在这发现一些比较大的软件包,如tex、emacs等/var文件系统/var包含系统普通运行时要改变的数据通常这些数据所在的目录的大小是要时常变化或者扩充的原来/var目录中有些内容是在/usr中的,但为了保持/usr目录的相对稳定就把那些需要时常改变的目录放到/var中了每一个系统是特定的,即不通过网络与其他计算机共享下面列出一些重要的目录(一些不太重要的目录省略了)/var/catman包括了格式化过的匡助(man)页匡助页的源文件普通存在/usr/man/man中;有些man页可能有预格式化的版本,存在/usr/man/cat中而其他的man页在第一次看时都需要格式化,格式化完的版本存在/var/man中,这样其他人再看相同的页时就无须等待格式化了(/var/catman时常被清除,就像清除暂时目录一样)/var/lib存放系统正常运行时要改变的文件/var/local存放/usMocal中安装的程序的可变数据(即系统管理员安装的程序)注意,如果必要,即使本地安装的程序也会使用其他/var目录,例如/vaiVlock/var/lock锁定文件许多程序遵循在/var八ock中产生一个锁定文件的约定,以用来支持他们正在使用某个特定的设备或者文件其他程序注意到这个锁定文件时,就不会再使用这个设备或者文件/var/log各种程序的日志(Iog)文件,特别是login(/valog/wtmplog纪录所有到系统的登录和注销)和syslog(/var/log/messages纪录存储所有核心和系统程序信息)/var/log里的文件时常不确定地增长,应该定期清除/var/run保存在下一次系统引导前有效的关于系统的信息文件例如,/var/run/utmp包含当前登录的用户的信息/var/spool放置“假脱机(spool)”程序的目录,如mail、news、打印队列和其他队列工作的目录每个不同的spool在/var/spool下有自己的子目录,例如,用户的邮箱就存放在/var/spool/mail中/var/tmp比/tmp允许更大的或者需要存在较长期的暂时文件注意系统管理员可能不允许/var/tmp有很旧的文件/proc文件系统/proc文件系统是一个伪的文件系统,就是说它是一个实际上不存在的目录,于是这是一个非常特殊的目录它并不存在于某个磁盘上,而是由核心在内存中产生这个目录用于提供关于系统的信息下面说明一些最重要的文件和目录(/proc文件系统在procman页中有更详细的说明)/proc/x关于进程X的信息目录,这一x是这一进程的标识号每一个进程在/proc下有一个名为自己进程号的目录/proc/cpuinfo存放处理器(cpu)的信息,如cpu的类型、创造商、型号和性能等/proc/devices当前运行的核心配置的设备驱动的列表/proc/dma显示当前使用的dma通道/proc/filesystems核心配置的文件系统信息/proc/interrupts显示被占用的中断信息和占用者的信息,以及被占用的数量/proc/ioports当前使用的端口/proc/kcore系统物理内存映像与物理内存大小彻底一样,然而实际上没有占用这么多内存;它仅仅是在程序访问它时才被创建(注意除非你把它拷贝到什么地方,否则/proc下没有任何东西占用任何磁盘空间)/proc/kmsg核心输出的消息也会被送到syslogo/proc/ksyms核心符号表/proc/loadavg系统“平均负载”;3个没故意义的指示器指出系统当前的工作量/proc/meminfo各种存储器使用信息,包括物理内存和交换分区(swap)o/proc/modules存放当前加载了哪些核心模块信息/proc/net网络协议状态信息/proc/self存放到查看/proc的程序的进程目录的符号连接当2个进程查看/proc时,这将会是不同的连接这主要便于程序得到它自己的进程目录/proc/stat系统的不同状态,例如,系统启动后页面发生错误的次数/proc/uptime系统启动的时间长度/proc/version核心版本参考资料bc91ca300a6c30c229f
71.html。