巻きでメモ

ハード・ソフト面でのメモとか。

macOS機をファイルサーバーとして使う(ハードまわり)

いくつかネタはあったんですが、あんまりブログで残すようなことがなかったんですが、これは残しておこうかな〜って思ったので書き留めておきます。

これまで

わたしの本業はメディアアーティストですが、作品内でものすごい数のRAW写真とものすごい長さの5.7K BlackmagicRAW Q0映像を扱います。そしてレンダリング後の映像が3桁GBとなって出てきます。
これらのデータは今まで

  • 1TB NVMe SSD (Corsair Force MP510) 作業用素材置き場
  • 6TB HDD (WD60EFAX Red) メインストレージ
  • 6TB HDD (WD60EZAZ Blue) バックアップ用ストレージ(1ヶ月に1回くらいのペースで手動でREDから移動) で管理していました。

2021年の初頭に既に6TB HDDの残り容量が400GBを切るようになってしまったので、HDDを買い足していくことにしました。
2年ほど前はファンレス機にTime Machine用4TBとファイルサーバー用WD Blue 6TBを積んでましたが、ファンレス機が実家に行ってしまったので、HDDはメイン機に積んでいました。
よく考えたら自作初代〜3台目を組むまではデータ用HDDを1台で運用していたので、よく壊れたりしてデータを失ったりしなかったな、と。
そういえば初代はお金がなくてSSD全盛期だったのにOSをHDDに入れてました。正気か?

macOS機を(ファイル)サーバーとして使う〜知識

もともとmacOSUnixBSDの系譜を踏んでいるだけあってサーバーとの親和性が高いOSです。
NAS用OSとして名高いFreeNAS→TrueNASもFreeBSDベースです。なんならmacOS(というかDarwin)はBSD系コマンドはだいたい使えます。
なお、Appleは昔XserverというPower PCintel mac初期にサーバーを売ってた時期もありました。その際に積んでいたOSはX Server(mac OS X Server)です。
Unixサーバー(当時はRedHatかな?)に勝てるはずもなく、数年で姿を消したようです。
初期はラックマウント、その後はPowerMac G5の筐体、 Mac Promac miniの筐体などを利用し、どんどんコンシューマーmacと統合されていきました。
ちなみにXserve RAIDという14本のHDDを搭載でき、RAIDアレイを2本積んだラックマウントのHDDエンクロージャーもあり、Xserve G4あたりでは組み合わせて使ったようです。
なお、Xserve RAIDは接続はATAなのでもう使えません。でもMODして使いたいですね。外部miniSAS接続して使いたいので筐体だけでも欲しいんですけど。
XServer廃止後はそれを引き継いだmacOS Serverというサーバー用の拡張OSを売っていて、そこにさまざまな便利機能(Timemachine Server、iTunesサーバー、カレンダー、メールサーバーなど)が実装されていました。
今ではよく利用されていた機能はmacOSに統合され、ほぼデバイス管理機能のみが残り、それ以外は機能が廃止されています。
現在はmacOS側にsmbとTime MachineサーバーとiTunesサーバー(→Musicサーバー)などをよく使います。
話はそれましたが、普通にmacOSNASにできるし、Windows Server系やUnixサーバーに劣らぬ機能を搭載しています。
当然ソフトウェアRAIDも(0と1とJBOSだけだけど)組める、zfsもインストールすれば使えます。
他のOSにない一番のメリットはFusion Driveの存在でしょう。
これはSSDとHDDを組み合わせて使うもので、同様の機能はNASにもあったりします(SSDキャッシュなどです)。 最近はAPFS対応もしました。これは後で詳しく説明します。

macOS機をファイルサーバーとして使う〜ハードウェア選定

ファイルサーバーを立てるに当たって考えることはいくつかあります。
もちろんサーバーなのでmac miniとかMac Proを使うのでもよいのですが、mac miniはThunderbolt経由で接続するのでRAIDボトルネックが気になったりスペースとケーブルがごちゃついたり不安です。
Mac Proは2013は同様の理由で論外、2019は使い勝手はよいもののサーバー利用にしてはオーバーですよね。メインと合わせて2台買えるわけではないし、そもそも電源が1400W積んでます。レンダリングサーバーを兼ねられますね。
2012より前はPCIeがGen2ですし、NVMeの性能も生かせず、もう最新OSはサポート外、3.5インチは4台しか置けない、古いのでワットパフォーマンスが悪いなど、不満だらけです。
じゃあどうします?そりゃHackintoshでしょ。

