Windows挂载Gluster复制卷

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows挂载Gluster复制卷相关的知识,希望对你有一定的参考价值。



本地挂载测试 mount
-t glusterfs 127.0.0.1:/gv1 /mnt [root@gluster1 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客户端

[root@gluster1 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调用。

保存在trash目录中的文件都是有时间戳的,为了保持版本,以防同一个文件被一次又一次的执行truncated/deleted操作。
Volume Options(选项) 

gluster volume set <VOLNAME> features.trash <on / off>

此命令可用于启用卷中的Trash translator,如果设置为on,则在卷启动命令期间,将在卷内的每个brick块中创建.trashcan目录。默认情况下,translator在卷启动期间加载,但仍然不起作用。在此选项的帮助下禁用垃圾桶将不会从卷中删除垃圾邮件目录或甚至其内容。

gluster volume set <VOLNAME> features.trash-dir <name>

此命令用于将垃圾目录重新配置为用户指定的名称。参数是有效的目录名称。目录将在这个名字下面的每个brick内创建。如果用户没有指定,translator将创建默认名称为“.trashcan”的垃圾桶目录。只有当Trash translator开启时才可使用。

 

使用样例给现有卷启用trashcan
[root@gluster1 /]# gluster volume info
 
Volume Name: gv1
Type: Distribute
Volume ID: 58bf037f-5b56-4cf6-8dab-9e9944800b61
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: gluster1:/storage/brick1
Brick2: mystorage2:/storage/brick1
Options Reconfigured:
features.trash: on
performance.readdir-ahead: on

[root@gluster1 /]# gluster volume set gv1 features.trash on
volume set: success

进入到挂载目录进行删除操作
[root@gluster1 /]# cd /mnt/
[root@gluster1 mnt]# ls
aa  bb  cc  ddd
[root@gluster1 mnt]# rm -rf cc

查看目录发现有带时间戳的文件
[root@gluster1 mnt]# ls -la
total 12
drwxr-xr-x   4 root root 4096 May 21 06:03 .
dr-xr-xr-x. 23 root root 4096 May 20 17:23 ..
-rwxr-xr-x   1 root root    0 May 20 00:36 aa
-rwxr-xr-x   1 root root    0 May 20 00:36 bb
-rwxr-xr-x   1 root root    0 May 20 00:36 ddd
drwsr-sr-x   3 root root 4096 May 20 23:22 .trashcan
[root@gluster1 mnt]# cd .trashcan/
[root@gluster1 .trashcan]# ls
cc_2017-05-20_152214  internal_op

 


 

 

以上是关于Windows挂载Gluster复制卷的主要内容,如果未能解决你的问题,请参考以下文章

基于Gluster分布式实现docker存储卷

如何在 kubernetes 中使用 windows 容器挂载卷?

如何使用 docker compose 卷挂载 windows 文件夹?

GlusterFS分布式文件系统的卷类型及配置详解

docker 挂载卷时报错

windows挂载EFI分区