Ubuntuを使ってラズベリーパイ4でbacheをテストしています。私がUbuntuを選択した理由は、カーネルモジュールが正しくロードされていないため、標準のRaspbianがbcacheに関連するいくつかの問題を発見したからです。私はいくつかのトラブルシューティングを試しましたが、Ubuntuに移動したらすぐに機能しました。
私の設定はこんな感じです。
1 x 1TB HGST 5400RPM 2.5 laptop hard disk
1 x 256GB WD Green 2.5 SSD
Raspberry pi 4 4GB model with large heat-sink for cooling and 4A power.
USB 3.0ポート(すべて外部電源)を使用してHDDとSSDをRaspberry Piに接続し、Ubuntuで起動しました。まず、低電圧誤差をテストしたところ、すべてが正常であることが確認されました。
SSD -> /dev/sda
HDD -> /dev/sdb
その後、両方のドライブに1つのパーティションを作成し、以下のようにbcacheを作成しました。
make-bcache -B /dev/sdb1
make-bcache -C /dev/sda1
それから/ datastoreに/ dev / bcache0をマウントしました。
次に、キャッシュデバイスを次のように接続します。
echo MYUUID > /sys/block/bcache0/bcache/attach
その後、書き込みストレージキャッシュを有効にします。
echo writeback > /sys/block/bcache0/bcache/cache_mode
その後、vsftpdサーバーをインストールし、ルートftpディレクトリをbcache0マウントポイントとして使用し、テストを開始しました。最初のいくつかのテストでは、113MBpsでファイルをアップロードでき、キャッシュが接続されていても、ほとんどのファイルがサポートデバイスに直接書き込まれることを確認しました。
bcache-statusスクリプトを使用してステータスをテストするときhttps://gist.github.com/damoxc/6267899ほとんどの書き込み操作はキャッシュを見逃しており、HDDから直接113MBpsの速度でバックアップデバイスに直接書き込むことを確認しました。 -O?
その後、微調整を開始しました。このセクションのパフォーマンスのトラブルシューティングのセクションで提案されているようにhttps://www.kernel.org/doc/Documentation/bcache.txt文書
まず、このコマンドを実行してequential_cutoffを0に設定しました。
echo 0 > /sys/block/bcache0/bcache/sequential_cutoff
その直後にSSDデバイスキャッシュヒット率が増加したことが確認できました。同時に私はiostatを継続的に実行します。 iostatからSSDに直接アクセスしていることがわかります。しかし、数分後、私のfilezillaクライアントはハングし、FTPアップロードストリームを再開できません。 bcache0 マウントにアクセスしようとすると、非常に遅いです。キャッシュの状態が「汚れ」と表示されます。
その後、パイを再起動し、デバイスを再接続しました。そして、次の設定を指定してください
echo 0 > /sys/fs/bcache/MYUUID/congested_read_threshold_us
echo 0 > /sys/fs/bcache/MYUUID/congested_write_threshold_us
~によるとhttps://www.kernel.org/doc/Documentation/bcache.txtこの資料はBCache追跡サポートデバイスの遅延を防ぐためのものです。しかし、このオプションの後でも。私のFTPアップロードストリームはクラッシュし続けます。その後、すべての設定をデフォルト値に復元しました。まだ多くのファイルがアップロードされ、競合が発生します。
テスト中にpi CPUが完全に利用されていないことがわかりました。
pi 4 1Gbpsイーサネットを使用して取得できる最大スループットは930Mbpsでかなり良いです。 NTFSクリスタルディスクを使用してテストしたとき、HGSTドライブは最大90MBpsの書き込み速度を達成しました。ファイルシステムがext4なので、Pyから113MBpsを取得しているようです。
80MBps以上のFTPアップロード速度が得られたら大丈夫でしょう。私の質問は
bcache と一緒に使用すると、FTP ストリームがクラッシュし続ける理由と、時間の経過とともに bcache のインストールが遅くなる理由。
equential_cutoffを0に設定してもキャッシュ使用量が非常に低い理由
Raspberry PI 4でbcacheをテストした人はいますか?それでは、キャッシュにSSDをどのように適切に使用できますか?
最後に、誰かが書き込み保存モードでbcacheが実際にどのように機能するかを詳しく説明できますか?私はアーカイブデータにのみ使用し、SSDタイプ設定ではホットデータにアクセスする必要はありません。
答え1
以下のガイドラインに従って問題を解決しました。https://www.raspberrypi.org/forums/viewtopic.php?t=245931このトピック。
これは、外部SSDが断続的に接続されるRaspberry PI 4 USB 3.0 UASPドライバの問題によるものです。 UASインターフェイスを無視するためにcmdline.txtに行を追加した後、SSDとbcacheの両方が完全に機能します。
デフォルトでは、外部USB 3.0 SSD /エンクロージャVIDとPIDを見つける必要があります。
lsusb
次に cmdline.txt を編集し、ファイルの末尾に次の行を追加する必要があります。 aaaaはVIDに等しく、bbbbはPIDに等しい。
usb-storage.quirks=aaaa:bbbb:u
その後、ラズベリーパイを再起動します。再起動後、SSDは信頼性が高く、kern.logでUASインターフェイスのエラーは表示されません。
それに加えて、bcacheの設定はRaspberry pi 4で完全に機能します。テストにはUbuntuを使用してください。