Chinaunix首页 | 论坛 | 博客
  • 博客访问: 368446
  • 博文数量: 100
  • 博客积分: 1894
  • 博客等级: 上尉
  • 技术积分: 951
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-11 23:17
文章分类

全部博文(100)

文章存档

2018年(3)

2014年(2)

2013年(7)

2012年(10)

2011年(8)

2010年(6)

2009年(63)

2008年(1)

分类: 服务器与存储

2012-07-12 10:03:15

在Storage Foundation存储解决方案中,磁盘组和卷一般都是由专业的存储专业人员来配置和管理的。作为普通用户,我们并不关心文件系统是多少个硬盘组成,数据存放在哪个硬盘,磁盘数据部署是用条带,镜像还是RAID5技术的。用户能够感受到的是,文件系统读写是否快速,文件系统是否稳定,操作是否简单,维护是否便捷。

    可以说,文件系统是Storage Foundation与普通用户交互的接口,文件系统的好坏是用户对于Storage Foundation是否满意的关键所在。正因为如此,今天我们来聊聊文件系统的入门知识和用法。

谈文件系统,必然先要谈到裸设备和块设备,创建文件系统一般都会创建一个裸设备文件和一个与之对应的块设备文件,裸设备文件是Storage Foundation用来管理文件系统的,块设备文件是用户可以用来读写数据的。

    很多用户都会混淆这两个概念,我给大家做个比喻:Storage Foundation就好像一个数据专家,他手里有一些硬盘资源,他来维护这些资源的可靠性和安全性等等;用户习惯使用的操作系统就好像是Storage Foundation的代理,Storage Foundation委托操作系统给用户提供服务数据读写的服务。Storage Foundation根据用户创建文件系统的大小要求,就会在硬件上面划分一块相应的区域出来,作为数据存放的物理空间;然后给操作系统提供一组接口,使得用户可以通过操作系统来读写这个物理空间,这个接口就是块设备了。

    根据刚才讲的裸设备和块设备的区别,我们应该能够了解:裸设备文件和块设备文件其实都是可以读写的。对裸设备文件的读写其实是直接对硬盘进行读写操作,优点是读写速度快,有利于提高IO的速度,但是缺点是容易出错,而且对硬盘的读写不利于文件的管理和维护,所以对裸设备文件的方法一般不会被采用,除非是数据库文件大块的写入,为了提高速度,避免或者减弱在IO的瓶颈。相反的,对块设备文件的读写虽然稍微慢一点(毕竟要通过操作系统做代理,代理总会干点什么影响效率的),但是优点是易于管理,易于维护。所以一般来说,用户都不得不在块设备文件上进行操作(毕竟不会人人都是存储专家的)。

    在Storage Foundation中,裸设备文件存放的地址是/dev/vx/rdsk/disk_group/volume_name,而对应的块文件设备的存放地址是/dev/vx/dsk/disk_group/volume_name,其中disk_group就是文件系统所属的磁盘组,volume_name就是文件系统所属的卷,rdsk就是裸磁盘(raw disk)的意思。

    好了,介绍了两种设备文件的区别之后,我们开始详细讲述文件系统的用法。

1. 创建文件系统
    mkfs –F VxFS –o [option]
    其中,option是Storage Foundation为用户提供的一些可选项:

    a) –o N
    表示并不真实创建文件系统,只是给用户提供创建文件系统的信息;
    b) –o largefile
    表示创建的文件系统支持大文件或者多个文件,如果有这个选项,VxFS文件系统可以识别超过2GB大小的文件,也可以支持八百万以上的超多文件。如果不希望用大文件系统,可以使用-o nolargefile代替;
    c) -o bsize=n
    表示可以设置文件系统的最小块大小,默认是1024byte(1KB)。越大的block可以带来越好的读写性能,但是相应的,稳定性会受到影响。所以需要用户自己去权衡利弊了。
    d) -o logsize=n
    设置VxFS日志文件的大小,默认值与文件系统大小有关。大的日志文件需要更多的空间,降低了硬盘的有效利用,但是它也可以生成更多的检查点,如果硬盘出现错误,就可以恢复到离事故发生最近的地方,减少用户的数据损失。
    e) 实例:
    # vxfs –F VxFS –o large file /dev/vx/rdsk/TestDG/TestVol