macOS Hackintosh機をファイルサーバーとして使う〜ハードウェア編

ここからは普通に自作NASと一緒です。
まず、計画としてHDDを使う本数と2.5インチの総数は決めたいですね。 HDDは4本程度ならその辺のミドルタワーでも買っておけば、2.5インチも2台くらいは積めてSATAの総数もそれくらいになってNVMeも1本なら排他も大丈夫とかそういう感じでしょう。
というかそれならNASを買えばいいですね。
まぁ、それじゃあつまらない、もとい欲しい搭載数が足りないのでもっと大量に積めるNAS機にしましょう!
具体的にはHDDは最低でも6本、2.5インチは2本、NVMeは2本ってとこでしょうか。
メインストレージ用(RAID1)×2、←のバックアップ用2本(JBOSまたは個別使用)、Timemachine用1〜2本、2.5インチはFusion用または普通にSSD利用、NVMeがOS用とFusionまたは普通に利用ですね。

では先にケースから決めましょう。 これを満たせそうなのは結構あります。

  • Antec P101 Silent
  • SilverStone TJ04-E
  • SilverStone CS330
  • SilverStone CS380
  • SilverStone CS381
  • SilverStone DS380
  • SilverStone RM41
  • SilverStone RM420
  • In Win PL052
  • U-NAS
  • Thermaltake View 91
  • Fractal Design Vector RS
  • Fractal Design Define 7
  • Fractal Design Define 7 XL
  • Fractal Design Define R2 XL
  • Fractal Design Node 804

SilverStoneは結構NAS向けケースを出していて調べると楽しいですね。
実際、CS380なんかはSupermicroの小型サーバーの筐体と同じに見えるのでOEM供給してるのかもしれません。
全体的にMicroATXかitxばかりなので、GPUを積むとしてもx1接続のものとかになるのでレンダリングノードなど他の用途に使えそうにないのが残念ですね。
これだけ見えているのはNASシャーシに加えてラックマウントが一般向けと同じブランドで出しているからでしょう。わたし的にはRM41とか好きです。
In winもあまり知られてはいないのですがサーバー/ワークステーション筐体を製造していて、ラックマウントもタワーも選択肢がそこそこあります。 PL052はAmazonでも扱っています。ただ、元がワークステーション向けなので裏配線ができないのが残念かと。
U-NASは見た目とかもうNASって感じのケースを売ってますけど、個人輸入するしかないですね。
ThermaltakeだとView 91は12台分のHDDトレイが同梱されていてよさそうなんですけど、もうどこにも売ってないですね。
The Tower 900なんかもラジエーター載せるスペースに大量に積めそうな雰囲気ですが、ケージとトレイが別売されてないのが残念です。水冷向けなので普通に使おうとすると前面側がスカスカになりすぎますが。
Fractal Designは言わずもがなでしょうか。普通のミドル・フルタワー系統ではあまり見られないストレージレイアウトへの切り替えができたりとかトレイを追加で購入することができるとか弄り甲斐があります。あと見た目がキレイです。
Node 804は大きさこそ小さい割に8台も3.5インチが搭載できるのでちょうど良さそうですが、HDDを交換するのに4台ずつまるごと取り外しが必要とかいう仕様なので、厚みも重量もあるHDDを大量に積むと大変なことになりそうです。

この中で使うとしたらCS381かDefine 7 XLあたりなのでしょうが、E-ATXかEEBとかCEBサイズのマザボを入れたり電源は見えないようにしたいとか思ったよりMicro ATXだとx16x8x4の3スロットがないとかあったのでDefine 7 XLにしました。

詳しくはこちら。

makinok.hatenablog.com

SATA端子が足りない

