NFS可以挂载在openstack swift存储节点之一上吗?

时间:2017-06-07 12:06:21

标签: nfs openstack-swift xattr

目前,我在安装了openstack swift的虚拟机中安装了一个CentOS,由SAIO安装。

问题:数据不会存储在我挂载nfs的节点中。

例如,我通过curl创建一个容器,输出返回201.但是挂载目录中没有数据。我引用文件/var/log/swift/proxy.error,它显示

  

错误存储balabala不足......

有人会帮助解释为什么会发生这种情况以及如何解决这个问题吗?

提前致谢!

当然,有一些关于已安装节点的日志。 按照SAIO指南,除$ {USER}外,配置几乎保持不变。我使用' osddev'用户名和组名。

  / pnt / sdb1上的/ dev / sdb1类型xfs(rw,noatime,nodiratime,seclabel,attr2,nobarrier,inode64,logbufs = 8,noquota)

我在/ mnt / sdb1下有4个目录,分别命名为1,2,3和4。 我在目录' 2'

上安装了nfs

我这样坐着:

  

mount.nfs 192.168.0.1:/mnt/path/to/mount / mnt / sdb1 / 2

并输出命令' mount'就像

  

192.168.0.1:/mnt/path/to/mount on / mnt / sdb1 / 2 type nfs4(rw,relatime,vers = 4.0,rsize = 1048576,wsize = 1048576,namlen = ...,hard,proto = TCP,端口= 0,Timeo酒店= 600,重传= 2,仲= SYS,clientaddr = 192.168.0.2,local_lock =无,ADDR = 192.168.0.1)

' mnt'的文件夹结构是这样的:

  

的/ mnt / SDB1       / 1           /节点               / SDB1                   /账户               /容器                   /对象                   / tmp目录       / 2           /节点               / sdb2                   /容器                   / tmp目录       / 3           /节点               / sdb3                   /账户                   /容器                   /对象                   / tmp目录       / 4           /节点               / sdb4                   /账户                   /容器                   /对象                   的/ tmp

当挂载完成后,我尝试创建一个新容器,它返回201创建,并且有一个db文件名' 48ce59400b16f806fe2fee7e40e236as.db'另一个名为' 48ce59400b16f806fe2fee7e40e236as.db.pending'在目录/ mnt / sdb1 / 2 / node / sdb2 / containers / 291 / 6ab / 48ce59400b16f806fe2fee7e40e236as下,这与/ mnt / sdb1下的其他指南相同。

当我尝试创建一个新对象时,有一些'对象' / mnt / sdb1 / 2 / node / sdb1下的目录。但是在/ mnt / sdb1 / 1或/ mnt / sdb1 / 3等其他目录中,'对象'目录存在。

所以我检查了/ var / log / swift下的错误日志。 我发现在日志' proxy.error'和' storage2.error',有一些错误,我会在下面列出:

proxy.error:

  

Jun 8 17:26:33 localhost proxy-server:启动子4024   Jun 8 17:27:04 localhost proxy-server:STDERR:(4024)wsgi在http://127.0.0.1:8080/启动   Jun 8 17:28:22 localhost proxy-server:STDERR:(4024)已接受(' 127.0.0.1',57718)   Jun 8 17:28:22 localhost proxy-server:STDERR:127.0.0.1 - - [08 / Jun / 2017 09:28:22]" GET /auth/v1.0 HTTP / 1.1" 200 356 0.004022(txn:tx016fa30128e74197af806-00593918b6)   Jun 8 17:29:39 localhost proxy-server:STDERR:(4024)已接受(' 127.0.0.1',57721)   Jun 8 17:29:41 localhost proxy-server:ERROR Insufficient Storage 127.0.0.1:6020/sdb2(txn:tx45826ac5bc284bd8b15a6-0059391903)   Jun 8 17:29:41 localhost proxy-server:STDERR:127.0.0.1 - - [08 / Jun / 2017 09:29:41]" PUT / v1 / AUTH_test / annecontainer / annefile3 HTTP / 1.1&#34 ; 201 254 1.474424(txn:tx45826ac5bc284bd8b15a6-0059391903)

storage2.error

  

Jun 8 17:26:31 localhost account-server:启动子4004   Jun 8 17:26:31 localhost container-server:启动子4007   Jun 8 17:26:32 localhost object-server:启动子4016   Jun 8 17:27:03 localhost object-server:STDERR:(4016)wsgi在127.0.0.1:6020/启动   Jun 8 17:27:03 localhost account-server:STDERR:(4004)wsgi在127.0.0.1:6022/启动   Jun 8 17:27:03 localhost container-server:STDERR:(4007)wsgi在127.0.0.1:6021/启动   Jun 8 17:29:39 localhost object-server:STDERR:(4016)已接受(' 127.0.0.1',43279)   Jun 8 17:29:40 localhost object-server:STDERR:错误:root:9的文件系统不支持xattr#012Traceback(最近一次调用最后一次):#012 File" / home / osddev / swift / swift / obj / diskfile.py",第150行,在write_metadata中#012 metastr [:xattr_size])#012文件" /usr/lib64/python2.7/site-packages/xattr-0.9.1-py2。 7-linux-x86_64.egg / xattr / init .py",第185行,在setxattr#012中返回xattr(f).set(attr,value,options = options)#012文件" /usr/lib64/python2.7/site-packages/xattr-0.9.1-py2.7-linux-x86_64.egg/xattr/ init .py",line 78,在集合#012中返回self._call(_setxattr,_fsetxattr,name,value,0,options | self.options)#012 File" /usr/lib64/python2.7/site-packages/xattr-0.9 .1-py2.7-linux-x86_64.egg / xattr / init .py",第58行,在_call#012中返回fd_func(self.value,* args)#012文件& #34; /usr/lib64/python2.7/site-packages/xattr-0.9.1-py2.7-linux-x86_64.egg/xattr/lib.py" ;,第106行,在_fsetxattr#012 r aise error()#012 File" /usr/lib64/python2.7/site-packages/xattr-0.9.1-py2.7-linux-x86_64.egg/xattr/lib.py" ;, line 48,错误#012引发IOError(errno,strerror)#012IOError:[Errno 95]不支持操作   Jun 8 17:29:41 localhost container-server:STDERR:(4007)已接受(' 127.0.0.1',45775)   Jun 8 17:29:41 localhost object-server:STDERR:127.0.0.1 - - [08 / Jun / 2017 09:29:41]" PUT / sdb2 / 957 / AUTH_test / annecontainer / annefile3 HTTP / 1.1& #34; 507 263 1.300362(txn:tx45826ac5bc284bd8b15a6-0059391903)   Jun 8 17:29:41 localhost container-server:STDERR:127.0.0.1 - - [08 / Jun / 2017 09:29:41]" PUT / sdb2 / 291 / AUTH_test / annecontainer / annefile3 HTTP / 1.1& #34; 201 120 0.044787(txn:tx45826ac5bc284bd8b15a6-0059391903)

到目前为止,我意识到nfs不支持xattr。这会导致这个问题吗?

我想要做的是使用swift-on-file将数据存储在已安装目录(由nfs)中,例如/ mnt / sdb1 / 2。

1 个答案:

答案 0 :(得分:0)

对象作为二进制文件存储在文件系统中,元数据存储在文件的扩展属性(xattrs)中。这要求对象服务器的基础文件系统选择支持文件上的xattrs。某些文件系统(如ext3)默认关闭xattrs。

来源:https://docs.openstack.org/developer/swift/overview_architecture.html