Nextcloudの「トランザクションファイルロックが設定されていません」という問題を修正する

Nextcloudでトランザクションファイルロックが設定されていない、または無効になっているという警告が表示された場合、同時書き込みや転送の中断に対するファイル操作の保護が不十分になる可能性があります。通常の解決策は、RedisやValkeyなどのサポートされているキーバリューストアをロック用に構成することです。まずNextcloudのインストール方法を確認し、次にキャッシュサービスとNextcloudを一緒に構成してください。Redisだけをインストールしても警告は解消されません。

Nextcloud の現在の管理マニュアルには、トランザクション ロックはデフォルトでデータベースを使用すると記載されています。データベース バックエンドは機能しますが、データベースの負荷が増加します。Redis または Valkey は、専用のロック バックエンドを提供できます。警告文は Nextcloud のリリースによって異なります。現在のドキュメントには、「トランザクション ファイル ロックが無効になっているため、競合状態の問題が発生する可能性があります」と記載されています。別のメモリ キャッシュの警告は、同じ問題ではありません。公式のトランザクション ファイル ロック ガイドと管理ページの警告リファレンスを参照してください。

サーバーを変更する前に

これらの手順は、Nextcloud ホストを管理していることを前提としています。以下のコマンドは、通常のパッケージインストールが行われた Debian または Ubuntu を使用しています。パッケージ名、サービス名、PHP バージョン、および構成パスは、他の Linux ディストリビューションでは異なります。Nextcloud AIO、Docker、Snap、TrueNAS、またはホスティングプロバイダーのイメージを使用している場合は、サービスのインストールと再起動については、それぞれのデプロイメントの手順に従ってください。ホストに PHP パッケージをインストールしても、コンテナまたはアプライアンス内の PHP 環境は変更されない場合があります。

  • Nextcloud のウェブ ルートとそのアクティブなものを見つけますconfig/config.php。
  • そのファイルを編集する前に、必ず保護されたバックアップを作成してください。データベースの認証情報やその他の機密情報が含まれている可能性があります。
  • Nextcloudが単一のWebサーバーを使用するのか、複数のWebサーバーを使用するのかを確認してください。マルチノード構成の場合、すべてのNextcloudノードからアクセス可能な、共有のRedis/Valkeyサーバーまたはクラスターが1つ必要です。
  • ユーザーが中断のないファイルアップロードに依存している場合は、短いメンテナンス期間を計画してください。

ステップ1:警告とインストールタイプを確認する

管理者としてサインインし、[管理設定] を開いて、セキュリティと設定の警告の概要を確認します。正確なメッセージを記録します。ページにメモリ キャッシュが設定されていないとだけ表示される場合は、別のチェックが必要です。必要に応じて APCu などのローカル キャッシュを設定しますが、トランザクション ロックが提供されるとは想定しないでください。Nextcloud のドキュメントには、キャッシュ設定は明示的に有効にする必要があると記載されていますconfig.php。

従来のLinuxインストールでは、シェルを使用してデプロイパスを特定し、共有ターミナルログに機密情報を出力せずに構成ファイルを検査します。たとえば、サーバーから次のようにします。

cd /var/www/nextcloud
ls -l config/config.php

実際のパスに置き換えてください/var/www/nextcloud。コンテナの場合は、実行中のインスタンスが使用しないホスト側のファイルを編集するのではなく、コンテナとそのマウントされた構成を指定してください。

ステップ2:キーバリューストアをインストールして起動する

DebianまたはUbuntuの場合、従来のRedisバックエンドは通常、RedisサービスとPHP Redis拡張機能を使用します。Webサーバーで使用されているPHPのバージョンに一致するパッケージをインストールしてください。

sudo apt update
sudo apt install redis-server php-redis
sudo systemctl enable --now redis-server
sudo systemctl status redis-server

ステータス出力には、サービスがアクティブであることが報告されているはずです。Nextcloud をホストする PHP ランタイムが Redis 拡張機能をロードできることを確認してください。標準インストールでは、php -m | grep -i redisCLI で簡単に確認できますが、CLI PHP と Web PHP では異なるバージョンや設定ファイルを使用する場合があります。Web ランタイムにモジュールが存在しない場合は、対応するパッケージをインストールまたは有効化し、PHP-FPM または Web サーバーを再起動してください。

Nextcloud 34.0.2以降では、KeyValueCacheRedis互換ストア用のバックエンドがバンドルされています。PHP Redis拡張機能は不要です。ホスティング環境でPHPモジュールをインストールできない場合に便利ですが、RedisまたはValkeyサービスの実行は必要です。最新のNextcloudメモリキャッシュガイドには、両方の方法が記載されています。両方を追加するのではなく、以下のいずれかのバックエンド構成を選択してください。

ステップ3:Nextcloudでロックを設定する

