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

下载本文档

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

文档简介

1、在 UNIX 中,所有东西都是文件,但是并非以相同的方式存储每个文件。文件系统决定在介质上如何分解并组织文件。在过去,介质意味着磁带或磁盘。但是,文件系统现在可以把任何源 远程服务器、存档文件甚至其他文件系统 “翻译” 为虚拟介质。本文介绍几种新式的文件系统。简介有句老话说:“在 UNIX 中,所有东西都是文件”,这种说法很准确。从概念上说,每个 UNIX 资源都是一个简单的文件,可以打开、读和/或写它。您的实验数据、shell 启动脚本、UNIX 内核、主目录、每个网络套接字和 /bin/ls 可执行程序等等都是文件。常用缩略词 SFTP:安全传输协议 SSH:安全 Shell但是,每个文件

2、并不相同。实验数据可能是高度定制的数据库。shell 脚本是文本文件,但是有一个重要的特征:以!#(常常称为shebang)开头的行指出由哪个应用程序解释此文件。内核和所有可执行程序都是二进制文件,它们都采用可预知的系统工具可操纵的特定格式。目录是用于内容编目的特殊索引。另外,每个文件并非以相同的方式存储。文件的结构和大小取决于底层文件系统 即把文件数据存储到物理设备上的子系统。相同的数据 比如同一文件的两个拷贝 在不同的文件系统上以不同的方式组织。每个文件系统规定自己的存储战略,可能是为满足特定的条件而设计的。例如,一种文件系统可能是以提高速度为目的而优化的,另一种文件系统偏重高效地使用空间

3、,还有一种文件系统偏重于防止数据丢失或损坏。通常,对于部署哪种文件系统,并没有简单的答案:必须分析自己的存储需求,选择能够满足目标的文件系统或文件系统组合。UNIX(和许多软件商)提供很多种文件系统,所以一定能找到适合自己需要的文件系统。表 1列出适用于 UNIX(在许多情况下也适用于 Linux)的几种文件系统。表 1. UNIX 文件系统文件系统优点Zettabyte 文件系统 (ZFS)实质上规模无限的文件系统(1zettabyte等于 270字节),可以使用常见的现成的存储介质构造它。ZFS 还可以在写数据时压缩数据,从而进一步扩大介质容量。网络文件系统 (NFS)这是 UNIX 的出

4、色特性之一,NFS 让远程文件系统看起来像是本地的。NFS 非常适合共享数据。日志文件系统 (JFS)JFS 和许多替代品保留对每个文件所做的更改的日志。当系统崩溃或损坏时,“重播” 日志以恢复文件。B 树文件系统 (Btrfs)Btrfs 是最新的文件系统之一,是未来的 Linux 版本的默认文件系统,它通过维护数据和元数据校验和来保证持久性。Btrfs 还提供快照并可以混合使用几乎任何大小的设备。回页首您自己的文件系统通常,文件系统要求相应地调整介质,所以把一种文件系统改为另一种通常要使用格式化的物理备份驱动器,还需要很长的恢复和检验过程。显然,这样的更改很复杂,只能由系统管理员执行。但是

5、,许多 UNIX 和 Linux 内核最近的一项扩展让任何用户都可以创建和使用多种文件系统,不需要特殊的特权。这个扩展称为FUSE,即Filesystem in User Space。可以使用这种软件非常轻松地创建新的文件系统。从 FUSE 派生的文件系统可以通过 SFTP 挂装文件;自动地扫描文件中的病毒;像本地驻留的数据文件一样操作只读的 CD-ROM 光盘。让我们在一个常见的操作系统平台上安装 FUSE,研究任何用户现在都可以使用的一些新型文件系统。现代的 UNIX 和 Linux 内核通常都包含对 FUSE 的支持,所以构建此软件的过程与构建任何实用程序代码相似。必须下载软件包,解压它

