Nextcloud

Nextcloud 19 における改善ポイント – ファイルスキャン速度の向上

Nextcloud は約半年に 1 回のペースで定期的にメジャーバージョンアップが行われており、機能追加が活発に行われております。
バージョンアップを重ねるごとに機能は洗練され、オンラインストレージの基本機能の実装は落ち着いてきましたが、継続して機能の追加や改善が行われています。

2020 年 6 月にリリースされた最新の Nextcloud 19 では、Nextcloud の中で管理しているファイルのスキャン速度の改善が図られております (Nextcloud 社公式ブログによると最大で2.5倍の速度向上)。

今回は、Nextcloud 19 でファイルスキャン速度がどれほど向上しているのか、Nextcloud 18 と比較して検証を行ってみました。

■検証方法、条件

【検証①】Nextcloud データディレクトリ内のファイルへのスキャン

●比較対象の Nextcloud バージョン

  • Nextcloud 18.0.6
# sudo -u nginx php /var/www/html/nextcloud/occ status
 - installed: true
 - version: 18.0.6.0
 - versionstring: 18.0.6
 - edition:
  • Nextcloud 19.0.1
# sudo -u nginx php /var/www/html/nextcloud/occ status
 - installed: true
 - version: 19.0.1.1
 - versionstring: 19.0.1
 - edition:

●ファイル構成

以下のようなパス構成となります。1,000個のファイルが入っているフォルダーが100個、計100,000個のファイルの構成となります

 テストフォルダ
    |
    +- test-folder-1
    |  |
    |  +- test-1.file
    |  +- test-2.file
    |  ・
    |  ・
    |  +- test-1000.file
    +- test-folder-2
    |  |
    |  +- test-1.file
    |  +- test-2.file
    |  ・
    |  ・
    |  +- test-1000.file
    ・
    ・
    +- test-folder-100

●その他

その他の構成条件は Nextcloud 19 / 18 とも全く同じです。

項目内容
PHPPHP 7.3
データベースMariaDB 10.3
基本構成データベースなどすべてのミドルウェアが1つのサーバに同居

●検証方法

上に示したファイル構成のフォルダーに対して occ files:scan コマンドを実施し、スキャン時間を測定します。3回測定して平均を求めます。

sudo -u nginx php /var/www/html/nextcloud/occ files:scan --path=/testuser/files/テストフォルダ

●検証結果

Nextcloudバージョンスキャン時間平均
Nextcloud 18.0.65 分 31 秒5 分 39 秒
5 分 51 秒
5 分 33 秒
Nextcloud 19.0.12 分 47 秒2 分 51 秒
2 分 52 秒
2 分 52 秒

ファイルスキャン速度が約 2 倍程度に改善されているのが確認できました。

【検証②】外部ストレージ連携した SMB ファイルサーバ内のファイルへのスキャン

●比較対象の Nextcloud バージョン

  • Nextcloud 18.0.6
# sudo -u nginx php /var/www/html/nextcloud/occ status
 - installed: true
 - version: 18.0.6.0
 - versionstring: 18.0.6
 - edition:
  • Nextcloud 19.0.1
# sudo -u nginx php /var/www/html/nextcloud/occ status
 - installed: true
 - version: 19.0.1.1
 - versionstring: 19.0.1
 - edition:

●ファイル構成

以下のようなパス構成となります。1,000個のファイルが入っているフォルダーが100個、計100,000個のファイルの構成となります

 テストフォルダ
    |
    +- test-folder-1
    |  |
    |  +- test-1.file
    |  +- test-2.file
    |  ・
    |  ・
    |  +- test-1000.file
    +- test-folder-2
    |  |
    |  +- test-1.file
    |  +- test-2.file
    |  ・
    |  ・
    |  +- test-1000.file
    ・
    ・
    +- test-folder-100

●その他

その他の構成条件は Nextcloud 19 / 18 とも全く同じです。
環境準備の都合上、AWS EC2 (c5.large) + EBS (SSD) の環境で検証しています。

項目内容
PHPPHP 7.3
データベースMariaDB 10.4
基本構成データベースなどすべてのミドルウェアが1つのサーバに同居
連携するSMBファイルサーバWindows Server 2016 Datacenter
※Active Directory 同居

●検証方法

上に示したファイル構成のフォルダーに対して occ files:scan コマンドを実施し、スキャン時間を測定します。3回測定して平均を求めます。

sudo -u nginx php /var/www/html/nextcloud/occ files:scan --path=/testuser/files/テストフォルダ

●検証結果

Nextcloudバージョンスキャン時間平均
Nextcloud 18.0.64 分 58 秒5 分 08 秒
5 分 06 秒
5 分 20 秒
Nextcloud 19.0.13 分 29 秒3 分 33 秒
3 分 29 秒
3 分 42 秒

ファイルスキャン速度が約 1.4 倍程度に改善されているのが確認できました。
検証①より改善度合いは落ちますが、Nextcloud サーバ~ SMB ファイルサーバ間の通信のオーバーヘッドを考慮すると改善できているといえます。

このように、Nextcloud のバージョンアップにより、目に見えないパフォーマンス改善も行われていることがわかります。

Nextcloud のアップデートでは、これ以外にもセキュリティ観点やバグフィクスの観点での改修も行われております。Nextcloud のバージョンアップのスピードはとても速いですが、相応のメリットを享受することができますので、定期的にバージョンアップを行う運用計画を立てられることをおすすめします。