アクティブな設定を編集しconfig/config.php、選択したエントリを既存の$CONFIG配列に追加します。PHP構文とカンマはそのまま保持してください。2つ目の設定配列を作成したり、キーを重複させたりしないでください。変更が必要な理由が理解できない限り、既存のキャッシュ設定はそのままにしてください。

オプションA:PHP Redis拡張機能を使用したRedis

このオプションは、Web PHPランタイムにサポートされているphpredis拡張機能がインストールされている場合に使用します。ポート6379でリッスンしているローカルRedisサーバーは、次のような構成を使用できます。

'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
    'host' => '127.0.0.1',
    'port' => 6379,
    'timeout' => 0.0,
],

Redisで認証が必要な場合は、正しいパスワードを設定しconfig.php、ファイルのアクセス権限を保護してください。Redisを外部に公開しないでください。ローカルホストまたは保護されたプライベートネットワークにバインドし、必要に応じてUnixソケットを使用してください。

オプションB:RedisまたはValkeyを使用したKeyValueCache

Nextcloudのバージョンがバンドルされているプロバイダをサポートしており、PHP Redis拡張機能をインストールしたくない場合は、このオプションを使用してください。ポート6379でリッスンするローカルサービスの場合、最小限の例は次のとおりです。

'memcache.locking' => '\OC\Memcache\KeyValueCache',
'memcache.kvstore' => [
    'server' => [
        'host' => '127.0.0.1',
        'port' => 6379,
    ],
],

サービスで認証、TLS、ソケット、Sentinel、クラスタ設定を使用する場合は、ドキュメントに記載されている設定を追加してください。サンプルから認証情報をコピーしないでください。詳細なパラメータとサポートされているトポロジについては、公式のキャッシュ構成リファレンスを参照してください。

ステップ4:接続とマルチサーバー設定を確認する

Nextcloud は、サービスと同じホスト、ポート、ソケット、および認証情報を使用して、設定されたキャッシュ サーバーにアクセスできる必要があります。よくある間違いは、localhostRedis が 1 つの別のホストでのみ実行されているにもかかわらず、各 Nextcloud Web ノードで設定を行うことです。マルチ サーバー展開では、すべての Web ノードが同じ Redis サーバーまたはクラスタを使用するように構成してください。Nextcloud ノードへのネットワーク アクセスを制限し、適切な認証とファイアウォール ルールを使用して Redis を保護してください。

Unixソケットの場合、PHP/Webサーバーアカウントがソケットの読み書き権限を持っていることを確認してください。権限やグループの変更はオペレーティングシステムによって異なるため、ワールド書き込みアクセスなどの広範な権限を適用するのではなく、Redis/Valkeyおよび配布元のドキュメントに従ってください。接続拒否、認証エラー、またはソケット権限エラーが発生すると、設定キーが存在する場合でも、Nextcloudがロックプロバイダを使用できなくなる可能性があります。

ステップ5:適切なサービスを再起動する

設定を保存した後、Redis の設定が変更されている場合は Redis サービスを再起動し、次に Nextcloud をホストする PHP ランタイムを再起動してください。たとえば、Apache のインストールでは Apache の再起動が必要になる場合があり、PHP-FPM のインストールでは対応する PHP-FPM サービスの再起動が必要になります。一部のディストリビューションでは、サービス名に PHP のバージョン番号が含まれています。コンテナを使用している場合は、デプロイメントでサポートされている方法を使用して、関連するサービスを再作成または再起動してください。本番サーバーで無関係なサービスを安易に再起動することは避けてください。

Nextcloud が設定エラーまたは構文エラーを返す場合は、バックアップを復元し、カンマの欠落、引用符の不一致、重複キー、または間違った編集がないか確認してくださいconfig.php。PHP の配列設定は、既存の設定構造内に保持する必要があります。

ステップ6:構成を確認し、ファイル操作をテストする

管理者概要を更新し、トランザクションファイルロックの警告が消えているかどうかを確認してください。ローカルキャッシュを設定しているにもかかわらずメモリキャッシュの警告が表示される場合は、別途確認してください。Nextcloudは、多くのシングルサーバー構成においてローカルキャッシュとしてAPCuを推奨しており、ロックと分散キャッシュはRedisが担当します。特にマルチサーバー構成では、Redisをデフォルトでローカルキャッシュとして追加しないでください。

Nextcloudのコマンドラインツールを使用して、有効なロック設定を確認することもできます。WeboccサーバーアカウントとしてNextcloudディレクトリから実行してください。Debian/Ubuntuでは、そのアカウントは通常次のようになりますwww-data。

sudo -u www-data php occ config:system:get memcache.locking

値は、選択したバックエンド(例:または)と一致する必要があります\OC\Memcache\Redis。\OC\Memcache\KeyValueCacheコマンドが設定を見つけられない場合は、パス、実行ユーザー、およびアクティブな構成ファイルを確認してください。管理コマンドの実行方法については、公式のOCCガイドを参照してください。

