原文:http://blog.bbzhh.com/index.php/archives/110.html

     

    在Windows Server 2012R2上使用Hyper-V黑了一个群晖使用
    硬件环境是HP Gen8,加到了10G内存,CPU依然是乞丐版,光驱位改为SSD,SATA1-4为 WD 4T * 4 红盘
    本来想硬盘直通给黑群晖使用,但是考虑到万一挂掉了数据不好恢复,外加硬盘休眠的问题一直无法很理想的解决,所以就有了现在的方案:
    hyper-v虚拟黑群晖,然后windows上把四块硬盘作带奇偶校验的存储资源池,然后通过NFS共享的方式给群晖加载使用,这样一来即保障了数据安全性,在windows上对于NFS文件夹也可以直接读写,方便管理,更重要的是再也不用纠结群晖到底是虚拟硬盘还是直通硬盘了。

    网上有很多群晖挂载NFS的例子,大多数都是在计划任务里新建一个任务,来mount nfs格式分区,但这个方法很不爽的一点是,比如video,在启用video套件时,这个文件夹是不允许rename、mount等操作的,显示资源正忙,所以脚本的方法也不是很完美,结合台湾省的一个群晖论坛上的提示,我有了以下的方案:原文参考

    1、ssh到群晖上,这个不用多说了,群晖得首先开启SSH服务,然后root用户的密码和初始化群晖时设置的密码一致;

    2、编写开机自启动脚本:

    
    
    vi /usr/syno/etc.defaults/rc.d/S99mount.sh

    我这里索性将volume1里的所有文件夹都移动到了windows机器上,请注意替换实际的ip地址,具体内容为:

    /bin/mount -t nfs -o hard 10.20.55.1:/music /volume1/music
    /bin/mount -t nfs -o hard 10.20.55.1:/homes /volume1/homes
    /bin/mount -t nfs -o hard 10.20.55.1:/photo /volume1/photo
    /bin/mount -t nfs -o hard 10.20.55.1:/video /volume1/video
    /bin/mount -t nfs -o hard 10.20.55.1:/svn /volume1/svn
    /bin/mount -t nfs -o hard 10.20.55.1:/work /volume1/work
    /bin/mount -t nfs -o hard 10.20.55.1:/document /volume1/document
    /bin/mount -t nfs -o hard 10.20.55.1:/other /volume1/other

    3、将开机脚本设置为全员可以执行

    chmod a+x /usr/syno/etc.defaults/rc.d/S99mount.sh

    4、在windows上设置nfs共享,这里我使用haneWIN NFS Server 2.1.16版本,虽然windows原生支持NFS,但是windows server 2012r2的nfs v3版本不支持utf-8编码,v4版本虽然支持,但是群晖作为客户端只有nfs v3,具体映射路径有:

    D:\nfs\docker -name:docker 10.20.55.10
    D:\nfs\music -name:music 10.20.55.10
    D:\nfs\homes -name:homes 10.20.55.10
    D:\nfs\photo -name:photo 10.20.55.10
    D:\nfs\video -name:video 10.20.55.10
    D:\nfs\svn -name:svn 10.20.55.10

    5.勾选haneWIN NFS Server中的Server标签下的“UTF-8 character set”
    6.点击haneWIN NFS Server中Exports标签下的“Restart Server”
    7.为了保险,我把原来群晖/volume1下的所有文件夹做了一个备份:

    mkdir /volume1/ori_bak
    cd /volume1/ori_bak
    mkdir @S2S @autoupdate @docker @tmp docker music @SynoDrive @cloudstation @download homes photo video @appstore @database @eaDir svn
    
    
    cp -r  /volume1/@S2S/*  /volume1/ori_bak/@S2S/
    cp -r  /volume1/@autoupdate/*  /volume1/ori_bak/@autoupdate/
    cp -r  /volume1/@docker/*  /volume1/ori_bak/@docker/
    cp -r  /volume1/@tmp/*  /volume1/ori_bak/@tmp/
    cp -r  /volume1/docker/*  /volume1/ori_bak/docker/
    cp -r  /volume1/music/*  /volume1/ori_bak/music/
    cp -r  /volume1/@SynoDrive/*  /volume1/ori_bak/@SynoDrive/
    cp -r  /volume1/@cloudstation/*  /volume1/ori_bak/@cloudstation/
    cp -r  /volume1/@download/*  /volume1/ori_bak/@download/
    cp -r  /volume1/homes/*  /volume1/ori_bak/homes/
    cp -r  /volume1/photo/*  /volume1/ori_bak/photo/
    cp -r  /volume1/video/*  /volume1/ori_bak/video/
    cp -r  /volume1/@appstore/*  /volume1/ori_bak/@appstore/
    cp -r  /volume1/@database/*  /volume1/ori_bak/@database/
    cp -r  /volume1/@eaDir/*  /volume1/ori_bak/@eaDir/
    cp -r  /volume1/svn/*  /volume1/ori_bak/svn/

    8、重启群晖,再次ssh到群晖,到这一步其实已经ok了,然后我们要把备份的内容给还原到nfs对应的文件夹中:

    cp -r /volume1/ori_bak/docker/* /volume1/docker/
    cp -r /volume1/ori_bak/music/* /volume1/music/
    cp -r /volume1/ori_bak/homes/* /volume1/homes/
    cp -r /volume1/ori_bak/photo/* /volume1/photo/
    cp -r /volume1/ori_bak/video/* /volume1/video/
    cp -r /volume1/ori_bak/svn/* /volume1/svn/

    9.大功告成,再次重启,验证