文件系统是指操作系统中与管理文件有关的软件和数据。
Windows 文件系统是以驱动器的盘符为基础的,而且每一个目录是与相应的分区对应,例如"E:\workplace"是指此文件在 E 盘这个分区下。而 Linux 恰好相反,文件系统是一个文件树,且它的所有文件和外部设备(如硬盘、光驱等)都是以文件的形式挂结在这个文件树上,例如"\usr\local"。

在 Windows 下,目录结构属于分区;Linux 下,分区属于目录结构。
因此,在 Linux 中把每一个分区和某一个目录对应,以后在对这个目录的操作就是对这个分区的操作,这样就实现了硬件管理手段和软件目录管理手段的统一。这个把分区和目录对应的过程叫做挂载(Mount),而这个挂载在文件树中的位置就是挂载点。这种对应关系可以由用户随时中断和改变。
Linux 文件系统的挂载特性给用户能带来怎样的好处呢?
-
统一的目录树结构
无论你有多少块硬盘、多少个分区,在 Linux 眼里,整个系统都只有一棵目录树,从根目录 / 开始。
用户无需关心文件具体存储在哪个物理设备上(比如 Windows 的 C:、D: 盘)。要访问一个文件,你只需要知道它在目录树中的路径(例如 /home/user/photos/vacation.jpg),而不需要关心 photos 目录是位于第一块硬盘还是第二块硬盘上。
-
灵活性和可扩展性
场景:假设你的 /home 目录空间快满了,但 /opt 目录还有很多空间。在 Windows 上,这可能是个棘手的问题。但在 Linux 中,你可以:
买一块新硬盘。
将其格式化为 ext4 等文件系统。
将其挂载到一个临时目录,比如 /mnt/new_disk。
将整个 /home 目录的内容复制到新硬盘。
修改配置文件,将新硬盘永久挂载到 /home 目录。
重启后,所有用户登录后访问的 /home 目录实际上已经是那块全新的、空间更大的硬盘了,而系统和应用程序对此毫无感知。
你可以在不重装系统、不移动大量数据(相对而言)的情况下,轻松地扩展特定目录的存储容量。
-
按需管理和优化
你可以根据文件的不同用途,将不同的分区挂载到不同的目录,并为它们选择最合适的文件系统和挂载参数。
将 / 根目录和 /home 目录放在不同分区。这样即使系统根分区损坏需要重装,你的个人数据在 /home 分区中也能安然无恙。
-
资源共享与网络透明性
网络文件系统(NFS):你可以将远程服务器上共享的目录挂载到本地目录树中,例如 /mnt/nas_share。之后,访问这个本地目录就像访问本地硬盘一样,但实际上所有操作都是在网络上进行的。
实现了资源的集中存储和分布式访问,非常适合企业环境和集群计算。
硬盘分区是针对一个硬盘进行操作的,它可以分为:主分区、扩展分区、逻辑分区。其中主分区就是包含操作系统启动所必需的文件和数据的硬盘分区,要在硬盘上安装操作系统,则该硬盘必须要有一个主分区,而且其主分区的数量可以是 1~3 个;扩展分区也就是除主分区外的分区,但它不能直接使用,必须再将它划分为若干个逻辑分区才可使用,其数量可以有 0 或 1 个;而逻辑分区则在数量上没有什么限制。
一般而言,对于先装了 Windows 的用户,则 Windows 的 C 盘是装在主分区上的,可以把 Linux 安装在另一个主分区或者扩展分区上。通常为了安装方便安全起见,一般采用把Linux 装在多余的逻辑分区上。

在硬件条件有限的情况下,为了运行大型的程序,Linux 在硬盘上划出一个区域来
当作临时的内存,而 Windows 操作系统把这个区域叫做虚拟内存,Linux 把它叫做交换分区 swap。在安装 Linux 建立交换分区时,一般将其设为内存大小的 2 倍
GRUB 是一种引导装入器(类似在嵌入式中非常重要的 bootloader)------它负责装入内核并引导 Linux 系统,位于硬盘的起始部分。由于 GRUB 多方面的优越性,如今的 Linux 一般都默认采用 GRUB 来引导 Linux 操作系统。但事实上它还可以引导 Windows 等多种操作系统。
在安装了 Windows 和 Linux 双系统后,系统是以 Linux 的 GRUB 作为引导装入器来选择启动Windows 或 Linux 的,因此,若此时直接在 Windows 下把 Linux 的分区删除,会导致系统因没有引导装入器而无法启动 Windows,这点要格外小心。
具有超级权限的用户称为 root 用户。root 的默认主目录在"/root"下,而
其他普通用户的目录则在"/home"下。root 的权限极高,它甚至可以修改 Linux 的内核
在 Linux 系统中的每个文件都被赋予一个惟一的数值,而这个数值被称做索引节
点。索引节点存储在一个称作索引节点表(Inode Table)中,该表在磁盘格式化时被分配。
每个实际的磁盘或分区都有其自己的索引节点表。一个索引节点包含文件的所有信息,包括磁盘上数据的地址和文件类型。
Linux 文件系统把索引节点号 1 赋于根目录,这也就是 Linux 的根目录文件在磁盘上的地址。根目录文件包括文件名、目录名及它们各自的索引节点号的列表,Linux 可以通过查找从根目录开始的一个目录链来找到系统中的任何文件。
Linux 通过上下链接目录文件系统来实现对整个文件系统的操作。比如把文件从一个磁盘目录移到另一实际磁盘的目录时(实际上是通过读取索引节点表来检测这种行动的),这时,原先文件的磁盘索引号删除,而且在新磁盘上建立相应的索引节点。