最後に、小さなテストファイルをアップロードし、名前を変更してダウンロードし、デスクトップまたはモバイルクライアントが変更を同期できることを確認します。これらのチェックでは、すべての同時ワークロードをシミュレートするわけではありませんが、変更後も通常のファイル操作が正常に機能することを確認します。ビジー状態のサーバーやクラスタ化されたサーバーの場合は、通常の使用中に Nextcloud ログと Redis/Valkey の可用性を監視します。警告が解消されない場合は、オプション A を使用する際に Web PHP ランタイムに拡張子が付いていること、キャッシュ ホストにアクセス可能であること、認証情報とソケットの権限が正しいこと、すべてのノードが同じバックエンドを共有していることを確認してください。

トランザクションファイルロックの機能と非機能

トランザクションロックは、操作が重複した際にファイル破損を防ぎ、中断されたトランザクションを処理し、共有ファイルや外部ストレージに関わる変更を調整するのに役立ちます。ただし、ドキュメントを予約して一人だけが編集できるようにしたり、他の編集者を表示したり、同時編集をマージしたりする機能はありません。この警告はサーバー構成の問題として扱い、バックエンドの設定が完了したら、通常のアップロードと同期をテストしてください。共同編集を行うには、ファイルロックに頼るのではなく、共同編集用に設計されたアプリケーションを使用してください。

コメントを残す

ownCloud oCISでユーザーのストレージクォータを設定する方法

ownCloud oCISでユーザーのストレージクォータを設定する方法

ownCloud Infinite Scaleユーザーの個人スペースのクォータを設定する方法、プロジェクトスペースやグローバル制限と区別する方法、そして役割ごとに新規ユーザーにデフォルト値を割り当てる方法を学びましょう。

BigBlueButton FreeSWITCH SIP登録タイムアウトの修正:実践的な診断ガイド

BigBlueButton FreeSWITCH SIP登録タイムアウトの修正:実践的な診断ガイド

BigBlueButton FreeSWITCHのSIP登録タイムアウトを診断するには、サービスの状態、SIPおよびESLリスナー、NATアドレス、ファイアウォールルール、ログを確認します。

ownCloudモバイルアプリの「接続拒否」エラーを修正する方法

ownCloudモバイルアプリの「接続拒否」エラーを修正する方法

ownCloudモバイルアプリの接続拒否エラーを修正するには、サーバーURL、HTTPSポート、Webサーバー、ファイアウォール、プロキシ、TLS、および信頼済みドメインを確認してください。

自己ホスト型Matrixサーバーでのユーザー登録を制限する方法

自己ホスト型Matrixサーバーでのユーザー登録を制限する方法

Synapse 上で新しい Matrix アカウントを制御する方法を、公開登録の無効化から使用制限付きトークンの発行まで、設定例とチェック項目を含めて比較します。

Fix the ownCloud Blank Page / White Screen of Death: Choose the Right Recovery Path

Fix the ownCloud Blank Page / White Screen of Death: Choose the Right Recovery Path

Fix an ownCloud blank page by separating browser, PHP, app, permissions, upgrade, and proxy failures, then choose the least disruptive recovery path.

Zimbraの「Nginxプロキシサービスが停止しました」エラーを修正する方法

Zimbraの「Nginxプロキシサービスが停止しました」エラーを修正する方法

Zimbraの停止したNGINXプロキシを診断し、適切なログを読み取り、安全に再起動し、設定の欠落、無効なポート、証明書、および上流の障害に対する的を絞った修正を確認します。

メールフローを中断せずにZimbra AmavisがCPUを100%消費する問題を修正する

メールフローを中断せずにZimbra AmavisがCPUを100%消費する問題を修正する

危険な変更を加える前に、キュー、ログ、SpamAssassin、ClamAV、および回復の兆候を確認することで、Zimbra AmavisがCPU使用率100%になっている場合の診断と修復方法を学びましょう。

iPhoneでZimbra ActiveSync接続エラーを修正する

iPhoneでZimbra ActiveSync接続エラーを修正する

アカウントの詳細、認証情報、証明書、ネットワークパス、サーバーポリシーを確認し、安全な代替手段を比較することで、iPhone 上の Zimbra ActiveSync エラーのトラブルシューティングを行います。

ownCloud Infinite ScaleとNextcloud 28の比較:パフォーマンスとRAM使用量について解説

ownCloud Infinite ScaleとNextcloud 28の比較:パフォーマンスとRAM使用量について解説

ownCloud Infinite ScaleとNextcloud 28を、アーキテクチャ、パフォーマンス動作、RAM要件、キャッシング、スケーリング、および実際の導入におけるトレードオフの観点から比較します。

Nextcloudの「トランザクションファイルロックが設定されていません」という問題を修正する

Nextcloudの「トランザクションファイルロックが設定されていません」という問題を修正する

Nextcloudのトランザクションファイルロックに関する警告を修正するには、デプロイメントを確認し、RedisまたはKeyValueCacheを設定し、適切なサービスを再起動し、ファイル操作を検証してください。