Chyby vzdáleného I/O u NFS; Změna vlastníka kbelíku pro kbelíky s podporou FS může způsobit, že aplikace anebo uživatelé nebudou mít přístup k souborům NFS
摘要: Předchozí vlastník kbelíku není povolený nebo omezený. ObjectControllerException: Metoda updateObjectInternal není povolená pro předchozího vlastníka kbelíku.
本文适用于
本文不适用于
本文并非针对某种特定的产品。
本文并非包含所有产品版本。
症状
Změna provedená uživatelem na stránce vlastníka kbelíku v uživatelském rozhraní:
Tento problém se týká kbelíků s povoleným systémem NFS a změny vlastníka kbelíku uživatelským rozhraním. To může způsobit, že připojené aplikace nebo uživatelé ztratí přístup ke kbelíku v systému souborů Linux. I když změnu vrátíme zpět k původnímu vlastníkovi, přístup nebude možný, což povede k DU.
V tomto příkladu:
Vlastník kbelíku byl změněn na "sham2" pomocí uživatelského rozhraní. Kvůli omezení v systému ECS i po změně jména vlastníka kbelíku zpět na "sham1". Systém ECS nezmění vlastníka kbelíku zpět na "sham1" pomocí uživatelského rozhraní. To lze prozatím provést pouze pomocí rozhraní příkazového řádku pomocí rozhraní API s datovou částí pro resetowner příznak na true.
Způsoby, jak identifikovat problém, na počítači se systémem Linux požádejte uživatele, aby se dotkl souboru, například:
Tento problém se týká kbelíků s povoleným systémem NFS a změny vlastníka kbelíku uživatelským rozhraním. To může způsobit, že připojené aplikace nebo uživatelé ztratí přístup ke kbelíku v systému souborů Linux. I když změnu vrátíme zpět k původnímu vlastníkovi, přístup nebude možný, což povede k DU.
V tomto příkladu:
Vlastník kbelíku byl změněn na "sham2" pomocí uživatelského rozhraní. Kvůli omezení v systému ECS i po změně jména vlastníka kbelíku zpět na "sham1". Systém ECS nezmění vlastníka kbelíku zpět na "sham1" pomocí uživatelského rozhraní. To lze prozatím provést pouze pomocí rozhraní příkazového řádku pomocí rozhraní API s datovou částí pro resetowner příznak na true.
Způsoby, jak identifikovat problém, na počítači se systémem Linux požádejte uživatele, aby se dotkl souboru, například:
admin@node1~>touch file
touch: setting times of `file': Remote I/O error
se svc_log with the string "method updateObjectInternal "
Command:
# svc_log -a -sr dataheadsvc | grep "method updateObjectInternal"
Example:
admin@node1~>svc_log -a -sr dataheadsvc | grep "method updateObjectInternal" svc_log v1.0.22 (svc_tools v1.5.3) Started 2019-06-06 10:45:04 Running on nodes: <All nodes> Time range: 2019-06-05 10:45:04 - 2019-06-06 10:45:04 Filter string(s): <All messages> Show nodename(s): True Search reclaim logs (if any): False com.emc.storageos.data.object.exception.ObjectControllerException: method updateObjectInternal not allowed for previous bucket owner sham1 Caused by: com.emc.storageos.data.object.exception.ObjectControllerException: method updateObjectInternal not allowed for previous bucket owner sham1
原因
Vytvoření kbelíku s konkrétním uživatelem jako vlastníkem a následná změna vlastnictví kbelíku. A nakonec, udělení plného řízení původnímu vlastníkovi pomocí stránky ACLs selže s výjimkou protokolu ECS:
ObjectControllerException: method updateObjectInternal not allowed for previous bucket owner <ownerid> This is a known issue currently being evaluated by Dell EMC at this time.
解决方案
Alternativním řešením je změnit vlastníka kbelíku pomocí rozhraní API prostřednictvím rozhraní příkazového řádku s datovou částí tak, aby resetowner příznak byl nastaven na true.
1. Určete aktuálního vlastníka kbelíku.
2. Vytvořte jednoduchý soubor XML pomocí editoru vi. V následujícím příkladu se nazývá /tmp/bucket-owner.xml. Jedná se o dvoustupňový proces. Musíme jej dočasně nastavit na nového vlastníka sham2. Stejně jako v tomto příkladu níže před nastavením zpět na původního vlastníka sham1 potvrďte výstup:
. 7. Po provedení změny konfigurace by se stejná chyba již neměla zobrazovat
1. Určete aktuálního vlastníka kbelíku.
K vygenerování tokenu je vyžadováno heslo uživatele root uživatelského rozhraní. Například:
admin@ecsnode1:~> tok=$(curl -iks https://XX.XX.XX.XX:4443/login -u 'root:ChangeMe' | grep X-SDS-AUTH-TOKEN)
Ověřte aktuálního vlastníka kbelíku (ve vaší situaci nahraďte kbelík a obor názvů):
admin@node1:~> curl -s -k -X GET -H "$tok" https://XX.XX.XX.XX:4443/object/bucket/sham_bk_nfs/info?namespace=degreat_nfs | xmllint --format - | grep '<owner>' <owner>sham2</owner>
Tím se potvrdí, že parametr reset_previous_owners musí být nastaven na hodnotu true. Obnovený vlastník kbelíku je v uživatelském rozhraní, ale rozhraní API procházející rozhraním příkazového řádku potvrzuje, že systém ECS stále vidí vlastníka kbelíku jako "sham2".
2. Vytvořte jednoduchý soubor XML pomocí editoru vi. V následujícím příkladu se nazývá /tmp/bucket-owner.xml. Jedná se o dvoustupňový proces. Musíme jej dočasně nastavit na nového vlastníka sham2. Stejně jako v tomto příkladu níže před nastavením zpět na původního vlastníka sham1 potvrďte výstup:
admin@node1:~ # vi /tmp/bucket-owner.xml admin@ecsnode1:~ # cat /tmp/bucket-owner.xml <object_bucket_update_owner> <namespace>degreat_nfs</namespace> <new_owner>sham2</new_owner> <reset_previous_owners>true</reset_previous_owners> </object_bucket_update_owner> 3. Change the bucket owner to the temporary owner.
Syntaxe rozhraní API vyžadovaná ke změně vlastníka kbelíku na "sham2" prostřednictvím souboru XML je následující:
admin@ecsnode1:~> curl -v -k -X "POST" "https://xx.xx.xx.xx:4443/object/bucket/sham_bk_nfs/owner" -H "$tok" -H "Content-Type: application/xml" -H "ACCEPT:application/xml" -d @/tmp/bucket-owner.xml -v * Hostname was NOT found in DNS cache * Trying xx.xx.xx.xx... * Connected to xx.xx.xx.xx (xx.xx.xx.xx) port 4443 (#0) * successfully set certificate verify locations: * CAfile: none CApath: /etc/ssl/certs/ * SSLv3, TLS unknown, Certificate Status (22): * SSLv3, TLS handshake, Client hello (1): * SSLv3, TLS handshake, Server hello (2): * SSLv3, TLS handshake, Certificate (11): * SSLv3, TLS handshake, Server key exchange (12): * SSLv3, TLS handshake, Server finished (14): * SSLv3, TLS handshake, Client key exchange (16): * SSLv3, TLS change cipher, Client hello (1): * SSLv3, TLS handshake, Finished (20): * SSLv3, TLS change cipher, Client hello (1): * SSLv3, TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384 * Server certificate: * subject: CN=localhost * start date: 2019-03-25 09:53:41 GMT * expire date: 2029-03-22 09:53:41 GMT * issuer: CN=localhost * SSL certificate verify result: self signed certificate (18), continuing anyway. > POST /object/bucket/sham_bk_nfs/owner HTTP/1.1 > User-Agent: curl/7.37.0 > Host: xx.xx.xx.xx:4443 > X-SDS-AUTH-TOKEN: BAAcUy9KYlhxTlVYb2M0bnF3bTNscEsvSEdDeWhJPQMAjAQASHVybjpzdG9yYWdlb3M6VmlydHVhbERhdGFDZW50ZXJEYXRhOmJhOGQ3ZTkzLTMyMGYtNDNmNy05Y2FkLWM4YWQzMWFiMzY1MAIADTE1NTk3Mzk3OTA2MDgDAC51cm46VG9rZW46YjQ4NGNiZjEtNTkwNy00YWI3LTgzYTctM2Y3OGRhM2RiY2NiAgAC0A8= > Content-Type: application/xml > ACCEPT:application/xml > Content-Length: 179 > * upload completely sent off: 179 out of 179 bytes < HTTP/1.1 200 OK < Date: Thu, 06 Jun 2019 10:56:08 GMT < Content-Length: 0 < Connection: keep-alive < * Connection #0 to host xx.xx.xx.xx left intact 4. Edit the simple.xml file previously created in step 2 and this time insert original owner of sham1
admin@node1:~ # vi /tmp/bucket-owner.xml admin@ecsnode1:~ # cat /tmp/bucket-owner.xml <object_bucket_update_owner> <namespace>degreat_nfs</namespace> <new_owner>sham1</new_owner> <reset_previous_owners>true</reset_previous_owners> </object_bucket_update_owner> 5. Change the bucket owner back to the original owner The API syntax required to change the bucket owner back to "sham1" through the xml file is as follows:
admin@ecsnode1:~> curl -v -k -X "POST" "https://xx.xx.xx.xx:4443/object/bucket/sham_bk_nfs/owner" -H "$tok" -H "Content-Type: application/xml" -H "ACCEPT:application/xml" -d @/tmp/bucket-owner.xml -v * Hostname was NOT found in DNS cache * Trying xx.xx.xx.xx... * Connected to xx.xx.xx.xx (xx.xx.xx.xx) port 4443 (#0) * successfully set certificate verify locations: * CAfile: none CApath: /etc/ssl/certs/ * SSLv3, TLS unknown, Certificate Status (22): * SSLv3, TLS handshake, Client hello (1): * SSLv3, TLS handshake, Server hello (2): * SSLv3, TLS handshake, Certificate (11): * SSLv3, TLS handshake, Server key exchange (12): * SSLv3, TLS handshake, Server finished (14): * SSLv3, TLS handshake, Client key exchange (16): * SSLv3, TLS change cipher, Client hello (1): * SSLv3, TLS handshake, Finished (20): * SSLv3, TLS change cipher, Client hello (1): * SSLv3, TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384 * Server certificate: * subject: CN=localhost * start date: 2019-03-25 09:53:41 GMT * expire date: 2029-03-22 09:53:41 GMT * issuer: CN=localhost * SSL certificate verify result: self signed certificate (18), continuing anyway. > POST /object/bucket/sham_bk_nfs/owner HTTP/1.1 > User-Agent: curl/7.37.0 > Host: xx.xx.xx.xx:4443 > X-SDS-AUTH-TOKEN: BAAcUy9KYlhxTlVYb2M0bnF3bTNscEsvSEdDeWhJPQMAjAQASHVybjpzdG9yYWdlb3M6VmlydHVhbERhdGFDZW50ZXJEYXRhOmJhOGQ3ZTkzLTMyMGYtNDNmNy05Y2FkLWM4YWQzMWFiMzY1MAIADTE1NTk3Mzk3OTA2MDgDAC51cm46VG9rZW46YjQ4NGNiZjEtNTkwNy00YWI3LTgzYTctM2Y3OGRhM2RiY2NiAgAC0A8= > Content-Type: application/xml > ACCEPT:application/xml > Content-Length: 179 > * upload completely sent off: 179 out of 179 bytes < HTTP/1.1 200 OK < Date: Thu, 06 Jun 2019 10:56:08 GMT < Content-Length: 0 < Connection: keep-alive < * Connection #0 to host xx.xx.xx.xx left intact 6. Confirm the bucket owner change is reflected.
Potvrďte, že změna vlastníka kbelíku je nyní "sham1".
admin@ecsnode1:~> curl -s -k -X GET -H "$tok" https://XX.XX.XX.XX:4443/object/bucket/sham_bk_nfs/info?namespace=degreat_nfs | xmllint --format - | grep '<owner>' <owner>sham1</owner>
Po vrácení vlastníka kbelíku v rozhraní API ověřte, že hostitel má nyní přístup ke kbelíku v systému souborů Linux.
. 7. Po provedení změny konfigurace by se stejná chyba již neměla zobrazovat
svc_log -f "method updateObjectInternal not allowed" -start "20 hour ago" -sr all -sh -st hour svc_log v1.0.22 (svc_tools v1.6.8) Started 2020-01-23 09:28:17 Running on nodes: <All nodes> Time range: 2020-01-22 13:28:17 - 2020-01-23 09:28:17 Filter string(s): 'method updateObjectInternal not allowed' Show nodename(s): True Search reclaim logs (if any): False Count of message occurrences per hour: 2020-01-22 13:xx - 5066 2020-01-22 14:xx - 9580 2020-01-22 15:xx - 9574 2020-01-22 16:xx - 9580 2020-01-22 17:xx - 9570 2020-01-22 18:xx - 9576 2020-01-22 19:xx - 9564 2020-01-22 20:xx - 9576 2020-01-22 21:xx - 9576 2020-01-22 22:xx - 9572 2020-01-22 23:xx - 9564 2020-01-23 00:xx - 9586 2020-01-23 01:xx - 9574 2020-01-23 02:xx - 9572 2020-01-23 03:xx - 4564 2020-01-23 04:xx - 0 2020-01-23 05:xx - 0 2020-01-23 06:xx - 0 2020-01-23 07:xx - 0 2020-01-23 08:xx - 0 2020-01-23 09:xx - 0 Dell EMC is aware of this issue and are working on a fix in a future release.
其他信息
Související článek NFS KB:
- Jak vytvořit základní export NFS a připojit jej na klienta
- ECS: Chyba streamování protokolu funkce dataheadsvc: Odkaz na postup NFSv3 není podporován v požadavku ReadLinkRequest
- ECS, Připojení NFS selhalo s chybou „No such file or directory“ nebo „ERROR_OBJECT_NOT_FOUND“
- Chyby vzdáleného I/O u NFS; Změna vlastníka kbelíku pro kbelíky s podporou FS může způsobit, že aplikace/uživatelé nebudou mít přístup k souborům NFS
- Při zápisu NFS dojde po určitém množství dat k chybě I/O.
- Použití sdílení souborů NFS ze systému ECS s datovým úložištěm VMware NFS
- Vzorové postupy pro připojení exportů ECS NFS
- ECS, Jak připojit sdílenou složku NFS na klientovi Windows
- Po změně nastavení exportu souborů v uživatelském rozhraní se připojení NFS nezdaří
- Je obsah Oracle WebCenter (WCC) kompatibilní se systémem ECS?
Přihlaste se k odběru novinek o produktech.
K odběru aktualizací se můžete přihlásit postupem podle pokynů v článku znalostní databáze níže:
DELL EMC: Jak se přihlásit k odběru stránek produktů – podpora Dell?
受影响的产品
Elastic Cloud Storage产品
ECS Appliance, ECS Appliance Software with Encryption, ECS Appliance Software without Encryption, Elastic Cloud Storage文章属性
文章编号: 000055535
文章类型: Solution
上次修改时间: 29 7月 2026
版本: 5
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。