さて、15台もHDDを積めるDefine 7 XLですが、どう考えても今のマザボでそれだけの台数に対応しているものはありません。
Z390世代だとNVMeを2本とか刺すとSATAが3本程度まで減るのがかなり痛いところ。
PCIe x1やx4接続でSATAを増やすものも売ってますが、だいたいPCIeがボトルネックとなりがちです。また、RAIDを組むならソフトウェア頼りになったり、配線が汚くなったりとあんまりいいことだらけではないです。
そこで登場するのがSASを使ったMegaRAIDなどのアレイです。

f:id:makino_k:20210913115250j:plain f:id:makino_k:20210913115236j:plain

上の記事にも書いたのですが、LSI MegaRAID M5015です。
コントローラーは2108で、512MBキャッシュを搭載、PCIe gen2 x8接続で、SAS/SATAを8ポートまで接続できます。Mini SASとSATAx4の変換ケーブル2本を使うと、合計で8台まで接続できます。
RAIDをハードウェアに任せるため、OS上でのソフトウェアRAIDチップセットでのRAIDよりもリスクが低く、またほかのマザボにもボードごと移植でき、さらにはRAID設定がHDD側に記録されるのでそれを読み取ればそのままコントローラーを交換後も使用できます。
また、携帯用バッテリーを積めば突然のシャットダウンでもバッファの中身が消えることなく書き込みきることもできます。本当にすごいです。

これとマザボSATAが4ポートで計12台まで対応できますね。
もう1台MegaRAIDをつければ16+4台まで積めることになり、Define 7 XLの最大積載まで積めます。
なお、ここまでくるとSATA電源だけで相当な電力を食うので、突然電力不足でHDDの認識が外れるとかあるので、注意したほうがよいでしょう。
特にペリフェラルSATAを3〜4分岐するような増設ケーブルは注意です。

RAIDを組む

ということで、RAIDコントローラーが加わったことでいくつかの種類が生まれました。

一番有効活用したいのはMegaRAID上でのRAID1です。 当然ですが大きい負担のかかるものはこちらでしておきたいです。
また、RAIDRAIDを重ねるのはさすがにエラーが起こりやすいので、それも片方をハードウェアにすることである程度どうにかできます。

Fusion DriveというのはAppleが開発したRAID方式で、OS上でSSDとHDDを組み合わせ、速度と容量をいいとこ取りした規格です。
よく使うファイルはSSD、そうでないものはHDDに自動で振り分けをしてくれるものです。内部的にはJBODRAIDの組み合わせのようです。
調べてみると、書き込み時には速度で有利なSSDにまず書き込まれ、SSDがいっぱいになったらHDDにも書き込まれます。その後、頻繁にアクセスのあるファイルはそのままSSDに残り、HDDは全てのファイルの置き場、という感じらしいです。やっていることはSSDキャッシュに近いですが、振る舞いがだいぶ違いますね。どちらかというとAdobeのメディアキャッシュに近いでしょう。
これは容量としてはSSD+HDDの合計になるので、例えば1TBのSSDと8TBのHDDでFusion Driveを組むと9TBのストレージとなります。また、JBODの方式に近いので、一度Fusionが切れてもHDD側にデータが残るようです(なお、再度Fusionを組むとフォーマットされるので、そのデータは結局バックアップが必要です。これは他のJBODやRAID0にも言えます)

また、MegaRAIDでは複数台によるRAIDしか組めないわけではないです。1台ずつ読み込ませたい場合、1台だけのRAID0を設定するとSATAに接続したのと同じようにOSに情報を渡せます。

ストレージを構成する

今回は作業用のデータ置き場として利用していたNVMeをそのまま活用し、メインデータ置き場であるHDDと組み合わせてそのまま置いておけるFusionを作ります。
また、メインストレージのバックアップとして6TB×2もJBODを組みます。

ちょっとややこしいので、まずは接続状況からいきます。

PCIe M.2

  • NVMe Corsair MP510 960GB
  • NVMe Corsair MP510 960GB

MegaRAID

チップセットSATA

次に、RAIDとその解説です。

RAID1 on MegaRAID

8TB*2でRAID1なので計8TBでの運用です。 データが死んでほしくないので。

Fusion Drive

  • NVMe Corsair MP510 960GB
  • TOSHIBA RAID1 8TB

