fedora学习笔记 6:浅谈linux文件系统-阿里云开发者社区

开发者社区> 科技小能手> 正文

fedora学习笔记 6:浅谈linux文件系统

简介:
+关注继续查看
 文件系统是linux里非常重要的一个概念,这么一个重要而且常见的字眼理解起来并不容易,很多人对它认识相当模糊。对许多从windows平台迁移过来的用户来说,它更是一个思想上的挑战。

     1>文件系统的概念:术语“文件系统”在linux中有很多不同的概念。它既可指代磁盘分区或磁盘分区类型,也可指代分区的文件目录,也可指代文件的数据结构或组织方法等,在不同的语境中指代不同的涵义。
  我们要使用一块硬盘首先要合理规划分区,然后要在分区上创建文件系统,最后要挂载文件系统,这样才能使用。这里的文件系统指的就是磁盘分区类型,如 ext2、ext3、fat等。有时,大家会直接用文件系统来指代磁盘分区,如linux中所说的挂载一个文件系统。linux中最常用的文件系统是 ext3。
  我们进入linux系统根目录,运行ls -la命令,可以看到很多目录,如etc、bin、sbin、var、usr等等,这些目录还有其子目录;我们运行tree命令,可以看到这些目录边同其子目录形成了一个树形结构,最上面的是系统的根目录。所以我们说linux文件系统结构是树形结构。这里的文件系统指的是文件目录,文件系统结构即文件目录结构。
  linux通过挂载的方式对不同的文件系统进行组织和管理,从而形成一个总的、树形结构的文件系统。这句话里的两个文件系统都是什么意思呢?
 
  2>linux文件系统结构:前面我们讲,linux文件系统结构主要是指文件目录结构,这个文件系统结构是树形结构。那么我们如何理解这个树形结构呢?对比着windows文件系统结构来理解或许是个不错的办法。
  当你第一次进入linux文件系统时,你会发现,呈现在你面前的一切与windows是如此的不同:没有你熟悉的C盘、D盘或E盘,只有一个个目录!没错,这就是linux和windows在设备管理上的区别。
  我们知道windows系统中每一个磁盘分区都分配有一个盘符,每新增一个其它存储设备就要为它分配一个盘符。而linux不会为磁盘分区或其它存储设备分配盘符,只为它们分配目录。linux只有一个文件系统结构,这个文件系统结构以根目录开始,所有的本地文件系统,本地设备,以及所有的远程文件系统都表示为根目录的子目录,新增的设备或文件系统通过挂载的方式,挂载为根目录的子目录。
  明白了么?windows里的C盘、D盘或E盘都是独立的文件系统,操作系统有几个分区就有几个文件系统结构;linux不一样,它只有一个文件系统结构,所有的磁盘分区或其它存储设备都是这个树形结构的一个“树枝”。
 
  理解了树形结构以后,我们再来看看文件系统结构中的另一个概念:目录结构。
  前面我们讲,linux系统不会为磁盘分区或其它存储设备分配盘符,只会为它们分配目录;所有的本地或远程文件系统、设备等都表示为文件系统结构中一个子目录。那么,为什么要这样呢?因为目录为管理文件提供了一个方便而有效的途径。如果你理解linux把所有的设备都当作文件来管理的话,你就会发现这样的安排是多么的巧妙。linux中的设备都以文件的形式出现在/dev目录中,如/dev/lp0,这是打印机;再比如/dev/hda,这是电脑里的第一块硬盘。
  再换个角度:windows里的磁盘标识的盘符,既是数据存放位置映射的路径,也是存放数据的真实的文件系统;linux里的目录只是数据的逻辑路径,并非是数据就存放在那个目录里。那么它的数据在什么地方呢?或者在第一块硬盘上,也可能在第二块硬盘上。如:windows的 D盘里安装有一个软件,那么,这个D盘既是软件的安装路径,也是软件数据存放的地方;linux的/var/local下安装有一个软件,/var /local是这个软件的安装路径,软件的数据在哪里存放呢?那就要看/var这个目录建在哪个磁盘的哪一个分区上了。
 
  linux使用标准的目录结构,在安装系统时,就已经创建了完整的目录结构,并指定了每个目录的作用和其中的文件类型。
  下面是一个不完整的目录结构图:
  
  
  3>linux下的主要目录:上面那张目录结构图虽然不完整,但已经可以让我们大致了解linux的目录结构了,而且几个重要的目录也已经列出来了。
  bin目录:可执行程序目录。与之类似的还有:/sbin、/usr/bin等。
  boot目录:系统启动目录,里面有系统启动时必需的文件。
  dev目录:设备文件目录,里面存放着各种设备文件。
  etc目录:系统配置目录,系统运行的各种配置文件都在这里。
  usr目录:系统程序目录,这里放着各种程序文件。
  var目录:这个目录里存放的是经常扩充、变动的文件,如日志文件、数据库等。

本文转自 li_qinshan 51CTO博客,原文链接:http://blog.51cto.com/share/133661

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring 4.0.2 学习笔记(2) - 自动注入及properties文件的使用
接上一篇继续, 学习了基本的注入使用后,可能有人会跟我一样觉得有点不爽,Programmer的每个Field,至少要有一个setter,这样spring配置文件中才能用...来注入. 能否不要这些setter方法? 答案是Yes 一、为Spring配置文件,添加annotation支持,以及 de...
664 0
SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础
SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础 1. SAS系统简介 1.1 SAS是先编译后执行的语言,data步标志着编译的开始。 数据指针:当前内存缓存区,输入数据所在位置。 PDV:Program Data Vector,在DATA步中所有涉及的变量被编程当前向量的一部分。 2. SAS编程基础 2.1 SAS逻
1488 0
2.0 Linux系统的安装之Fedora安装单系统(2)
2.0 Linux系统的安装之Fedora安装单系统(2) *Linux系统的安装之Fedora安装单系统 恐怕最好装的系统就是Linux系统了,或者与Windows并列。此篇教程为Fedora的单系统安装,如果装双系统即Windows和Linux请移步下一篇3.0 Windows和Linux双系统安装(3)。 简介下Fedora,我用Fedora是从大
1603 0
Linux下C编程,进程通信之标准流管道通信(即系统调用)
1.概述   在编程的过程中总会需要使用系统调用,如linux下的ps,touch,rm,grep命令等;windows下的dir,mkdir,del命令等。   在linux中执行系统调用,通常使用标准流管道。
985 0
嵌入式linux、QT、ARM、android研发学习交流,软考嵌入式系统设计师交流群,欢迎大家加入,群号95388240
 嵌入式linux、QT、ARM、android研发学习交流,软考嵌入式系统设计师交流群,欢迎大家加入,群号95388240
871 0
14491
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载