6、,运行配置脚本以探测系统的功能,构建并安装代码。清单 1给出用于安装 FUSE 的代码。清单 1. 安装 FUSE$ wget fuse/fuse-2.X/2.8.4/fuse-2.8.4.tar.gz$ tar xzf fuse-2.8.4.tar.gz$ cd fuse-2.8.4$ ./configure$ make$ sudo make install到本文发表时,最新版本是 FUSE 2.8.4。一定要从 FUSE 项目主页下载最新代码(见参考资料中的链接)。编译之后,FUSE 包安装构建新的 FUSE 文件系统所需的很多库和名为fusermount的应用程序,这个应用程序用于挂装和

7、卸载 FUSE 文件系统。除了通常提供给mount命令的选项之外,fusermount 还有几个特殊选项。回页首自制 NFS安装基础代码之后,可以继续安装 FUSE 文件系统。我们要尝试的第一个 FUSE 文件系统是 SSHFS,它是一种基于 SFTP 的文件系统。只要服务器支持 SSH(大多数服务器都符合这个条件),就可以通过 SSHFS 把任何远程目录挂装为本地文件系统。在继续操作之前,要确认系统上有Glib2.0 和Gthread2.0。如果系统上有 GNOME,很可能有这些库;否则,从源代码或通过操作系统的本机包管理器安装它们。(Debian Linux 系统有 Aptitude。Re

8、d Hat Linux 系统提供rpm、yum和YaST。)清单 2给出安装 SSHFS 的代码。清单 2. 安装 SSHFS$ wget fuse/files/sshfs-fuse/2.2/sshfs-fuse-2.2.tar.gz/download$ tar xzf sshfs-fuse-2.2.tar.gz$ cd sshfs-fuse-2.2$ ./configure$ make$ sudo make install如果运行 Ubuntu 或者 UNIX 或 Linux 的其他变体,您的发行版可能提供所有软件包的预构建二进制代码。例如,在 Ubuntu 上,目前可以用以下命令安装列出的

9、所有 FUSE 软件:$ apt-get install libglib2.0-dev fuse-utils libfuse2 sshfs如果您依赖的代码是最新的,还可能能够用apt-get install sshfs命令安装 SSHFS。安装了 FUSE 库和 SSHFS,就可以把能够通过 SSH 访问的任何远程目录挂装为本地文件系统(见清单 3)。通过组合ssh和mount,提供远程系统的名称、登录凭证、希望挂装的远程目录和本地挂装点(可以是任何本地目录)。清单 3. 把能够通过 SSH 访问的目录挂装为文件系统$ ssh lsbin Documents lib

10、 Media Pictures Sites tmpDesktop Downloads Library Movies projects SourceDocumentation Dropbox local Music Public src$ cd $ mkdir -p mounts/example$ sshfs :/home/me mounts/example$ cd mounts/example$ lsbin Documents lib Media Pictures Sites tmpDesktop Downloads Library Movies projects S

11、ourceDocumentation Dropbox local Music Public src如您所见,现在可以像本地文件一样方便地使用远程目录的内容。如果您是使用多个系统的开发人员,SSHFS 让您能够用本地命令 比如cp、make等 操作远程文件。可以输入fusermount -u/some/mount/point以卸载 FUSE 文件系统。因为 FUSE 文件系统的表现就像一般的文件系统一样,所以也可以输入umount/some/mount/point。另一个远程文件系统变体称为S3FS。S3FS 并不使用您自己的远程服务器和 SFTP,而是把 Amazon Simple Stora

12、ge Service (Amazon S3) bucket 挂装为本地文件系统。S3FS “自然、透明地在 S3 中” 存储文件,还可以启用本地缓存以尽可能减少下载量。最大文件大小是 5GB。与 SSHFS 一样,可以下载并构建源代码,然后马上就能使用它。注意:S3FS 包依赖于cURL库开发头文件和LibXML2库。清单 4给出安装 S3FS 实例的代码。清单 4. 安装 S3FS$ wget $ tar xzf s3fs-r191-source.tar.gz$ cd s3fs$ make$ sudo make install假设您已经有一个 Amazon S3 账号,账号提供访问密钥和秘密

