有没有详细介绍文件系统的书籍?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有详细介绍文件系统的书籍?相关的知识,希望对你有一定的参考价值。
如题。需要详细介绍文件系统的书籍,可以是整本书中介绍过文件系统的书籍,不一定要整本书中都在讲文件系统。最好能详解ZFS。
其实你想知道什么想弄明白什么可以直接在网上搜下资料很全想要专业性的书籍大概免费的很少比如你想了解ZFS文件系统查得(你还可以继续深入的去查……不好意思,或者我说的与你的意思拧了,^_^建议而已): ZFS文件系统的英文名称为Zettabyte File System,也叫动态文件系统(Dynamic File System),是第一个128位文件系统。
ZFS是基于存储池的,与典型的映射物理存储设备的传统文件系统不同,ZFS所有在存储池中的文件系统都可以使用存储池的资源。
什么是ZFS
ZFS 文件系统是一个革命性的全新的文件系统,它从根本上改变了文件系统的管理方式,这个文件系统的特色和其带来的好处至今没有其他文件系统可以与之媲美,ZFS 被设计成强大的、可升级并易于管理的。
ZFS 用“存储池”的概念来管理物理存储空间。过去,文件系统都是构建在物理设备之上的。为了管理这些物理设备,并为数据提供冗余,“卷管理”的概念提供了一个单设备的映像。但是这种设计增加了复杂性,同时根本没法使文件系统向更高层次发展,因为文件系统不能跨越数据的物理位置。
ZFS 完全抛弃了“卷管理”,不再创建虚拟的卷,而是把所有设备集中到一个存储池中来进行管理!“存储池”描述了存储的物理特征(设备的布局,数据的冗余等等),并扮演一个能够创建文件系统的专门存储空间。从此,文件系统不再局限于单独的物理设备,而且文件系统还允许物理设备把他们自带的那些文件系统共享到这个“池”中。你也不再需要预先规划好文件系统的大小,因为文件系统可以在“池”的空间内自动的增大。当增加新的存贮介质时,所有“池”中的所有文件系统能立即使用新增的空间,而不需要而外的操作。在很多情况下,存储池扮演了一个虚拟内存。
创建一个池的例子
# zpool create tank mirror c1t0d0 c1t1d0
这是一个被镜像了的池,名叫“tank”。如果命令中的设备包含有其他的文件系统或者以别的形式被使用,那么命令不能执行。
要查看池是否成功创建,用 zpool list 命令,例如:
# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
tank 80G 137K 80G 0% ONLINE -
ZFS 文件系统的层次
不管层次如何,根总是池的名字。
1、为每个用户及项目创建一个文件系统是个不错的办法!
2、ZFS可以为文件系统分组,属于同一组的文件系统具有相似的性质,这有点像用户组的概念!相似的文件系统能够使用一个共同的名字。
3、大多数文件系统的特性都被用简单的方式进行控制,这些特征控制了各种行为,包括文件系统被mount在哪里,怎么被共享,是否被压缩,是否有限额
创建一个文件系统
# zfs create tank/home
下一步,就可以创建各个文件系统,把它们都归组到 home 这个文件系统中。
同时可以设置home的特性,让组内的其他文件系统继承的它的这些特性。
当一个文件系统层次创建之后,可以为这个文件系统设置一些特性,这些特性将被所有的用户共享:
# zfs set mountpoint=/export/zfs tank/home
# zfs set sharenfs=on tank/home
# zfs set compression=on tank/home
# zfs get compression tank/home
NAME PROPERTY VALUE SOURCE
tank/home compression on local
4、创建单个的文件系统
注意:这些文件系统如果被创建好,他们的特性的改变将被限制在home级别,所有的特性能够在文件系统的使用过程中动态的改变。
# zfs create tank/home/bonwick
# zfs create tank/home/billm
bonwick、billm文件系统从父文件系统home中继承了特性,因此他们被自动的mount到/export/zfs/user 同时作为被共享的NFS。管理员根本不需要再手工去编辑 /etc/vfstab 或 /etc/dfs/dfstab 文件。
每个文件系统除了继承特性外,还可以有自己的特性,如果用户bonwick的磁盘空间要限制在10G。
# zfs set quota=10G tank/home/bonwick
5、用 zfs list 命令查看可获得的文件系统的信息,类似于过去的 df -k 命令了,呵呵 .
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 92.0K 67.0G 9.5K /tank
tank/home 24.0K 67.0G 8K /export/zfs
tank/home/billm 8K 67.0G 8K /export/zfs/billm
tank/home/bonwick 8K 10.0G 8K /export/zfs/bonwick
ZFS和传统文件系统的区别
1、传统的文件系统被限制在单个磁盘设备之内,它们的尺寸是不能超越单个磁盘设备。
2、过去的文件系统是被影射到一个物理存储单元,如:分区;所有的ZFS文件系统共享池内的可获得的存储空间。
3、ZFS 文件系统不需要通过编辑/etc/vfstab 文件来维护。
ZFS已经抛弃了卷管理,逻辑卷可以不再使用。因为ZFS在使用和管理raw设备能够有更好的表现。
Components of a ZFS Storage Pool
组成ZFS存储池的元件有:磁盘、文件、虚拟设备,其中磁盘可以是整个硬盘(c1t0d0),也可以是单个slice(c0t0d0s7)。推荐使用整个硬盘,这样可以省去分区操作(format)。
RAID-Z 跟 RAID-5的区别
传统的raid-5都存在着“写漏洞”,就是说如果raid-5的stripe在正写数据时,如果这时候电源中断,那么奇偶校验数据将跟该部分数据不同步,因此前边的写无效;RAID-Z用了“variable-width RAID stripes”技术,因此所有的写都是full-stripe writes。之所以能实现这种技术,就是因为ZFS集成了文件系统和设备管理,使得文件系统的元数据有足够的信息来控制“variable-width RAID stripes”
理论上说,创建RAID-Z需要至少三块磁盘,这跟raid-5差不多。例如:
raidz c1t0d0 c2t0d0 c3t0d0
还可以更加复杂一点,例如:
raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0 c6t0d0 c7t0d0 raidz c8t0d0 c9t0d0 c10t0d0 c11t0d0 c12t0d0 c13t0d0 c14t0d0
上边这个例子创建了14个磁盘的RAID-Z , 这14个盘被分成了两组,但下边这句话有点不大明白:
RAID-Z configurations with single-digit groupings of disks should perform better.
RAID-Z具有自动修复数据的功能
当有损坏的数据块被检测到,ZFS不但能从备份中找到相同的正确的数据,而且还能自动的用正确数据修复损坏的数据。
创建ZFS存储池
1、创建一个基本的存储池,方法很简单:
# zpool create tank c1t0d0 c1t1d0
这时可以在 /dev/dsk 目录下看到一个大的slice,数据动态的stripe跨过所有磁盘!
2、创建一个镜像的存储池
也是很简单,只要在上边命令基础上增加“mirror”关键字就可以了,下边是创建一个两路(two-way)镜像的例子:
# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0
3、创建RAID-Z存储池
使用“raidz”关键字就可以了,例如:
# zpool create tank raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 /dev/dsk/c5t0d0
这里/dev/dsk/c5t0d0其实跟用c5t0d0是一样的,由此可以看出,在创建ZFS的时候,磁盘完全可以用物理设备名就可以,不需要指出全路径。
这句话不大明白:However, the disks must be preformatted to have an appropriately sized slice zero.
4、检测正在使用的设备
在格式化设备之前,ZFS首先决定磁盘是否已经在用或者是否装有操作系统,如果磁盘在用了,那么将会出现下边的错误提示:
# zpool create tank c1t0d0 c1t1d0
invalid vdev specification
use ’-f’ to override the following errors:
/dev/dsk/c1t0d0s0 is currentlymounted on /
/dev/dsk/c1t0d0s1 is currentlymounted on swap
/dev/dsk/c1t1d0s0 is part of active ZFS pool ’zeepool’
Please see zpool(1M)
有些错误可以用 -f 选项来强制覆盖,但是大多错误是不能的。下边给出不能用-f覆盖的错误情况,这时只能手工纠正错误:
Mounted file system The disk or one of its slices contains a file system that is currently mounted. To correct this error, use the umount command.
File system in /etc/vfstab The disk contains a file system that is listed in the /etc/vfstab file,but the file system is not currently mounted.To correct this error,remove or comment out the line in the /etc/vfstab file.
Dedicated dump device The disk is in use as the dedicated dump device for the system. To correct this error, use the dumpadm command.
Part of a ZFS pool The disk or file is part of an active ZFS storage pool. To correct this error, use the zpool command to destroy the pool.
5、创建存储池时默认的mount点
在创建存储池时,如果mount点所在目录不存在,系统会自动创建,如果存在,根数据集(root dataset)会自动mount到这个目录上。
To create a pool with a different default mount point, use the -m option of the zpool create command:
# zpool create home c1t0d0
default mountpoint ’/home’ exists and is not empty
use ’-m’ option to specifya different default
# zpool create -m /export/zfs home c1t0d0
This command creates a new pool home and the home dataset with a mount point of /export/zfs.
6、删除存储池
Pools are destroyed by using the zpool destroy command. This command destroys the pool even if it contains mounted datasets.
# zpool destroy tank
用ZFS存储池管理设备
1、增加设备到存储池
用户可以通过增加一个新的顶级虚拟设备的方法动态给存储池增加空间,这个空间立即对空间中的所有数据集(dataset)有效。要增加一个虚拟设备到池中,用“zpool add”命令,例如:
# zpool add zeepool mirror c2t1d0 c2t2d0
该命令也可以用 -n选项进行预览,例如:
# zpool add -n zeepool mirror c3t1d0 c3t2d0
would update ’zeepool’ to the following configuration:
zeepool
mirror
c1t0d0
c1t1d0
mirror
c2t1d0
c2t2d0
mirror
c3t1d0
c3t2d0
2、增加和减少一路镜像
用“zpool attach”命令增加一路镜像,例如:
# zpool attach zeepool c1t1d0 c2t1d0
在这个例子中,假设 zeepool 是第一点里的那个zeepool(已经是两路镜像),那么这个命令将把zeepool升级成三路镜像。
用“zpool detach”命令来分离一路镜像
# zpool detach zeepool c2t1d0
如果池中不存在镜像,这个才操作将被拒绝。错误提示如下边这个例子:
# zpool detach newpool c1t2d0 cannot detach c1t2d0: onlyapplicable to mirror and replacing vdevs
3、管理设备的“上线”和“下线”
ZFS允许个别的设备处于offline或者online状态。当硬件不可靠或者还没有完全不能用的时候,ZFS会继续向设备读写数据,但不过是临时这么做,因为设备还能将就使用。一旦设备不能使用,就要指示ZFS忽略该设备,并让这个坏掉的设备下线。ZFS不会向offline的设备发送任何请求。
注意:如果只是为了更换设备(被换设备并没有出问题),不需要把他们offline。如果offline设备,然后换了一个新设备上去,再把新设备online,这么做会出错!
用“zpool offline”命令让设备下线。例如:
# zpool offline tank c1t0d0
bringing device c1t0d0 offline
下边这句话没怎么看懂:
You cannot take a pool offline to the point where it becomes faulted. For example, you cannot take offline two devices out of a RAID-Z configuration, nor can you take offline a top-level virtual device.
# zpool offline tank c1t0d0
cannot offline c1t0d0: no valid replicas
默认情况下,offline设备将永久保持offline状态,直到系统重新启动。
要临时offline一个设备,用-t选项,例如:
# zpool offline -t tank c1t0d0
bringing device ’c1t0d0’ offline
用“zpool onine”命令使设备上线
# zpool online tank c1t0d0
bringing device c1t0d0 online
注意:如果只是为了更换设备(被换设备并没有出问题),不需要把他们offline。如果offline设备,然后换了一个新设备上去,再把新设备online,这么做会出错!在这个问题上文档是这么说的:(但愿我没理解错)
Note that you cannot use device onlining to replace a disk. If you offline a
device, replace the drive, and try to bring it online, it remains in the faulted state.
4、清扫存储池设备
如果设备因为出现错误,被offline了,可以用“zpool clear”命令清扫错误。
如果没有特别指定,zpool clear命令清扫池里所有设备。例如:
# zpool clear tank
如果要清扫指定设备,例如:
# zpool clear tank c1t0d0
5、替换存储池里的设备
用“zpool replace”命令替换池中设备,例如:
# zpool replace tank c1t1d0 c1t2d0
c1t1d0 被 c1t2d0 替换
注意:如果是mirror或者RAID-Z,替换设备的容量必须大于或等于所有设备最小容量!
查询ZFS存储池的状态
1、ZFS存储池的基本信息
用“zpool list”命令查看存储池的基本信息,例如:
# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
tank 80.0G 22.3G 47.7G 28% ONLINE -
dozer 1.2T 384G 816G 32% ONLINE -
NAME: The name of the pool.
SIZE: The total size of the pool, equal to the sum of the size of all top-level virtual
devices.
USED: The amount of space allocated by all datasets and internal metadata. Note that
this amount is different from the amount of space as reported at the file system level.
AVAILABLE: The amount of unallocated space in the pool.
CAPACITY (CAP): The amount of space used, expressed as a percentage of total space.
HEALTH: The current health status of the pool.
ALTROOT: The alternate root of the pool, if any.
可以通过指定名字来查看某一个池的状态,例如:
# zpool list tank
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
tank 80.0G 22.3G 47.7G 28% ONLINE -
参考技术A http://baike.baidu.com/view/959414.htm
Mac之系统中各个文件夹详细介绍
打开Macintosh HD你会发现内中有四个文件夹分别为:应用程序(Applications)、系统(System)、用户(User)、资料库(Library)下面为大家详细介绍下其含义
Mac OS X,这是一个基于UNIX核心的系统,增强了系统的稳定性、性能以及响应能力。它能通过对称多处理技术充分发挥双处理器的优势,提供无与伦比的2D、3D和多媒体图形性能以及广泛的字体支持和集成的PDA功能。MAC OSX通过Classic环境几乎可以支持所有的MacOS9应用程序,直观的Aqua用户界面使Mac intosh的易用性又达到了一个全新的水平。
MAC硬盘中各个文件夹*
打开Macintosh HD你会发现内中有四个文件夹
分别有——应用程序(Applications)、系统(System)、用户(User)、资料库(Library)。四个文件夹中又分别各有若干数量的文件夹存在。
1.Applications
这个当然就是存放各种软件的位置了。
2.System
包含由Apple安装的系统软件。这此资源是系统正常运行所必须的,位于启动卷宗中
/System/Library/CFMSupport CFM, Code Fragment Manager
, 等同旧Mac OS应用程序都会使用的共有程式库. 以确保Mac OS环境的一致性. 当中储存有一个在OS X中极为重要的档桉—CarbonLib, 是执行炭火软件时必不可欠的档桉. 此外还有DiscRecordingLib(CD/R-RW用的程式库), OpenGLLib(OpenGL), stbCLib(c语言)
/System/Library/DTDs
作为存放系统所使用的各种XML档桉, 并为其格式定义之档桉. Mac OS X Data形式製成的文书, 分别由三个档桉管理, 分别是PropertyList.dtd
, KeyboardLayout.dtd
及sdef.dtd
三个档桉所组成. 而DTD, 全名为Document Type Definition. 此外, .plist档桉亦是由XML撰写出来的.
/System/Library/Extensions
其实这裡就是用作存放硬件驱动的地方,苹果不称驱动程序为driver, 而是称为Extension.
/System/Library/Filesystems
主要就是用以存放OS X对应及支持何种档桉格式的资料. 例同标准的AppleShare(苹果档桉分享标准), ISO 9660/FTP/HFS及至网络上用的如Samba等
/System/Library/HelpViewer
一切和Mac OS Help有关的档桉及文件都存放于此
/System/Library/Find
就是搜寻机能了. 是对应多国语言的.
/System/Library/OpenSSL
全名为Secure Sockets Layer. 是一套通讯加密技术, 一般用于Web服务器上, 会将密码传送时以加密的暗号处理, 从而减低第三方成功盗 取资料的可能. 一般应用于以https开首的URL上. Mac OS X内置的WebServer—Apache, 亦包含这个服务.
/System/Library/CoreServices/Dock
这是OS X的特徵之一, 这部份是有关Dock的资料
/System/Library/CoreServices/Finder.app
这个比较特别, 因为这是一个应用而非一个档桉夹, Finder.app可说是负责掌控整个OS上的一切资源.
/System/Library/CoreServices/Kerberos
由MIT(麻省理工大学)开发的网络认证技术. 能够很简单地以单一ID登入系统的检证技术. Mac OS X支援其版本4的Kerberos. 所谓Kerberos, 在希腊神话中是一头住在冥界, 拥三头, 蛇尾的地狱守门犬
/System/Library/CoreServices/Menu ExtrasStatus bar
上面所有系统自带工具的原文件,双击打开可以直接在status bar上添加相应文件
/System/Library/CoreServices/Setup Assistant
所有有关设定助理的资料都存放于此.
/System/Library/CoreServices/Software Update
这裡就是负责Software update的地方
3.Library
系统资源库。
比如字体、ColorSync 配置、偏好设置以及插件都应该安装在 Library 目录下适当的子目录中。
Application Support包含了应用相关的数据以及支持文件,比如第三方的插件,帮助应用,模板以及应用使用到但是并不需要用来支持运行的额外资源文件。按照惯例,所有这些内容都会被存储在以应用名称命名的子目录当中。
Assistants包含了帮助用户进行配置或者其它任务的程序。
ColorPickers包含了用来选择色彩的资源,它们根据某种模型,比如 HLS (色彩角、饱和度、亮度) 选择器或者 RGB 选择器。
ColorSync包含了 ColorSync 配置和脚本。
Components包含了系统包和扩展。
Contextual Menu Items包含了用于扩展系统级菜单的插件。
Dictionaries包含了系统自带的字典文件。
Desktop Pictures桌面图片目录。
Documentation包含了供计算机用户和管理员参考的文档文件和 Apple 帮助包。(Apple 帮助包在Help 子目录当中。) 在本地域中,这个目录包含了 Apple 公司发布的帮助包(不包括开发者文档)。
Extensions包含了设备驱动和其它内核扩展。(只存在于系统域当中。)
Favorites包含了指向经常访问的文件夹、文件或者网站的别名。(仅仅存在于用户域当中。)
Fonts包含了用于显示和打印的字体文件。
Java包含了Java运行环境。
StartupItems包含了在系统导入时刻运行的系统以及第三方脚本和程序。 (更多有关系统导入时刻启动步骤的信息请参考系统启动程序主题)
4.User
包含了某个用户专有的资源。这里也有一个Library文件夹,不同与上边的那个Library,是专为你的帐号服务,里面放的是你自己的个性化字体、配置文件等
Applications包含仅仅当前用户可用的应用。
Desktop 包含了 Finder 在当前登录用户桌面上显示的桌面项。
Documents 包含了用户的个人文档。
Download 包含了下载的各种文档。
Library 包含了应用设置、偏好设置一起其他用户专有的系统资源
Documentation包含了供计算机用户和管理员参考的文档文件和 Apple 帮助包。(Apple 帮助包在Help 子目录当中。) 在本地域中,这个目录包含了 Apple 公司发布的帮助包(不包括开发者文档)。
Extensions包含了设备驱动和其它内核扩展。(只存在于系统域当中。)
硬盘中还有几个隐藏文件夹
1) bin———储存有基本的UNIX指令
2) sbin——–UNIX 系统指令的储存地方, 是比较进阶的指令
3) etc———系统设定档桉储存地方
4) var———改动频繁的档桉, 都置放于此, 例如各log档桉
5) tmp——–系统的暂存档
6) usr———UNIX的使用者专用档桉夹
Mac OS X新建文件夹的方法:从「档案」(File)选单中选取「新建文件夹」(New Folder)即可。
以上是关于有没有详细介绍文件系统的书籍?的主要内容,如果未能解决你的问题,请参考以下文章