Linux操作体系文件体系基础知识详解ITeye - 亚美娱乐

Linux操作体系文件体系基础知识详解ITeye

2019年03月13日11时27分34秒 | 作者: 昊苍 | 标签: 文件,体系,挂载 | 浏览: 1401

一 、Linux文件结构
文件结构是文件寄存在磁盘等存贮设备上的安排办法。首要表现在对文件和目录的安排上。
目录供给了办理文件的一个便利而有用的途径。
Linux运用规范的目录结构,在装置的时分,装置程序就现已为用户创立了文件体系和完好而固定的目录组成办法,并指定了每个目录的效果和其间的文件类型。
  /根目录
  ┃
┏━━┳━━━┳━━━┳━━━╋━━━┳━━━┳━━━┳━━━┓
┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃
bin  home  dev  etc  lib  sbin  tmp  usr  var
  ┃  ┃
  ┏━┻━┓  ┏━━┳━━┳━━┳━┻━┳━━┓
  ┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃
  rc.d  cron.d X11R6  src  lib  local  man  bin
  ┃ 
┏━━━┳━━┳━┻━┳━━━┓ 
┃  ┃  ┃  ┃  ┃
init.d rc0.d  rc1.d  rc2.d …… linux bin lib src
Linux选用的是树型结构。最上层是根目录,其他的一切目录都是从根目录动身而生成的。微软的DOS和windows也是选用树型结构,可是在DOS和 windows中这样的树型结构的根是磁盘分区的盘符,有几个分区就有几个树型结构,他们之间的联系是并排的。可是在linux中,不管操作体系办理几个磁盘分区,这样的目录树只要一个。从结构上讲,各个磁盘分区上的树型目录纷歧定是并排的。
假如这样讲欠好了解的话,我来举个比方:
有一块硬盘,分成了4个分区,分别是/;/boot;/usr和windows下的fat
关于/和/boot或许/和/usr,它们是从属联系;关于/boot和/usr,它们是并排联系。
假如我把windows下的fat分区挂载到/mnt/winc下,(挂载??哦,别急,呵呵,一会就讲,一会就讲。)那么关于/mnt/winc和/usr或/mnt/winc和/boot来说,它们是从归于目录树上没有任何联系的两个分支。
因为linux是一个多用户体系,拟定一个固定的目录规划有助于对体系文件和不同的用户文件进行统一办理。但就是这一点让许多从windows转到linux的初学者感到头疼。下面列出了linux下一些首要目录的功用。
/bin 二进制可履行指令
/dev 设备特别文件
/etc 体系办理和配置文件
/etc/rc.d 发动的配置文件和脚本
/home 用户主目录的基点,比方用户user的主目录就是/home/user,能够用~user表明
/lib 规范程序设计库,又名动态链接同享库,效果相似windows里的.dll文件
/sbin 体系办理指令,这儿寄存的是体系办理员运用的办理程序
/tmp 共用的暂时文件存储点
/root 体系办理员的主目录(呵呵,特权阶级)
/mnt 体系供给这个目录是让用户暂时挂载其他的文件体系。
/lost+found 这个目录平常是空的,体系非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这儿
/proc 虚拟的目录,是体系内存的映射。可直接拜访这个目录来获取体系信 息。
/var 某些大文件的溢出区,比方说各种效劳的日志文件
/usr 最巨大的目录,要用到的运用程序和文件简直都在这个目录。其间包 含:
/usr/X11R6 寄存X window的目录
/usr/bin 很多的运用程序
/usr/sbin 超级用户的一些办理程序
/usr/doc linux文档
/usr/include linux下开发和编译运用程序所需求的头文件
/usr/lib 常用的动态链接库和软件包的配置文件
/usr/man 协助文档
/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin 本地增加的指令
/usr/local/lib 本地增加的库
二 、linux文件体系
文件体系指文件存在的物理空间,linux体系中每个分区都是一个文件体系,都有自己的目录层次结构。linux会将这些分属不同分区的、独自的文件体系按必定的办法构成一个体系的总的目录层次结构。一个操作体系的运转离不开对文件的操作,因而必定要具有并保护自己的文件体系。
Llinux文件体系运用索引节点来记载文件信息,效果像windows的文件分配表。
索引节点是一个结构,它包含了一个文件的长度、创立及修正时刻、权限、所属联系、磁盘中的方位等信息。一个文件体系保护了一个索引节点的数组,每个文件或目录都与索引节点数组中的仅有一个元素对应。体系给每个索引节点分配了一个号码,也就是该节点在数组中的索引号,称为索引节点号。
linux文件体系将文件索引节点号和文件名一起保存在目录中。所以,目录仅仅将文件的称号和它的索引节点号结合在一起的一张表,目录中每一对文件称号和索引节点号称为一个衔接。
关于一个文件来说有仅有的索引节点号与之对应,关于一个索引节点号,却能够有多个文件名与之对应。因而,在磁盘上的同一个文件能够经过不同的途径去拜访它。
能够用ln指令对一个现已存在的文件再树立一个新的衔接,而不仿制文件的内容。衔接有软衔接和硬衔接之分,软衔接又名符号衔接。它们各自的特点是:
硬衔接:原文件名和衔接文件名都指向相同的物理地址。
目录不能有硬衔接;硬衔接不能跨过文件体系(不能跨过不同的分区)
文件在磁盘中只要一个复制,节约硬盘空间;
因为删去文件要在同一个索引节点归于仅有的衔接时才干成功,因而能够避免不必要的误删去。
符号衔接:用ln -s指令树立文件的符号衔接符号衔接是linux特别文件的一种,作为一个文件,它的数据是它所衔接的文件的途径名。相似windows下的快捷办法。
能够删去原有的文件而保存衔接文件,没有避免误删去功用。
这一段的的内容过于笼统,又是节点又是数组的,我现已尽量浅显再浅显了,又欠好加比方作演示。咱们假如仍是云里雾里的话,我也没有什么办法了,只要先记住,日后在实践运用中渐渐领会、了解了。这也是我学习的一个办法吧。
三 、挂载文件体系
由上一节知道,linux体系中每个分区都是一个文件体系,都有自己的目录层次结构。linux会将这些分属不同分区的、独自的文件体系按必定的办法构成一个体系的总的目录层次结构。这儿所说的“按必定办法”就是指的挂载。
将一个文件体系的顶层目录挂到另一个文件体系的子目录上,使它们成为一个全体,称为挂载。把该子目录称为挂载点。
举个比方吧:
根分区:
/根目录