13、访问密钥,就可以用以下命令挂装自己的任何 bucket:$ s3fs bucket_name -ouse_cache=/tmp -o accessKeyId=your_access_key -o secretAccessKey=your_secret_access_key /mnt有了 S3FS,就可以把整个 Git 存储库放在 Amazon S3 上,或者使用rsync在 Amazon 的存储系统上存储备份。回页首访问任何存档FUSE 的另一个重要工具是archivemount,这个实用程序可以把很多形式的存档挂载为本地文件系统,包括 tarball(即用 gzip 压缩的 tar 存档)。

14、假设系统上有libarchive,就可以快速地构建archivemount,见清单 5。清单 5. 安装 archivemount$ wget http:/www.cybernoia.de/software/archivemount/archivemount-0.6.1.tar.gz$ tar xzf archivemount-0.6.1.tar.gz$ cd archivemount-0.6.1$ ./configure$ make$ sudo make install例如,可以使用archivemount把它自己的 tarball 挂装为文件系统。清单 6给出代码。清单 6. 把 tarb

15、all 挂装为文件系统$ tar tfz archivemount-0.6.1.tar.gzarchivemount-0.6.1/archivemount-0.6.1/README.archivemount-0.6.1/archivemount.carchivemount-0.6.1/CHANGELOG$ mkdir -p /mnt/tgz$ archivemount archivemount-0.6.1.tar.gz /mnt/tgz$ cd /mnt/tgz/archivemount-0.6.1$ lsaclocal.m4 archivemount.c configure depcomp

16、Makefile.inarchivemount.1 CHANGELOG configure.ac install-sh missingarchivemount.1.in config.h.in COPYING Makefile.am README与 SSHFS 相似,archivemount为 tarball 提供与本地文件系统相似的无缝的访问。顺便说一句,如果在 tarball 的 “文件系统” 中修改、删除或添加任何文件,那么当卸载 FUSE 文件系统时所有修改会保存到原来的 tarball 中。fusermount -u /mnt/tgz命令从指定的挂装点卸载 FUSE 文件系统。清单

17、7列出一个 tarball “文件系统” 的内容。清单 7. 通过 archivemount 写文件$ cd /mnt/tgz/archivemount-0.6.1$ echo Remember this for later. NOTES$ lsaclocal.m4 CHANGELOG COPYING Makefile.inarchivemount.1 config.h.in depcomp missingarchivemount.1.in configure install-sh NOTESarchivemount.c configure.ac Makefile.am README$ fus

18、ermount -u /mnt/tgz$ tar tfz archivemount-0.6.1.tar.gzarchivemount-0.6.1/archivemount-0.6.1/README.archivemount-0.6.1/CHANGELOGarchivemount-0.6.1/NOTES清单 7中最后的tar命令确认NOTES确实已经添加到 tarball 中了。对于用archivemount扩展存档,有一个警告:软件的作者指出,在存档中写文件应该谨慎,因为如果写操作失败,所有修改都会丢失。但是,一般来说,少量写操作不会出问题。尽管如此,archivemount的只读特性是非常出

19、色的。如果希望检查通过 FUSE 挂装的文件系统,只需运行典型的mount命令并寻找标有fuse的系统,见清单 8。清单 8. 通过 FUSE 挂装的文件系统$ mount/dev/sda1 on / type ext3 (rw,relatime,errors=remount-ro)tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755).udev on /dev type tmpfs (rw,mode=0755)tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)devpts on /dev/pts

