2017-06-07 2 views
0

Momentan habe ich ein CentOS in einer virtuellen Box mit openstack swift running, welches von SAIO installiert wird.Konnte NFS auf einem der Openstack-Swift-Storage-Knoten gemountet werden?

Frage: Daten würden nicht in dem Knoten gespeichert, den ich nfs mounte.

Zum Beispiel, ich erstelle einen Container nach curl, die Ausgabe gibt 201 zurück. Aber es gibt keine Daten in dem gemounteten Verzeichnis. Ich beziehe mich /var/log/swift/proxy.error Datei, und es zeigt

Error Insufficient storage balabala...

würde jemand Hilfe Figur, warum dies geschieht und wie man es beheben?

Vielen Dank im Voraus!

Sicher, es gibt einige Protokolle über den gemounteten Knoten. Wenn Sie dem SAIO-Handbuch folgen, bleiben die Konfigurationen fast identisch mit Ausnahme von $ {USER}. Ich benutze 'osddev' für den Benutzernamen und den Gruppennamen.

Und ich habe 4 Verzeichnisse unter/mnt/sdb1 namens 1, 2, 3 und 4 jeweils. I montiert nfs auf das Verzeichnis '2',

ich so montieren:

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

und die Ausgabe des Befehls 'Mount' ist wie

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,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.2,local_lock=none,addr=192.168.0.1)

Die Struktur des Ordners von 'mnt' ist wie folgt:

/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 /containers /objects /tmp

Nach der Montage habe ich versucht, einen neuen Container zu erstellen, und es gab 201 zurück, und es gab einen DB-Dateinamen '48ce59400b16f806fe2fee7e40e236as.db' und eine andere Datei mit dem Namen '48ce59400b16f806fe2fee7e40e236as.db.pending' unter dem Verzeichnis/mnt/sdb1/2/node/sdb2/containers/291/6ab/48ce59400b16f806fe2fee7e40e236as Das war das selbe wie andere directoies unter/mnt/sdb1.

Als ich versuchte, ein neues Objekt zu erstellen, gab es das Verzeichnis 'objects' unter/mnt/sdb1/2/node/sdb1. Aber in anderen Verzeichnissen wie/mnt/sdb1/1 oder/mnt/sdb1/3 existierte das Verzeichnis 'objects'.

Also habe ich das Fehlerprotokoll unter/var/log/swift ausgecheckt. Und ich fand, dass in logs 'proxy.error' und 'storage2.error', es gab einige Fehler, ich werde sie unten Liste:

proxy.error:

Jun 8 17:26:33 localhost proxy-server: Started child 4024 Jun 8 17:27:04 localhost proxy-server: STDERR: (4024) wsgi starting up on http://127.0.0.1:8080/ Jun 8 17:28:22 localhost proxy-server: STDERR: (4024) accepted ('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) accepted ('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" 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 starting up on 127.0.0.1:6020/ Jun 8 17:27:03 localhost account-server: STDERR: (4004) wsgi starting up on 127.0.0.1:6022/ Jun 8 17:27:03 localhost container-server: STDERR: (4007) wsgi starting up on 127.0.0.1:6021/ Jun 8 17:29:39 localhost object-server: STDERR: (4016) accepted ('127.0.0.1', 43279) Jun 8 17:29:40 localhost object-server: STDERR: ERROR:root:Filesystem at 9 does not support xattr#012Traceback (most recent call last):#012 File "/home/osddev/swift/swift/obj/diskfile.py", line 150, in write_metadata#012 metastr[:xattr_size])#012 File "/usr/lib64/python2.7/site-packages/xattr-0.9.1-py2.7-linux-x86_64.egg/xattr/init.py", line 185, in setxattr#012 return xattr(f).set(attr, value, options=options)#012 File "/usr/lib64/python2.7/site-packages/xattr-0.9.1-py2.7-linux-x86_64.egg/xattr/init.py", line 78, in 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", line 58, in _call#012 return fd_func(self.value, *args)#012 File "/usr/lib64/python2.7/site-packages/xattr-0.9.1-py2.7-linux-x86_64.egg/xattr/lib.py", line 106, in _fsetxattr#012 raise error()#012 File "/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) accepted ('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/2017 09:29:41] "PUT /sdb2/291/AUTH_test/annecontainer/annefile3 HTTP/1.1" 201 120 0.044787 (txn: tx45826ac5bc284bd8b15a6-0059391903)

Bisher erkannte ich, dass nfs xattr nicht unterstützt. Würde das das Problem verursachen?

Was ich tun möchte, ist Swift-in-Datei zu speichern Daten im bereitgestellten Verzeichnis (von NFS) wie/mnt/sdb1/2.

+0

können Sie die gesamte Protokollzeile mit dem Fehler einfügen? Swift ist agnostisch bezüglich der Art des Speichersystems, das Sie haben. BTW, nach welchen Daten suchst du? –

+0

@NelsonMarcos Ich aktualisiere meine Frage, bitte schau, ob du Freizeit hast :) – tommyjin

Antwort

0

Objekte werden als Binärdateien im Dateisystem mit Metadaten gespeichert, die in den erweiterten Attributen (xattrs) der Datei gespeichert sind. Dies erfordert, dass die zugrunde liegende Dateisystemauswahl für Objektserver xattrs für Dateien unterstützt. Einige Dateisysteme, wie zB ext3, haben Xatrs standardmäßig deaktiviert.

Quelle: https://docs.openstack.org/developer/swift/overview_architecture.html

Verwandte Themen