所有的数据都得要载入到内存后CPU才能够对该数据进行处理。为了解决耗时等待磁盘的写入/读取上的问题,Linux使用的方式是通过一个称为非同步处理(asynchronously) 的方式。所谓的非同步处理是这样的:
当系统载入一个文件到内存后,如果该文件没有被更动过,则在内存区段的文件数据会被设置为干净(clean)的。 但如果内存中的文件数据被更改过了(例如你用 nano 去编辑过这个文件),此时该内存中的数据会被设置为脏的 (Dirty)。此时所有的动作都还在内存中执行,并没有写入到磁盘中! 系统会不定时的将内存中设置为“Dirty”的数据写回磁盘,以保持磁盘与内存数据的一致性。
内存的速度要比磁盘快的多,因此如果能够将常用的文件放置到内存当中,就会增加系统性能。
系统会将常用的文件数据放置到内存的缓冲区,以加速文件系统的读/写;
承上,因此 Linux 的实体内存最后都会被用光!这是正常的情况!可加速系统性能;
你可以手动使用 sync 来强迫内存中设置为 Dirty 的文件回写到磁盘中;
若正常关机时,关机指令会主动调用 sync 来将内存的数据回写入磁盘内;
但若不正常关机(如跳电、死机或其他不明原因),由于数据尚未回写到磁盘内, 因此重新开机后可能会花很多时间在进行磁盘检验,甚至可能导致文件系统的损毁(非磁盘损毁)。
7.1.7 挂载点的意义(mount point)
每个 filesystem 都有独立的 inode / block / superblock 等信息,这个文件系统要能够链接到目录树才能被我们使用。 将文件系统与目录树结合的动作我们称为“挂载”。挂载点一定是目录,该目录为进入该文件系统的入口。因此并不是你有任何文件系统都能使用,必须要“挂载”到目录树的某个目录后,才能够使用该文件系统的。
XFS filesystem 最顶层的目录之 inode 一般为 128 号,因此可以发现 /,/boot, /home 为三个不同的 filesystem。使用文件系统的观点看,同一个filesystem的某个inode只会对应一个文件内容而已(因为一个文件占用一个inode),因此可以通过判断inode号码来确认不同文件名是否为相同的文件,所以可以这样看:
上面的信息中由于挂载点均为 / ,因此三个文件 (/, /., /..) 均在同一个 filesystem 内,而这三个文件的 inode 号码均为 64 号,因此这三个文件名都指向同一个 inode 号码,当然这三个文件的内容也就完全一模一样了。