20、type devpts (rw,noexec,nosuid,gid=5,mode=620)fusectl on /sys/fs/fuse/connections type fusectl (rw)archivemount on /home/strike/mnt/tgz type fuse.archivemount (rw,nosuid,nodev,user=strike)本文所用的测试环境是在 Dell 桌面 PC 上运行的 Ubuntu 10。在清单 8所示的mount脚本中,可以在底部看到archivemount文件系统,在顶部看到 Linux 挂装的典型物理设备。回页首适合保存机密数据的

21、文件系统根据前两个示例,您可以想到 FUSE 能够包装许多连网的服务和文件格式,从而对远程或打包的文件提供无缝的访问。确实有很多有效的实现。WikipediaFS把 Wikipedia 挂装为本地文件系统,可以在其中本地地编辑文章。其他软件包为博客、Flickr 和 Google Mail 服务提供相似的功能。FUSE 的另一个特性是镜像,即并行地维护文件的拷贝。典型的示例是 FUSE-centric Encrypted File System (EncFS)。指定一个源目录和一个目标目录,写到源目录中的所有文件就会自动地加密并保存到目标目录中。EncFS 需要librlog,这是一个灵活的消

22、息日志记录库。从源代码或发行版的存储库安装它,然后继续构建 EncFS,见清单 9。清单 9. 安装 EncFS$ wget $ tar xzf encfs-1.6-1.tgz$ cd encfs-1.6-1$ ./configure$ make$ sudo make install安装软件包之后,就可以使用它了。必须创建两个新目录 一个用于保存原来的文件,一个用于保存加密的文件。encfs实用程序映射这两个目录,见清单 10。清单 10. 创建用于加密的目录对$ mkdir /data$ mkdir /encrypted_data$ encfs /encrypted_data /dataCr

23、eating new encrypted volume.Please choose from one of the following options: enter x for expert configuration mode, enter p for preconfigured paranoia mode, anything else, or an empty line will select standard mode.? pParanoia configuration selected.Configuration finished. The file system to be crea

24、ted hasthe following properties:Filesystem cipher: ssl/aes, version 2:2:1Filename encoding: nameio/block, version 3:0:1Key Size: 256 bitsBlock Size: 1024 bytes, including 8 byte MAC headerEach file contains 8 byte header with unique IV data.Filenames encoded using IV chaining mode.File data IV is ch

25、ained to filename IV.File holes passed through to ciphertext.- WARNING -The external initialization-vector chaining option has beenenabled. This option disables the use of hard links on thefile system. Without hard links, some programs may not work.The programs mutt and procmail are known to fail. F

26、ormore information, please see the encfs mailing list.If you would like to choose another configuration setting,please press CTRL-C now to abort and start over.Now you will need to enter a password for your file system.You will need to remember this password, as there is absolutelyno recovery mechan

27、ism. However, the password can be changedlater using encfsctl.New Encfs Password:Verify Encfs Password:一般情况下,可以选择 paranoia 模式。接下来,输入用于保护文件的密码并再次输入以确认密码。清单 11给出代码。清单 11. EncFS 自动地加密新文件$ cd /data$ vi secrets.txtCreate file with your secrets.$ lssecrets.txt$ ls /encrypted_dataLKs2bi5sfttNlyExybM6eNck创建

28、的每个文件都会出现在加密的目录中,甚至文件名也加密了。操作完之后,只需卸载未加密的目录,见清单 12。此目录的内容被删除,只留下加密的文件。清单 12. 卸载未加密的目录$ fusermount -u /data$ ls /dataNo such file or directory$ ls /encrypted_dataLKs2bi5sfttNlyExybM6eNck要想查看未加密的文件,应该把一个挂装点连接到前面加密的文件集。当出现提示时,输入密码以验证自己的身份:$ encfs /encrypted_data /dataEncFS Password:$ ls /datasecrets.txt重新挂装之后,可以以明文看到原来的文件。对文件的任何修改会被重新编码。回页首FUSE:并不是玩具

温馨提示

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

评论

0/150

提交评论