在linux下使用nfs及软链接解决图片文件共享问题

    由于在门户社区中,诸如图片、下载软件这样的资源都较大,且在下载过程中,对带宽资源的占用也较大,因此为不影响正常业务应用,一般情况下都是将图片等资源部署到一台单独的服务器上以分配单独的带宽(在同一台服务器上也将这些资源存放在磁盘空间较大的地方),此种情况下图片等资源与应用不一定在同一台服务器上,即使在同一台服务器上也不一定部署在同一目录下。方案如下:

1、 图片等资源部署在单独的另外一台服务器上

    此种模式可以通过linux的nfs来把完成远程文件mount为本地的文件目录(类似于windows的网络共享),步骤如下:

    下面以将192.168.1.199(NFS服务器端)上的目录/liang mount到192.168.1.202(NFS客户端)上为例,说明一下远程mount的实现

1) NFS服务端(192.168.1.199)执行如下操作

  • 在NFS服务端(192.168.1.199)修改/etc/exports,内容如下
         /liang 192.168.1.*(rw)

    格式如下:directory machine1(option11,option12)

  • 在NFS服务器端启动NFS:

    /etc/rc.d/init.d/portmap start

   /etc/rc.d/init.d/nfs start

  • exportfs命令:

    在启动了NFS之后又修改了/etc/exports后可以用exportfs命令来使改动立刻生效,命令格式如下:

    exportfs [-aruv]

      -a :全部mount或者unmount /etc/exports中的内容

      -r :重新mount /etc/exports中分享出来的目录

      -u :umount 目录

      -v :在 export 的时候,将详细的信息输出到屏幕上。

2) 在NFS客户端(192.168.1.202)执行如下操作

  • 建立本地mount点目录

    mkdir /liang

  • mount远端目录到本地目录

    mount 192.168.1.199:/liang /liang

  • 修改/etc/fstab以在系统重启时候自动mount:
     # device       mountpoint     fs-type     options      dump fsckorder
     192.168.1.199:/liang  /liang    nfs          rw            0    0
  • showmout命令

    -e :显示指定的NFS SERVER上export出来的目录。

    -a :是用来显示已经mount上本机nfs目录的cline机器,一般在NFS SERVER上使用

2、 图片等资源与应用部署在同一台服务器上,但资源目录与应用目录不在一处

    此种情况,采用linux的软链接把图片等资源链接链接到应用的目录下。

        ln  -s /image /www/newwap/wap/image

    由于安全上的考虑,tomcat及jboss缺省情况下都不允许访问软链接的文件,改动如下:

    在conf/server.xml中或conf/Catalina/localhost(根据虚拟主机配置情况做相应改变)下的context中增加如下内容:

        <Context path="" docBase="/www/newwap/wap"  allowLinking="true">

                <Resources className="org.apache.naming.resources.FileDirContext"

                         allowLinking="true"/>

                <Logger className="org.apache.catalina.logger.FileLogger"/>

        </Context>

3、参考资料

    http://nfs.sourceforge.net/nfs-howto/ar01s04.html


站内标签:,,,,,

1 Comment so far

  1. goodhawk on 09月 29th, 2008

    第2个方法我也尝试在Oracle ERP 商务套件使用, 但是上面挂得实在是太复杂了, 研究了一下, 也没有开启出来,:-) good solution !

Leave a reply