目前,我在虚拟盒子中安装了一个 CentOS,它运行的是由 SAIO 安装的 openstack swift。
问题:数据不会存储在我挂载 nfs 的节点中。
比如我通过curl创建一个容器,输出返回201。但是mounted目录下没有数据。我参考文件/var/log/swift/proxy.error,它显示
Error Insufficient storage balabala...
有人能帮助弄清楚为什么会发生这种情况以及如何解决吗?
提前致谢!
当然,有一些关于挂载节点的日志。通过遵循 SAIO 指南,除了 ${USER} 之外,配置几乎保持不变。我使用“osddev”作为用户名和组名。
/mnt/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,retrans=2,sec=sys,clientaddr=192.168.0.2,local_lock=none,addr=192.168.0.1)
'mnt' 的文件夹结构如下:
/mnt/sdb1 /1 /node /sdb1 /accounts /containers /objects /tmp /2 /node /sdb2 /containers /tmp /3 /node /sdb3 /accounts /containers /objects /tmp /4 /node /sdb4 /accounts /容器 /对象 /tmp
挂载完成后,我尝试创建一个新容器,它返回 201 created,在目录 /mnt/sdb1 下有一个名为 '48ce59400b16f806fe2fee7e40e236as.db' 和另一个名为 '48ce59400b16f806fe2fee7e40e236as.db.pending' 的文件/2/node/sdb2/containers/291/6ab/48ce59400b16f806fe2fee7e40e236as 与/mnt/sdb1下的其他目录相同。
当我尝试创建一个新对象时,/mnt/sdb1/2/node/sdb1 下有“objects”目录。但在 /mnt/sdb1/1 或 /mnt/sdb1/3 等其他目录中,存在“对象”目录。
所以我检查了 /var/log/swift 下的错误日志。我发现在日志'proxy.error'和'storage2.error'中,有一些错误,我会在下面列出:
代理错误:
Jun 8 17:26:33 localhost proxy-server: Started child 4024 Jun 8 17:27:04 localhost proxy-server: STDERR: (4024) wsgi 在http://127.0.0.1:8080/上启动 6 月 8 日 17:28:22 本地主机代理服务器:STDERR:(4024)接受('127.0.0.1',57718)6 月 8 日 17:28:22 本地主机代理服务器: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)6 月 8 日 17:29:39 本地主机代理服务器:STDERR:(4024)接受(' 127.0.0.1',57721)6 月 8 日 17:29:41 本地主机代理服务器:错误存储不足 127.0.0.1:6020/sdb2(txn:tx45826ac5bc284bd8b15a6-0059391903)6 月 8 日 17:29:41 本地主机代理服务器:STDERR: 127.0.0.1 - - [08/Jun/2017 09:29:41]“PUT /v1/AUTH_test/annecontainer/annefile3 HTTP/1.1”201 254 1.474424(txn:tx45826ac5bc284bd8b15a6-0059391903)
storage2.error
Jun 8 17:26:31 localhost account-server: Started child 4004 Jun 8 17:26:31 localhost container-server: Started child 4007 Jun 8 17:26:32 localhost object-server: Started child 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 容器服务器:STDERR: (4007) wsgi 在 127.0.0.1:6021/ 6 月 8 日 17:29:39 localhost 对象服务器上启动:STDERR: (4016) 接受 ('127.0.0.1' , 43279) Jun 8 17:29:40 localhost object-server: STDERR: ERROR:root:Filesystem at 9 does not support xattr#012Traceback (last last call last):#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",第 78 行,在 set#012 中 return 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 文件“/usr/lib64/python2.7/site-packages/xattr-0.9.1-py2.7-linux- x86_64.egg/xattr/lib.py”,第 106 行,在 _fsetxattr#012 引发错误()#012 文件“/usr/lib64/python2.7/site-packages/xattr-0.9.1-py2.7-linux -x86_64.egg/xattr/lib.py", line 48, in error#012 raise IOError(errno, strerror)#012IOError: [Errno 95] Operation not supported 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" 507 263 1.300362 (txn: tx45826ac5bc284bd8b15a6-0059391903) Jun 8 17:29:41 localhost container-server: STDERR: 127.0.0.1 - - [08/Jun:49/2017 09:2 ] "PUT /sdb2/291/AUTH_test/annecontainer/annefile3 HTTP/1.1" 201 120 0.044787 (txn: tx45826ac5bc284bd8b15a6-0059391903)
到目前为止,我意识到 nfs 不支持 xattr。这会导致问题吗?
我想要做的是使用 swift-on-file 将数据存储在挂载目录中(通过 nfs),如 /mnt/sdb1/2。