これはどうなっているかというと、SSD側としてNVMe、HDD側はハードウェアRAIDで1個に見えているTOSHIBAの8TB×2を使っています。
合計9TBのストレージです。
たとえSSDが飛んでもHDDにはデータが残っていて、HDDのどちらかが死んでも組み直せるメリットがあります。
なお、SSDが飛んだ場合もう一度Fusionを組むにはフォーマットされるので、その前にHDDのデータを他のドライブに避難させる必要があります。

JBOD on macOS

JBODは正確にはRAIDではなく、単純に2つのHDDの領域を繋げているだけです。なので、合計12TBです。 これはFusion Driveのバックアップ用と、ついでにWIn機のバックアップ用です。
例えばMegaRAIDが壊れた時にバックアップすら読めなくなるのを防止するため、こちらはチップセットSATAにつないであります。
バックアップソフトにはWD付属のAcronis True Imageを使用しています。
TIme Machineと比較的近く、指定した時間間隔または指定時間にバックアップを取ってくれます。

では、それぞれのストレージの中身の解説です。

  • NVMe 960GB/ OS用
  • Fusion Drive 9TB/ 作業用+メインストレージ
  • JBOD 12TB/ Fusionのバックアップ+Winのバックアップ
  • Seagate 4TB/ メイン機のTime Machine
  • TOSHIBA 4TB/ MacBook Proファンレス機のTime Machine
  • WD RED 6TB/ Winのドキュメントとデスクトップの予備バックアップ(手動)
  • WD Blue 6TB/ 予備
  • Seagate 500GB/余ってたからつけただけ
  • WD SSD 120GB/ 何かあった時用のUbuntu

ということで、12台のSSD/HDDによるファイルサーバーが出来上がったのでした。
あとはシステム環境設定>共有からファイル共有をオンにして、Time Machineサーバーやミュージックの共有などの設定をすれば完成です。

各種スクリーンショット

f:id:makino_k:20210913140457p:plain macOSでは、ディスクユーティリティを起動し、ファイル>RAIDアシスタントからRAIDJBODを組めます。Fusion Driveはここからは組めず、ターミナルでdiskutilから組む必要があります。

f:id:makino_k:20210913142123p:plain

MegaRAID経由で読み込まれたHDDは全て外部接続扱いになります。
なお、当然ながらRAIDコントローラーはホットスワップ対応です。事前にwebBIOSでの設定が必要になります。
RAIDを組むとこのような画面になります。参加するドライブにRAIDメンバーが作成され、それとは別に新たに仮想物理ドライブが作成され、そこにAPFSコンテナが作られるイメージです。 この画面からでも、ターミナルからでも作成できます。
JBODの場合、ここにほかのドライブを追加することも簡単にできます。
また、macOSLinux同様にドライブレターの概念がないので、いくらでもdisk番号で管理でき、読み込みの順番がかわってもアクセスできるメリットがあります。現在disk17s2まで使用していることが確認できています。

f:id:makino_k:20210913142117p:plain SASMegaRAID.kextを使用してSATAバイスを読み込ませたところです。
RAIDアレイではSASとして処理をするので、SATAではなくSASの欄に読み込まれます。
ちなみに、U.2でSASを読み込ませてもここに表示されるはずです。 基本的にRAIDコントローラー>SCSI Target Device @No. で読み込まれます。 ただし、macOSにはデバイス情報はRAIDアレイのものしかいかず、SATAからのS.M.A.R.Tが出ないので、容量などから判断するしかありません。同じ容量を複数接続する際には、1台ずつ接続・フォーマットをして、混乱しないように設定しましょう。

追記:SASMegaRAID.kext

ちなみにですが、SASMegaRAID.kextは使用するとスリープができなくなります。
そもそもの設計の思想としてサーバー用途ですので、スリープをされるとMegaRAIDに電源がいかない=書き込みが途切れる、ということで無効になっています。
なので、スリープをしたければMegaRAIDをやめるとか、完全にサーバー用途としてのPCに入れるか、といった運用がよさそうです。

追記2:HighPoint RocketRAID

どうやらHighpoint製のRocketRAIDはしっかりとmacOSに対応しているようです。
M1にも対応し、公式でドライバーとWebBIOSが用意されています。
ということで、Mac ProやHackintoshやThunderbolt3 エンクロージャー等で使用する場合を含め、RocketRAIDをおすすめします。