┏━━━━┳━━━━━┳━━━━━┳━━━━━╋━━━━━┳━━━━━┳━━━━━┳━━━━━┓
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
bin home dev etc lib sbin tmp usr var

┏━┻━┓
┃ ┃
rc.d cron.d

┏━━━┳━━━┳━┻━┳━━━━┓
┃ ┃ ┃ ┃ ┃
init.d rc0.d rc1.d rc2.d ……
/usr分区 :
usr

┏━━━━┳━━━╋━━━┳━━━┳━━━┓
┃ ┃ ┃ ┃ ┃ ┃
X11R6 src lib local man bin
┃ ┃
┃ ┏━━━╋━━━┓
┃ ┃ ┃ ┃
linux bin lib src
挂载之后就构成了文章开始时的那个图。像不像挂上去的?
留意:1、挂载点有必要是一个目录。
2、一个分区挂载在一个已存在的目录上,这个目录能够不为空,但挂载后这个目录下曾经的内容将不可用。
关于其他操作体系树立的文件体系的挂载也是这样。可是需求了解的是:光盘、软盘、其他操作体系运用的文件体系的格局与linux运用的文件体系格局是纷歧样的。光盘是ISO9660;软盘是fat16或ext2;windows NT是fat16、NTFS;windows98是fat16、fat32;windows2000和windowsXP是fat16、fat32、 NTFS。挂载前要了解linux是否支撑所要挂载的文件体系格局。
挂载时运用mount指令:
格局:mount [-参数] [设备称号] [挂载点]
其间常用的参数有
-t 指定设备的文件体系类型,常见的有:
minix linux最早运用的文件体系
ext2 linux现在常用的文件体系
msdos MS-DOS的fat,就是fat16
vfat windows98常用的fat32
nfs 网络文件体系
iso9660 CD-ROM光盘规范文件体系
ntfs windows NT 2000的文件体系
hpfs OS/2文件体系
auto 主动检测文件体系
-o 指定挂载文件体系时的选项。有些也可用在/etc/fstab中。常用的 有
codepage=XXX 代码页
iocharset=XXX 字符集
ro 以只读办法挂载
rw 以读写办法挂载
nouser 使一般用户无法挂载
user 能够让一般用户挂载设备
提示一下,mount指令没有树立挂载点的功用,因而你应该保证履行mount指令时,挂载点现已存在。(不明白?说白了点就是你要把文件体系挂载到哪,首先要先建上个目录。这样OK?)
比方:windows98装在hda1分区,一起核算机上还有软盘和光盘需求挂载。
# mk /mnt/winc
# mk /mnt/floppy
# mk /mnt/cdrom
# mount -t vfat /dev/hda1 /mnt/winc
# mount -t msdos /dev/fd0 /mnt/floppy
# mount -t iso9660 /dev/cdrom /mnt/cdrom
现在就能够进入/mnt/winc等目录读写这些文件体系了。
要保证最终两行的指令不犯错,要保证软驱和光驱里有盘。(要是硬盘的磁盘片也能够常常随时替换的话,我想就不会犯这样的错误了 :- )
假如你的windows98目录里有中文文件名,运用上面的指令挂载后,显现的是一堆乱码。这就要用到 -o 参数里的codepage iocharset选项。codepage指定文件体系的代码页,简体中文中文代码是936;iocharset指定字符集,简体中文一般用cp936或 gb2312。
当挂载的文件体系linux不支撑时,mount必定报错,如windows2000的ntfs文件体系。能够从头编译linux内核以取得对该文件体系的支撑。关于从头编译linux内核,就不在这儿说了。
四 、主动挂载
每次开机拜访windows分区都要运转mount指令明显太烦琐,为什么拜访其他的linux分区不必运用mount指令呢?
其实,每次开机时,linux主动将需求挂载的linux分区挂载上了。那么咱们是不是能够设定让linux在发动的时分也挂载咱们期望挂载的分区,如windows分区,以完成文件体系的主动挂载呢?
这是完全能够的。在/etc目录下有个fstab文件,它里边列出了linux开机时主动挂载的文件体系的列表。我的/etc/fstab文件如下:
/dev/hda2 / ext3 defaults 1 1
/dev/hda1 /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/hda3 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,codepage=936,iocharset=gb2312 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
/dev/hdb1 /mnt/winc vfat defaults,codepage=936,iocharset=cp936 0 0
/dev/hda5 /mnt/wind vfat defaults,codepage=936,iocharset=cp936 0 0
在/etc/fstab文件里,榜首列是挂载的文件体系的设备名,第二列是挂载点,第三列是挂载的文件体系类型,第四列是挂载的选项,选项间用逗号分隔。第五六列不知道是什么意思,还望高手点拨。
在最终两行是我手艺增加的windows下的C;D盘,加了codepage=936和iocharset=cp936参数以支撑中文文件名。参数defaults实践上包含了一组默许参数:
rw 以可读写形式挂载
suid 敞开用户ID和群组ID设置位
dev 可解读文件体系上的字符或区块设备
exec 可履行二进制文件
auto 主动挂载
nouser 使一般用户无法挂载
async 以非同步办法履行文件体系的输入输出操作
咱们能够看到在这个列表里,光驱和软驱是不主动挂载的,参数设置为noauto。(假如你非要设成主动挂载,你要保证每次开机时你的光驱和软驱里都要有盘,呵呵。)

更多精彩linux视频教程,尽在51CTO学院:
http://edu.51cto.com/course/courseList/id-48.html


版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表亚美娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章