Nabe International | Takeru Boost >> Takeruを回せ! >>

zfs-0.7.7 : cp実行時の問題

概要

  • zfs on linux 0.7.7 において大量のファイルを含むディレクトリをcpコマンドでコピーするとストレージの空き容量が十分にあるにも関わらず、"No space left on device"のエラーが出て一部のファイルがコピーされないという問題があることがわかりました。 https://github.com/zfsonlinux/zfs/issuzes/7401
  • 上記URLで紹介されている例では、空のファイルを10000個作ったディレクトリをzfs上でコピーすると数千個のファイルがコピーされずにコマンドが終了してしまう
  • 修正されたバージョン 0.7.8では上記の症状は起きない
  • rsync, mvコマンドではこの症状は起きない模様

症状の確認

  • テスト環境
 
   # OS
     CentOS7.4 (3.10.0-693.21.1.el7.x86_64)
     zfs-0.7.7 -> zfs-0.7.8
  
   # Hardware Spec
     CPU : Xeon Platinum 8164 x2
     Memory: DDR4-2666 64GB
     RAID Card: 9361-8i(Firmware: 24.12.0-0020)
     HDD: HUA723030ALA640 x8 (RAID6)
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
Test 16T 14.5M 16.0T - 0% 0% 1.00x ONLINE -

# mkdir SRC
# for i in $(seq 1 10000); do echo $i > SRC/$i ; done
# cp -r SRC DST
cp: cannot create regular file ‘DST/4134’: No space left on device
cp: cannot create regular file ‘DST/4108’: No space left on device

# ls SRC/|wc
10000 10000 48894

# ls DST/|wc
8184 8184 40019
  • 上記の通り、エラーの出たファイルは2個だけでしたが、実際には10000個中1800個ほどのファイルがコピーされませんでした。
  • この後、0.7.8にupdateして同じことを確認しましたが、上記症状は発生せず全て正常にコピーされました。

該当するかどうかの確認方法

  • zfsのバージョンを確認する以下のように表示された場合は今回の症状が該当する可能性があります。
  • 該当している場合はupdate手順などについてご相談ください。
  • ただ、0.7.7がリリースされたのが3/21、0.7.8がリリースされたのが4/10ですのでこの間にzfsをインストール、あるいはupdateをしていなければ該当しないはずではあります。
$ rpm -q zfs
zfs-0.7.7-1.el7_4.x86_64