对话UNI新型文件系统简介_第1页
对话UNI新型文件系统简介_第2页
对话UNI新型文件系统简介_第3页
对话UNI新型文件系统简介_第4页
对话UNI新型文件系统简介_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

对话UNI新型文件系统简介在UNIX中,所有东西都是文件,但是并非以相同的方式存储每个文件。文件系统决定在介质上如何分解并组织文件。在过去,介质意味着磁带或磁盘。但是,文件系统现在可以把任何源—远程服务器、存档文件甚至其他文件系统—“翻译”为虚拟介质。本文介绍几种新式的介有句老话说:“在UNIX中,所有东西都是文件”,这种说法很准确。从概念上说,每个UNIX资源都是一个简单的文件,可以打开、读和/或套接字和/bin/ls可执行程序等等都是文件。常用缩略词SFTP:安全传输协议SSH:安全Shell但是,每个文件并不相同。实验数据可能是高度定制的数据库。shell脚本是文本文件,但是有一个重要的特征:以?!#(常常称为?shebang)开头的行指出由哪个应用程序解释此文件。内核和所有可执行程序都是二进制文件,它们都采用可预知的系统工具可操纵的特定格式。目录是用于内容编目的特殊索引。另外,每个文件并非以相同的方式存储。文件的结构和大小取决于底层文件系统?—即把文件数据存储到物理设备上的子系统。相同的数据—比如同一文件的两个拷贝—在不同的文件系统上以不同的方式组织。每个文件系统规定自己的存储战略,可能是为满足特定的条件而设计的。例如,一种文件系统可能是以提高速度为目的而优化的,另一种文件系统偏重高效地使用空间,还有一种文件系统偏重于防止数据丢失或损坏。通常,对于部署哪种文件系统,并没有简单的答案:必须分析自己的存储需求,选择能够满足目标的文件系统或文件系统组合。UNIX(和许多软件商)提供很多种文件系统,所以一定能找到适合自己需要列出适用于UNIX(在许多情况下也适用于Linux)的几种文件系统。表1.UNIX文件系统文件系统优点Zettabyte文实质上规模无限的文件系统(1?zettabyte等于270字件系统(ZFS)节),可以使用常见的现成的存储介质构造它。ZFS还可以在写数据时压缩数据,从而进一步扩大介质容量。网络文件系统这是UNIX的出色特性之一,NFS让远程文件系统看起JFS和许多替代品保留对每个文件所做的更改的日志。当系统崩溃或损坏时,“重播”日志以恢复文件。B树文件系统Btrfs是最新的文件系统之一,是未来的Linux版本的默认文件系统,它通过维护数据和元数据校验和来保证持久性。Btrfs还提供快照并可以混合使用几乎任何大小的设备。您自己的文件系统通常,文件系统要求相应地调整介质,所以把一种文件系统改为另一种通常要使用格式化的物理备份驱动器,还需要很长的恢复和检验过程。显然,这样的更改很复杂,只能由系统管理员执行。但是,许多UNIX和Linux内核最近的一项扩展让任何用户都可以创建和使用多种文件系统,不需要特殊的特权。这个扩展称为?FUSE,即件系统。从FUSE派生的文件系统可以通过SFTP挂装文件;自动地扫描文件中的病毒;像本地驻留的数据文件一样操作只读的CD-ROM光让我们在一个常见的操作系统平台上安装FUSE,研究任何用户现在都可以使用的一些新型文件系统。现代的UNIX和Linux内核通常都包含对FUSE的支持,所以构建此软件的过程与构建任何实用程序代码相似。必须下载软件包,解压它,运行配置脚本以探测系统的功能,构建并安装代码。给出用于安装FUSE的代码。清单1.安装FUSE$wgetfuse.42.8.4configure$make$sudomakeinstall到本文发表时,最新版本是FUSE2.8.4。一定要从FUSE项目主页下载最新代码(见中的链接)。编译之后,FUSE包安装构建新的FUSE文件系统所需的很多库和名为fusermount的应用程序,这个应用程序用于挂装和卸载FUSE文件系统。除了通常提供给?mount命令的选项之外,fusermount还有几个特殊选项。安装基础代码之后,可以继续安装FUSE文件系统。我们要尝试的第一个FUSE文件系统是SSHFS,它是一种基于SFTP的文件系统。只要服务器支持SSH(大多数服务器都符合这个条件),就可以通过SSHFS把任何远程目录挂装为本地文件系统。在继续操作之前,要确认系统上有?Glib和?Gthread。如果系统上有GNOME,很可能有这些库;否则,从源代码或通过操作系统的本机包管理器安装它们。(DebianLinux系统有Aptitude。RedHatLinux系统提供?rpm、yum和YaST。)给出安装SSHFS的代码。清单2.安装SSHFS$wgetprojects/\fuse/files/sshfs-fuse/tarxzfcd$./configure$make$sudomakeinstall如果运行Ubuntu或者UNIX或Linux的其他变体,您的发行版可能提供所有软件包的预构建二进制代码。例如,在Ubuntu上,目前可以用以下命令安装列出的所有FUSE软件:$apt-getinstallfuse-utilslibfuse2sshfs如果您依赖的代码是最新的,还可能能够用?apt-getinstallsshfs命令安装SSHFS。安装了FUSE库和SSHFS,就可以把能够通过SSH访问的任何远程目录挂装为本地文件系统(见?)。通过组合?ssh和mount,提供远程系统的名称、登录凭证、希望挂装的远程目录和本地挂装点(可以是任何本地目录)。清单3.把能够通过SSH访问的目录挂装为文件系统$sshlsbinDocumentslibMediaPicturesSitesDesktopDownloadsLibraryMoviesprojectsSourceDocumentationDropboxlocalMusicPublicsrc$cd~$mkdir-pmounts/example$sshfs:/home/memounts/example$cdmounts/example$lsbinDocumentslibMediaPicturesSitesDesktopDownloadsLibraryMoviesprojectsSourceDocumentationDropboxlocalMusicPublicsrc如您所见,现在可以像本地文件一样方便地使用远程目录的内容。如果您是使用多个系统的开发人员,SSHFS让您能够用本地命令—比如可以输入?fusermount-u/some/mount/point以卸载FUSE文件系统。因为FUSE文件系统的表现就像一般的文件系统一样,所以也可以输入umount/some/mount/point。另一个远程文件系统变体称为?S3FS。S3FS并不使用您自己的远程服务器和SFTP,而是把AmazonSimpleStorageService(AmazonS3)bucket挂装为本地文件系统。S3FS“自然、透明地在S3中”存储文件,还可以启用本地缓存以尽可能减少下载量。最大文件大小是5GB。与SSHFS一样,可以下载并构建源代码,然后马上就能使用它。给出安装S3FS实例的代码。清单4.安装S3FS$wgettarxzfcds3fs$make$sudomakeinstall假设您已经有一个AmazonS3账号,账号提供访问密钥和秘密访问密钥,就可以用以下命令挂装自己的任何bucket:$s3fsbucket_name-ouse_cache=/tmp-oaccessKeyId=your_access_key\-osecretAccessKey=your_secret_access_key/mnt有了S3FS,就可以把整个Git存储库放在AmazonS3上,或者使用?rsync在Amazon的存储系统上存储备份。访问任何存档FUSE的另一个重要工具是?archivemount,这个实用程序可以把很多形式的存档挂载为本地文件系统,包括tarball(即用gzip压缩的tar存档)。假设系统上有?libarchive,就可以快速地构建?archivemount,见?。清单5.安装archivemount$wget0.6.1tarxzf0.6.1cdarchivemount-0.6.1$./configure$make$sudomakeinstall例如,可以使用?archivemount把它自己的tarball挂装为文件系统。清单6.把tarball挂装为文件系统$tartfz..10.6.1mkdir-p~/mnt/tgz$archivemount0.6.1~/mnt/tgz$cd~/mnt/tgz/archivemount-0.6.1$lsconfiguredepcompCHANGELOGinstall-shmissingCOPYINGREADMESSHFS相似,archivemount为tarball提供与本地文件系统相似的无缝的访问。顺便说一句,如果在tarball的“文件系统”中修改、删除或添加任何文件,那么当卸载FUSE文件系统时所有修改会保存到原来的tarball中。fusermount-u~/mnt/tgz命令从指定的挂装点卸载FUSE文件系统。列出一个tarball“文件系统”的内容。清单7.通过archivemount写文件$cd~/mnt/tgz/archivemount-0.6.1$echo'Rememberthisforlater.'>NOTES$lsCHANGELOGCOPYINGdepcompmissingconfigureinstall-shNOTESREADME$fusermount-u~/mnt/tgz实已经添加到tarball中了。对于用archivemount扩展存档,有一个警告:软件的作者指出,在存档中写文件应该谨慎,因为如果写操作失败,所有修改都会丢失。但是,一般来说,少量写操作不会出问题。尽如果希望检查通过FUSE挂装的文件系统,只需运行典型的?mount命令清单8.通过FUSE挂装的文件系统$mount/dev/sda1on/typeext3(rw,relatime,errors=remount-ro)tmpfson/lib/init/rwtypetmpfs(rw,nosuid,mode=0755)udevon/devtypetmpfs(rw,mode=0755)tmpfson/dev/shmtypetmpfs(rw,nosuid,nodev)devptson/dev/ptstypedevpts(rw,noexec,nosuid,gid=5,mode=620)fusectlon/sys/fs/fuse/connectionstypefusectl(rw)archivemounton/home/strike/mnt/tgztype(rw,nosuid,nodev,user=strike)本文所用的测试环境是在Dell桌面PC上运行的Ubuntu10。在所示tLinux挂装的典型物理设备。适合保存机密数据的文件系统根据前两个示例,您可以想到FUSE能够包装许多连网的服务和文件格式,从而对远程或打包的文件提供无缝的访问。确实有很多有效的实现。WikipediaFS把Wikipedia挂装为本地文件系统,可以在其中本地地编辑文章。其他软件包为博客、Flickr和GoogleMail服务提供相FUSE的另一个特性是镜像,即并行地维护文件的拷贝。典型的示例是FUSE-centricEncryptedFileSystem(EncFS)。指定一个源目录和一个目标目录,写到源目录中的所有文件就会自动地加密并保存到目标目录中。EncFS需要?librlog,这是一个灵活的消息日志记录库。从源代码或发行版的存储库安装它,然后继续构建EncFS,见?。清单9.安装EncFS$wgettarxzfcd$./configure$make$sudomakeinstall安装软件包之后,就可以使用它了。必须创建两个新目录—一个用于保存原来的文件,一个用于保存加密的文件。encfs实用程序映射这两个清单10.创建用于加密的目录对$mkdir~/data$mkdir~/encrypted_data$encfs~/encrypted_data~/dataCreatingnewencryptedvolume.Pleasechoosefromoneofthefollowingoptions:enter"x"forexpertconfigurationmode,enter"p"forpreconfiguredparanoiamode,anythingelse,oranemptylinewillselectstandardmode.Paranoiaconfigurationselected.Configurationfinished.Thefilesystemtobecreatedhasthefollowingproperties:Filesystemcipher:"ssl/aes",version2:2:1Filenameencoding:"nameio/block",version3:0:1KeySize:256bitsBlockSize:1024bytes,including8byteMACheaderEachfilecontains8byteheaderwithuniqueIVdata.FilenamesencodedusingIVchainingmode.FiledataIVischainedtofilenameIV.Fileholespassedthroughtociphertext.--------------------------WARNING--------------------------Theexternalinitialization-vectorchainingoptionhasbeenenabled.Thisoptiondisablestheuseofhardlinksonthefilesystem.Withouthardlinks,someprogramsmaynotwork.Theprograms'mutt'and'procmail'areknowntofail.Formoreinformation,pleaseseetheencfsmailinglist.Ifyouwouldliketochooseanotherconfigurationsetting,pleasepressCTRL-Cnowtoabortandstartover.Nowyouwillneedtoenterapasswordforyourfilesystem.Youwillneedtorememberthispassword,asthereisabsolutelynorecoverymechanism.However,thepasswordcanbechangedlaterusingencfsctl.NewEncfsPassword:VerifyEncfsPassword:一般情况下,可以选择"paranoia"模式。接下来,输入用于保护文件的密码并再次输入以确认密码。给出代码。清单11.EncFS自动地加密新文件$cd~/data[Createfilewithyoursecrets.]$ls$ls~/encrypted_dataLKs2bi5sfttNlyExybM6eNck创建的每个文件都会出现在加密的目录中,甚至文件名也加密了。操作完之后,只需卸载未加密的目录,见?。此目录的内容被删除,只留下加清单12.卸载未加密的目录$fusermount-u~/data$ls~/dataNosuchfileordirectory$ls~/encrypted_dataLKs2bi5sfttNlyExybM6eNck要想查看未加密的文件,应该把一个挂装点连接到前面加密的文件集。当出现提示时,输入密码以验证自己的身份:$encfs~/encrypted_data~/dataEncFSPassword:$ls~/data重新挂装之后,可以以明文看到原来的文件。对文件的任何修改会被重FUSE:并不是玩具!尽管前面的示例相当简单,但是不要低估FUSE的能力。一些强大的文件存储解决方案也在用户空间中运行。例如,Z

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论