本地挂载测试
mount -t glusterfs 127.0.0.1:/gv1 /mnt
[[email protected] mnt]# df -h
Filesystem
Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
18G 817M 16G 5% /
tmpfs
491M
0 491M 0% /dev/shm
/dev/sda1
477M 28M 425M 7% /boot
/dev/sdb1
5.0G 33M 5.0G 1% /storage/brick1
127.0.0.1:/gv1
10G 65M 10G 1% /mnt
1、windows2012 R2挂载、添加NFS客户端
[[email protected] mnt]# ifconfig eth0|grep "inet addr" #gluster IP地址 inet addr:192.168.120.128 Bcast:192.168.120.255 Mask:255.255.255.0
2、cmd 下 mount 192.168.120.128:/gv1 Z:
成功挂载,打开我的点脑,你即可在你网络位置看到 Z:盘了
解释:gv1为共享的目录、Z为挂载的网络盘符
3、取消挂载:
直接在 我的电脑 里面鼠标点击取消映射网络驱动器 Z:
或者: win+R->cmd
输入: umount X:
(umount -a 取消所有网络驱动器)
4、修改windows对nfs分区只读属性
Windows NFS客户端使用mount命令挂载NFS服务之后,文件系统对Win只读,无法写入文件,无法新建文件夹,此时使用mount命令可以查看到如下状态:
可以看到UID=-2由于在存储设备上共享出来的NFS文件系统归属于root权限,并且无法修改该所属用户,而Windows通过UID=-2的用户去写,肯定写不进去。
解决办法就是让Win在挂载NFS的时候将UID和GID改成0即可:打开注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default,增加两项:AnonymousUid,AnonymousGid,如图:
重新启动计算机,重新mount即可。此时就能在win7下对nfs文件系统进行读写操作了,跟本地磁盘一样。
查看mount属性,如下:
mount命令在win下的具体用法如下:
打开网络磁盘、默认多了个.trashcan、这个文件默认linux是没有的、这是Gluster的回收站、这是3.7版本的功能
Trashcan
暂时保存删除的数据,可指定删除的时间段,避免误删文件
Trash translator for GlusterFS
在这里主要介绍一下trash translator的功能,Trash translator为从glusterfs卷里面删除的文件提供一个临时存放的地方,就是相当于为删除的文件提供一个回收站,可以帮助用户获取和恢复临时被删除的数据。每个块都会保留一个隐藏的目录.trash,它将会被用于存放被从各个块删除的文件。这个translator以后还会增强功能来支持被删除文件的恢复。
回收站的目录名应该是可配置的。trash translator也会被用于内部操作比如自卷的自修复以及再平衡。trash translator是设计来拦截unlink(文件删除),truncate(文件压缩),ftruncate(文件夹压缩),rmdir(目录删除)等操作,将目标文件在trash目录中做一份拷贝,然后在原文件上执行相应的操作。
在删除的操作过程中,trash translator将会拦截到unlink调用,然后检查是否和排除模式相匹配(eliminate pattern),如果要操作的文件和排除模式匹配,那么这个translator则继续向下执行unlink调用,直接删除文件,而不会把它保存到.trash目录下面。
然而,如果要操作的文件和排除模式不匹配,文件执行stat操作,成功之后,trash translator将会在.trash目录下面建立相同的路径作为文件的路径。
truncate和ftruncate操作是压缩或者扩大一个文件的大小到一个固定的值。唯一的区别就是在truncate操作下,我们提供文件路径名然而在ftruncate情况下我们使用文件描述符。因此,ftruncate可以处理已经打开的文件。
当trash translator拦截到一个truncate/ftruncate调用,一个新的文件将会在trash中建立,,原来文件的内容也通过使用readv和writev函数调用拷贝到新的文件中。一旦所有内容被拷贝晚,trash translator将会继续在原文件上执行truncate调用。