链接文件有些类似于 Windows 中的"快捷方式",但是它的功能更为强大。它可以实现对不同的目录、文件系统甚至是不同的机器上的文件直接访问,并且不必重新占用磁盘空间。

首先,Linux 中文件的拥有者可以把文件的访问属性设成 3 种不同的访问权限:可读(r)、可写(w)和可执行(x)。文件又有 3 个不同的用户级别:文件拥有者(u)、所属的用户组(g)和系统里的其他用户(o)。
第一个字符显示文件的类型:
Ø "-"表示普通文件;
Ø "d"表示目录文件;
Ø "l"表示链接文件;
Ø "c"表示字符设备;
Ø "b"表示块设备;
Ø "p"表示命名管道比如 FIFO 文件(First In First Out,先进先出);
Ø "f"表示堆栈文件比如 LIFO 文件(Last In First Out,后进先出)。
第一个字符之后有 3 个三位字符组:
Ø 第一个三位字符组表示对于文件拥有者(u)对该文件的权限;
Ø 第二个三位字符组表示文件用户组(g)对该文件的权限;
Ø 第三个三位字符组表示系统其他用户(o)对该文件的权限;
Ø 若该用户组对此没有权限,一般显示"-"字符。
Linux 文件系统目录结构
| 目 录 | 目 录 内 容 |
|---|---|
| /bin | bin 就是二进制(binary)英文缩写。在这里存放前面 Linux 常用操作命令的执行文件,如 mv、ls、mkdir 等。有时,这个目录的内容和/usr/bin 里面的内容一样,它们都是放置一般用户使用的执行文件 |
| /boot | 这个目录下存放操作系统启动时所要用到的程序。如启动 grub 就会用到其下的/boot/grub子目录 |
| /dev | 该目录中包含了所有 Linux 系统中使用的外部设备。要注意的是,这里并不是存放的外部设备的驱动程序,它实际上是一个访问这些外部设备的端口。由于在 Linux 中,所有的设备都当作文件一样进行操作,比如:/dev/cdrom 代表光驱,用户可以非常方便地像访问文件、目录一样对其进行访问 |
| /etc | 该目录下存放了系统管理时要用到的各种配置文件和子目录。如网络配置文件、文件系统、x 系统配置文件、设备配置信息设置用户信息等都在这个目录下。系统在启动过程中需要读取其参数进行相应的配置 |
| /etc/rc.d | 该目录主要存放 Linux 启动和关闭时要用到的脚本文件 |
| /etc/rc.d/init | 该目录存放所有 Linux 服务默认的启动脚本(在新版本的 Linux 中还用到的是/etcxinetd.d目录下的内容) |
| /home | 该目录是 Linux 系统中默认的用户工作根目录。执行 adduser命令后系统会在/home 目录下为对应账号建立一个名为同名的主目录 |
| /lib | 该目录是用来存放系统动态链接共享库的。几乎所有的应用程序都会用到这个目录下的共享库。因此,千万不要轻易对这个目录进行什么操作 |
| /lost+found | 该目录在大多数情况下都是空的。只有当系统产生异常时,会将一些遗失的片段放在此目录下 |
| /media | 该目录下是光驱和软驱的挂载点,Fedora Core 4 已经可以自动挂载光驱和软驱 |
| /misc | 该目录下存放从 DOS 下进行安装的实用工具,一般为空 |
| /mnt | 该目录是软驱、光驱、硬盘的挂载点,也可以临时将别的文件系统挂载到此目录下 |
| /proc | 该目录是用于放置系统核心与执行程序所需的一些信息。而这些信息是在内存中由系统产生的,故不占用硬盘空间 |
| /root | 该目录是超级用户登录时的主目录 |
| /sbin | 该目录是用来存放系统管理员的常用的系统管理程序 |
| /tmp | 该目录用来存放不同程序执行时产生的临时文件。一般 Linux 安装软件的默认安装路径就是这里 |
| /usr | 这是一个非常重要的目录,用户的很多应用程序和文件都存放在这个目录下,类似与Windows 下的 Program Files 的目录 |
| /usr/bin | 系统用户使用的应用程序 |
| /usr/sbin | 超级用户使用的比较高级的管理程序和系统守护程序 |
| /usr/src | 内核源代码默认的放置目录 |
| /srv | 该目录存放一些服务启动之后需要提取的数据 |
| /sys | 这是 Linux 2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfssysfs 文件系统集成了下面 3 种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建 |
| /var | 这也是一个非常重要的目录,很多服务的日志信息都存放在这里 |
