Linux基本概念(二)


在学习Linux的过程中,总有一些基本的概念困扰着我,比如,什么是文件系统,根文件系统?挂装到底是个什么概念?文件系统和内核到底是什么关系啊?这次主要通过度娘和Google把这些不太清楚的概念归纳了一下,具体如下:

在Linux基本概念(一)中,简单的解惑了什么是Linux内核。这里我相信肯定有不少人和我一样,对什么是文件系统可能有所了解,但是往往会非常困惑于Linux操作系统,Linux内核和文件系统到底是个什么关系?所以这里我们将首先介绍这三者之间的关系,三者的关系可以用下图简单的表示:

\

内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。文件系统和内核是彼此依赖的,可以把内核简单的理解成执行单元,文件系统是存储单元。Linux内核中,跟文件系统相关的组件如下图所示:

\

 

什么是文件系统?文件系统是对一个存储设备上的数据和元数据进行组织的机制。Linux可以支持的文件系统类型很多,可以预料到 Linux 文件系统接口实现为分层的体系结构,从而将用户接口层、文件系统实现和操作存储设备的驱动程序分隔开。

Linux 以一组通用对象的角度看待所有文件系统。这些对象是超级块(superblock)、inode、dentry 和文件。超级块在每个文件系统的根上,超级块描述和维护文件系统的状态。文件系统中管理的每个对象(文件或目录)在 Linux 中表示为一个 inode。inode 包含管理文件系统中的对象所需的所有元数据(包括可以在对象上执行的操作)。另一组结构称为 dentry,它们用来实现名称和 inode 之间的映射,有一个目录缓存用来保存最近使用的 dentry。dentry 还维护目录和文件之间的关系,从而支持在文件系统中移动。

什么是根文件系统?根文件系统是安装Linux时,安装程序为用户创建的文件系统,它的目录组织形式是固定的,在根文件系统下可以挂载其他的文件系统。Linux根文件系统就是我们输入cd / 显示出来的一系列文件夹,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 中将一个文件系统与一个存储设备关联起来的过程称为挂装(mount)。使用 mount 命令将一个文件系统附着到当前文件系统层次结构中(根)。在执行挂装时,要提供文件系统类型、文件系统和一个挂装点。

为了说明 Linux 文件系统层的功能(以及挂装的方法),我们在当前文件系统的一个文件中创建一个文件系统。实现步骤如下:

Step1. 创建一个经过初始化的文件, 用 dd 命令创建一个指定大小的文件(使用 /dev/zero 作为源进行文件复制

$ dd if=/dev/zero of=file.img bs=1kcount=10000

Step 2. 用 losetup 命令将一个循环设备与这个文件关联起来,让它看起来像一个块设备,而不是文件系统中的常规文件

$ losetup /dev/loop0 file.img

Step3. 用 mke2fs 在这个设备上创建一个文件系统。这个命令创建一个指定大小的新的 ext2 文件系统

$ mke2fs -c /dev/loop0 10000

Step 4.用 mount 命令将循环设备(/dev/loop0)所表示的file.img 文件挂装到挂装点 /mnt/point1。注意,文件系统类型指定为 ext2。挂装之后,就可以将这个挂装点当作一个新的文件系统,比如使用 ls 命令

$ mkdir /mnt/point1

$ mount -t ext2 /dev/loop0 /mnt/point1

$ ls /mnt/point1

lost+found

参考如下:

http://www.ibm.com/developerworks/cn/linux/l-linux-filesystem/

http://linux.chinaunix.net/techdoc/beginner/2007/03/30/953684.shtml

http://blog.csdn.net/hguisu/article/details/6122513

相关内容