注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

My Unix World

不要迷恋Unix,Unix只是计算世界很小的一部分!

 
 
 

日志

 
 

【Learn】Learn FHS  

2009-01-14 17:59:41|  分类: linux-system |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
终于明白Windows分区使用方式和Unix分区使用方式的区别了。
在Unix系统中,OS是整个系统的核心,构成了整个系统的全部骨架,硬件只是支撑这个骨架的一些资源型插件,而用户程序文件和用户进程只是这个系统的一些应用型插件。插件的增删不影响系统的整体性和运行。它分层清晰,并且呈中间大两头小的纺锤形。用户进程看不到硬件,即使mount进程,看到的也只是一个/dev文件。
而Windows进程居然有盘符的概念!让用户看到并且关心盘符,是一个不明智的封装方式,它给用户进程增加复杂度,并且影响可移植。
Unix的文件挂载方式,以运行中的系统作为参考依据,它在把某个分区挂载到某个目录下的时候,这个分区上的文件自然地成为这个挂载点目录的子目录和下属文件。/等挂载点并不存储在磁盘上,它是运行中的内核产生的。存储在磁盘上的,只是/目录下面的文件和目录。其他挂载点一般以空目录的方式存在在根分区上,但如果要完成挂载操作,挂载点应当首先加载到内存中。所以,mount都是mount到了OS内部的数据结构中,mount到了运行的系统的内存的指针上,而不是mount到了某个分区的某个目录上。
Unix的文件体系,是建立在运行中的系统基础之上,对于具体的磁盘而言,它上面存储的文件只是整个文件体系的一些部分或者片段,它的意义是不完整的。任何片段都需要上下文环境的提示。
作为系统资源的文件体系,建立在运行中的系统之上是一种合理的方式,因为文件是由OS管理的,文件系统是OS的一部分,在系统中,一切资源都是文件,当系统有新应用需要扩充的时候,磁盘作为资源加入系统之中,并安置在需要它的加载点上,扩展系统的存储容量。这种以OS为核心,以硬件和用户数据、用户进程作为外围插件的方式,才是OS的本来应该具有的样子。
反观Windows,整个系统以磁盘为核心,在磁盘上存储文件,CPU反而成了辅助的设备。内存无法充分利用,用户可以看到硬件。。。。Windows建立在硬件之上,应用程序建立在Windows之上,这是一种金字塔体系,越往上,受限制越大,能力越弱。对于Unix而言,OS是系统的核心和基础,而不是硬件,硬件只是OS的插件和资源。
记住Unix的方式:内存+CPU+运行中的Kernel逻辑是系统的核心,可以把它们统称OS。再加上作为可扩展资源的硬件设备,已经用户层看到的可扩展的文件体系,用户进程,共同构成一个完善的系统。其中OS即可作为一个完整的系统,硬件、文件、进程只是为了应用而动态增减的插件。
Unix的FHS,其实是很简单的,只有这两个维度:shareable vs. unshareable and variable vs. static.比如权限之类的维度,并没有考虑进来。/proc和/dev,虽然以文件的形式表现,但在划分文件体系结构时,它们是独立出来的。在远处观察外部结构时,它们是文件,但是当进入文件体系内部之后,就必须对它们进行区分,把它们独立出来,基于文件自身的特征,所以,实际上,还有一个文件类型维度。
/boot区分出来,则是从文件的应用看。/boot只在引导的时候使用一次,严格说来,它也不属于Unix文件体系结构的一部分。
用户数据,也不在这个统一的规划里面。
其他的文件目录,则遵循这个规范。

其实想想FHS蛮恶心的,完全漠视用户数据。完全考虑系统数据,把根目录排得满满的。为什么不再添加一层,把所有系统数据都放这个加载点下面,而不使得根目录下面的挂载点那么多呢。Windows组织方式也有它的可取之处。只是Windows的可恶在于它使用盘符这个概念,而不是使用挂载点。
期望中的样子,1,或者把所有的系统文件都挂载到根下面的某个系统子目录中,或者,保留现有的体系,让Kernel支持多个根节点,形成森林,系统文件只占据其中一棵树。
目前这个样子,在系统的文件目录组织上,算是一种极致了吧,可是对用户数据很不用好!系统的用户的掺杂在一起,很乱!
这倒不是什么大问题,忽略。如果站在系统的视角,这确实不构成任何问题,因为从系统的视角看来,用户数据文件、用户程序、用户进程只是属于用户应用,只是插件。这是系统设计从应用的视角思考问题,还是从系统构成的视角思考问题。
鉴于目前的现状,只能从系统的视角看。

暂且不考虑这个,go on:
The contents of the root filesystem must be adequate to boot, restore, recover, and/or repair the system.
The primary concern used to balance these considerations, which favor placing many things on the root
filesystem, is the goal of keeping root as small as reasonably possible.

/boot里面是OS和引导程序,而root分区则存放unshareable & static Files,并且要保证它构成一个基本可用的系统,完成基本应用和设置,系统修复和故障恢复,文件备份和还原,并且还要保证文件尺寸的累加和尽量小。
Small is beautiful, 小可以占用少的空间,可以把不unsharable 的文件尽量少,可以方便兼容,同时减少造成基本系统故障的机会,也易于减少混乱和更快速地遍历以得到更快的系统运行速度。

Applications must never create or require special files or subdirectories in the root directory. Other locations in the FHS hierarchy provide more than enough flexibility for any package.

Distributions should not create new directories in the root hierarchy without extremely careful consideration of the consequences including for application portability.

唉,太狠了,限制的这么死,连创建个目录都不允许 :(

boot        Static files of the boot loader

dev        Device files
bin           Essential command binarie
sbin         Essential system binaries
lib            Essential shared libraries and kernel modules
etc           Host-specific system configuration
srv           Data for services provided by this system

tmp        Temporary files
usr        Secondary hierarchy
var        Variable data
opt        Add-on application software packages

media    Mount point for removeable media
mnt        Mount point for mounting a filesystem temporarily

home User home directories (optional)
lib<qual> Alternate format essential shared libraries (optional)
root Home directory for the root user (optional)

这些工具需要归下类才更容易记住,但目前还对包不熟悉,回到LFS。。。

  评论这张
 
阅读(267)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017