ZFS Inode 消費

ZFS Inode 消費

PLEXサーバーとして機能するraid Z1には、約90TBのZFSプールがあります。現在、空き容量が約300GB程度あります。平均して、ほとんどのファイルはそれぞれ70〜80GBです。

小さいファイル(〜10 GB)をコピーしても問題ありません。転送が成功し、Inodeの消費に影響を与えません。

大容量ファイル(〜70 GB)をコピーすると、Inodeの消費は1%から100%にジャンプされます。これは単一のファイル範囲では不可能です。ファイルを削除すると、消費量は再び1%に低下します。単純な大容量ファイルではなく、大容量ファイルであれば、同じ問題が発生します。

wget(リモートFTP)を使用するか、NFSマウントに直接ファイルをコピーし、消費動作は同じです。

次のようなこのガイド、デフォルトのレコードサイズは128KBなので、inodeを消費するファイルサイズのためにinodeが非常に高速に消費されるようです。

そうですか? 1MBのレコードサイズでこの問題は解決されますか?

プール状態

root@pve:~# zpool status pool
  pool: pool
 state: ONLINE
  scan: scrub in progress since Thu Jul 27 18:40:26 2023
        25.0T scanned at 478M/s, 23.6T issued at 450M/s, 76.1T total
        0B repaired, 30.99% done, 1 days 10:00:10 to go
config:

        NAME                                 STATE     READ WRITE CKSUM
        pool                                 ONLINE       0     0     0
          raidz1-0                           ONLINE       0     0     0
            ata-ST6000VN001-2BB186_XXXXXXXX  ONLINE       0     0     0
            ata-ST6000VN001-2BB186_XXXXXXXX  ONLINE       0     0     0
            ata-ST6000VN001-2BB186_XXXXXXXX  ONLINE       0     0     0
          raidz1-1                           ONLINE       0     0     0
            ata-ST6000VN001-2BB186_XXXXXXXX  ONLINE       0     0     0
            ata-ST6000VN001-2BB186_XXXXXXXX  ONLINE       0     0     0
            ata-ST6000VN001-2BB186_XXXXXXXX  ONLINE       0     0     0
          raidz1-2                           ONLINE       0     0     0
            ata-ST8000VN004-2M2101_XXXXXXXX  ONLINE       0     0     0
            ata-ST8000VN004-2M2101_XXXXXXXX  ONLINE       0     0     0
            ata-ST8000VN004-2M2101_XXXXXXXX  ONLINE       0     0     0
          raidz1-3                           ONLINE       0     0     0
            ata-ST8000VN004-2M2101_XXXXXXXX  ONLINE       0     0     0
            ata-ST8000VN004-2M2101_XXXXXXXX  ONLINE       0     0     0
            ata-ST8000VN004-2M2101_XXXXXXXX  ONLINE       0     0     0

errors: No known data errors
root@pve:~# zfs get all pool
NAME  PROPERTY              VALUE                  SOURCE
pool  recordsize            128K                   default

Inode 消費 (ファイル前コピー)

共有ディレクトリはPLEXファイルが保存される場所です。

root@pve:\~# df -ih
Filesystem           Inodes IUsed IFree IUse% Mounted on
pool                    87M    17   87M    1% /pool
pool/share              87M   36K   87M    1% /pool/share
pool/main               87M    12   87M    1% /pool/main

Inode消費(ファイルコピー後)

root@pve:~# df -ih
Filesystem           Inodes IUsed IFree IUse% Mounted on
pool                     17    17     0  100% /pool
pool/share              36K   36K     0  100% /pool/share
pool/main                12    12     0  100% /pool/main

答え1

statvfs()システムコール(df後で使用されるもの)によって報告されたInode使用量は、ZFSにはあまり役に立ちません。

従来、ファイルシステムには固定数のinodeがあったため、合計数と余裕数を報告するのは簡単でした。 ZFSは必要に応じてより多くのinode(実際にはZFS関連の概念に似た「dnode」)を割り当てます。

報告される「空き」数字statvfs()は、ZFSがプールの残りのスペース(または設定されている場合はデータ・セットクォータ)から割り当てることができるdnodeの数です。その後、合計金額は無料+使用されます。 (源泉)

したがって、ここで「無料のinode」で何が起こっているのかを理解するには、プールの全スペース使用量を調べることをお勧めします。コピーが残ったスペースを埋めますか?

一般的に言えば、zpool listこれはzfs listあなたのスペースがどこに行くかについてより良いアイデアを提供します。これは必ずしも簡単ではありません。 ZFS空間予測は、プールの構築方法、プールおよびデータセットの構成方法、実際に使用可能なスペースの量に応じて、スペースを使用または使用しない戦略が多いため、不正確な傾向があります。

最後に、レコードサイズは使用されるdnodeの数には影響しませんが、ブロックサイズが大きくなると、上記のようにビデオなどのデータがうまく圧縮されない場合、または圧縮がオフになった場合、より多くのスペースが無駄になるという意味に変更されました。 「自由inode」の推測計算

しかし、結論は:明らかなinodeの使用を除いて、すべてが大丈夫に見える場合はdf心配しないでください。実際には意味がありません。

関連情報