1. 文件系统
- 文件系统是一个对存储设备上的数据进行组织的机制,这种机制便于用户和操作系统进行交互。文件系统有对应的物理空间,Linux下每个分区都是一个文件系统,都有自己的目录结构。文件系统包含着文件中的数据、文件系统的结构,操作系统内的所有文件、目录、软连接以及文件保护信息等都存储在其中。Linux支持多种格式的文件系统,并且可以同时挂载多个文件系统。
- Linux下文件系统的体系结构如下:
- VFS,虚拟文件系统。VFS层的作用是隔离了不同文件系统之间的差异,为上层提供统一的API接口。
- General Block Device Layer层的作用是隔离不同存储设备的硬件差异,为上层提供统一的IO操作接口。
2. 根文件系统
2.1 根文件系统简述
- 根文件系统首先是一种文件系统,它不仅具有普通文件系统的存储数据文件的功能,而且相对于普通的文件系统,它的特殊之处在于:它是内核启动时所挂载的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如rcS,inittab)和服务加载到内存中去运行。
- Linux的文件结构是单个树状结构,根目录是所有Linux文件和目录所在的地方,需要挂载一个具体的磁盘分区。根文件系统被挂载到根目录下“/”后,在根目录下就有根文件系统的各个目录,文件:/bin /sbin /mnt等,再将其他分区挂接到/mnt目录上,/mnt目录下就有这个分区的各个目录,文件。
- 挂载,指的是将一个文件系统和一个存储设备进行关联。执行挂载时,要提供文件系统类型、文件系统和一个挂载点。
P.S.:上图目录结构中所列出的目录/bin,/dev,/etc,/lib,/proc,/var,/usr对于根文件系统来说是必须具有的,其他目录都是可选的。
2.2 查看文件系统挂载情况
“mount”命令,查看具体的挂载情况:
# mount rootfs on / type rootfs (rw) /dev/root on / type nfs (rw,relatime,vers=2,rsize=4096,wsize=4096,namlen=255,hard,nolock,proto=udp,port=65535,timeo=10,retrans=3, sec=sys,mountport=65535,mountproto=,addr=192.168.1.100) proc on /proc type proc (rw,relatime) sysfs on /sys type sysfs (rw,relatime) tmpfs on /var type tmpfs (rw,relatime) tmpfs on /tmp type tmpfs (rw,relatime) tmpfs on /dev type tmpfs (rw,relatime)
# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 19478204 5695772 12769952 31% / tmpfs 175892 0 175892 0% /var tmpfs 175892 0 175892 0% /tmp tmpfs 175892 0 175892 0% /dev
2.3 根文件系统的目录结构 “df”命令,查看文件系统的相关信息:
在嵌入式体统中,为了精简系统。/bin,/dev,/etc,/lib,/proc,/var,/usr对于根文件系统来说是必须具有的,其他目录都是可选的。
/ |
/bin |
该目录下存放所有用户都可以使用的、基本的命令,譬如cd,ls,cp等。这些命令在挂载其它文件系统之前就可以使用,所以/bin目录必须和根文件系统在同一个分区中。 |
/sbin |
该目录下存放的是基本的系统命令,它们用于启动系统,修复系统等,与/bin目录相似,在挂接其他文件系统之前就可以使用/sbin,所以/sbin目录必须和根文件系统在同一个分区中。 |
|
/dev |
该目录下存放的是设备文件,设备文件是Linux中特有的文件类型。在Linux系统下,以文件的方式访问各种设备,即通过读写某个设备文件操作某个具体硬件。譬如通过"dev/ttySAC0"文件可以操作串口0。 |
|
/etc |
该目录下存放着各种配置文件,对于PC上的Linux系统,/etc目录下的文件和目录非常多,这些目录文件是可选的,它们依赖于系统中所拥有的应用程序是否需要配置文件。在嵌入式系统中,这些内容可以大为精减。 |
|
/lib |
该目录下存放共享库和可加载驱动程序模块。共享库用于启动系统、支持可执行程序的运行。 |
|
/home |
用户目录,它是可选的,对于每个普通用户,在/home目录下都有一个以用户名命名的子目录,里面存放用户相关的配置文件。 |
|
/root |
根用户的目录,与此对应,普通用户的目录是/home下的某个子目录。 |
|
/usr |
该目录存放的是共享、只读的程序和数据,/usr目录下的内容可以在多个主机间共享。 |
|
/var |
与/usr目录相反,/var目录中存放可变的数据,比如spool目录(mail,news),log文件,临时文件。 |
|
/proc |
该是一个空目录,常作为proc文件系统的挂载点,proc文件系统是个虚拟的文件系统,它没有实际的存储设备,里面的文件都是由内核临时生成的,用来表示系统的运行状态,也可以操作其中的文件控制系统。 |
|
/mnt |
用于临时挂载某个文件系统的挂接点,通常是空目录,也可以在里面创建子目录来临时挂载光盘、硬盘,譬如/mnt/cdram /mnt/hda1 。 |
|
/tmp |
用于存放临时文件,通常是空目录,一些需要生成临时文件的程序用到的/tmp目录下,所以/tmp目录必须存在并可以访问。 |
3. 常用的文件系统
Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统 进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。
参考链接:
http://tieba.baidu.com/p/2852126057
https://blog.csdn.net/special00/article/details/51262334
https://www.cnblogs.com/linfeng-learning/p/9285545.html