因为创建文件系统是需要数据专家给用户分配空间的,所有需要使用裸设备文件。

2. 维护文件系统
    a) 检查文件系统移植性并使用日志记录信息:
    # fsck-F VxFS /dev/vx/rdsk/TestDG/TestVol
    检查文件系统的活也是属于数据专家的活了,代理可不会做这个的。所以,这里同样需要使用裸设备文件;
    b) 检查文件系统移植性但不要记录日志:
    # fsck-F VxFS -o full,nolog  /dev/vx/rdsk/TestDG/TestVol
    c) 并行检查多个文件系统:
    # fsck -F VxFS -o p /dev/vx/rdsk/TestDG/TestVol1 /dev/vx/rdsk/TestDG/TestVol2
    显然,这个检查也是需要记录日志的,如果不想记录日志,需要再加入” full,nolog” 参数;

    3. 挂载(mount)文件系统
    文件系统使用前必须经过挂载,就相当于操作系统给用户开了个帐户相似。挂载文件系统最常用的命令是:
    #  mount –F VxFS /dev/vx/dsk/TestDG/TestVol /mnt
    因为挂载文件系统相当于代理给用户开设帐户的过程,所有在这里需要使用块设备文件。除了最常用的方法,mount还支持一下其他常见选项:
    mount –r: 以只读方式挂载,如果用户只是想读出信息,那么这样可以增加文件系统安全性;
    mount –v:显示出已经挂载的文件系统;
    mount –p:显示文件系统挂载表;
    mount a: 把文件系统挂载表中所列的文件系统一起挂载,方便用户操作;

4. 卸载(umount)文件系统:
    卸载文件系统常见的命令是:
    #  umount –F VxFS /dev/vx/dsk/TestDG/TestVol  (注意这里是块设备文件)
    除此之外,还有几个特殊选项:
    umount –a:把系统挂载表的所有文件系统卸载;
    umount –o force: 强行卸载文件系统。

    5. 显示文件系统类型:
    # fstyp -v /dev/vx/dsk/TestDG/TestVol
    这个也是代理就能做的,使用块设备文件。

    6. 显示文件系统的使用情况,剩余空间:
    # df -F vxfs /mnt

    7. 创建文件系统并且直接挂载:
    # crfs -v vxfs -d /dev/vx/rdsk/TestDG/TestVol -m /mnt -A yes
    因为涉及到了创建文件系统,所以需要使用裸设备文件。

    8. 磁盘整理(重要)
    随着文件系统的使用,增删操作的增加,文件系统将不可避免的出现空间碎片,碎片不仅仅浪费文件系统的空间使用,它还会降低文件系统的性能,所以我们必须在必要的时候进行磁盘整理操作。

    碎片一般有两种:目录碎片(Directory fragmentation)和扩展碎片(Extent fragmentation),他们的区别和整理的目的是不同的:
    a) 目录碎片的整理能够把目录入口信息放在文件系统的开始位置,把文件的入口放在目录之后,将剩余空间集中在文件系统的中间,节省读写文件的速度。其具体名利是:
    #  fsadm -d -D /mnt
    b) 扩展碎片的整理能够将小文件放在一起;将大文件放在扩展区;将小的,经常需要访问的文件放在能被更快访问到的地方;将大的、不常用的文件放在文件系统的末尾,然后将剩余空间集中在文件系统的中间。其具体的命令是:
    # fsadm -e -E -s /mnt

注意:
    上述所使用的命令,并不是系统自带的命令,而是Storage Foundation给用户提供的,只是为了用户操作,所以才使用了与操作系统相同的命令,但是他们都存放在/opt/VRTS/bin/目录下面,如果用户使用上述命令确得不到所需信息,请检查是否使用了正确的命令”which command”;

    通过本文,用户可以了解到如何创建一个更有效的文件系统,使用文件系统,检查文件的系统以及如何进行碎片整理。了解了这些之后,就可以轻松的管理您自己的文件系统了。

阅读(1376) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~