TeraStation TS-TGL /R5 シリーズで発生するHDD容量制限を回避する

基本的なPC操作のみで拡張可能なお手軽手法.
modファームどころか,ターミナルソフトすら出てきません.

作業の流れのスクリーンショットと簡単な解説をかきました.
試行錯誤の様子は当時の記述が発掘されたのでページ最下部に追記します.
解説はページ下方,試行錯誤の上らへんにどうぞ.

速報として掲載した,disk1がNAS Navigator越しに1TBで認識されているスクリーンショット.

web管理画面上で確認したスクリーンショット,ディスク1が制限越え

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
      手順
web書き用に手順を追い直した.
上のスクリーンショットをスタートとする.
必要なもの:
Ubuntu Linux 9.x以上のLiveCD or同等のバージョンのディストリビューション
PCにHDDを接続するキット(再起動の手間を考えるとUSB接続がおすすめ)

TeraStationの電源を切り,ディスクを大容量品と交換する
(例ではdisk No.がコロコロ変わっている,何回かの交換作業の中,記録ミスがあったため).

Terastationの電源をいれ,web管理画面を開く.

ディスクの未フォーマットが警告されるので,ディスク管理からフォーマットに行く.

フォーマットを行う.
くれぐれも消去先を間違えないように.

警告に表示されているものは本当に交換したものか確かめて,画面下方のボタンで続行

まだ訊いてくるので「OK」

最後,セキュリティコード入力.画面表示の4桁を入力する

フォーマットされる.HDD間違えててももう遅い.

完了すると管理画面には「558.0GB」と表示される(ディスク4)

TeraStationをシャットダウン.

TeraStationからフォーマットしたディスクを取り出し,PCに接続.
LiveCDでも構わないのでLinuxでPCを起動.
(むしろオペレーションミスを避けるため,PC本来のHDDは取り除いてCDブートしたほうが安全)

今フォーマットしたディスクをGPartedで見るとこうなる.

パーティション3,4を削除する.unallocatedとなる

unallocate領域にXFSで取れるだけとる.
当初はパーティション4用の領域を空けていたが,無くても良いようだった.

GPartedは実行ボタンを押すまではシミュレートモードなので,
最終的な作業の適用を行う.
上画面の緑のチェックのアイコンをクリック.
Ubuntuの9.x以上ならばつつがなく実行されるでしょう.

完成.

HDDをアンマウント(するか,PCをシャットダウン)し,HDDを取り出す.

TeraStationに接続し,電源を入れる.web管理画面を開く.
この時点ではXFSの細かいフォーマット形式が合わないので,
未フォーマット警告が表示される.

ディスク情報もおかしい(ディスク4)
なお,所々漢字が文字化けしているのはUbuntuLiveCD上からの操作のため.

TeraStationで改めてフォーマットする.
パーティション1,2がTeraStationのもので,パーティション3が切ってあれば,
TeraStationはパーティションサイズに手を出さずフォーマットのみ合わせてくれる.

繰り返すが,フォーマットするHDDを間違えないように



フォーマット完了後,最大容量で認識(ディスク4)

通常モードで全体の容量が2TBを超えた状態で再起動すると
管理画面が不調になるようなので(再現性不明)
とっととRAIDを組む.

今回はRAID1を組む.

しつこい確認.こちらもしつこいが,ホントに組むHDDを間違えないように.


RAIDが組み終わるとメンテナンスが入る.
その時間,1TBで10時間程度.

なお,メンテナンス中に大量のデータを書き込むとRAIDエラーになるので,
おとなしく放置しておくべき.
また,データを弄ったり設定替えたりしているとシステムのファームがおかしくなることもあった.
具体的には,最終確認の数字がブランクになり,先に進めなくなる症状になった.
HDDを抜き差ししている中で発生することもあるようで,

NAS Navigator画面.1TB RAID1が組めているのが確認できる.
存在しない型番「TS-3.0TGL/R5」になった.もう1台足すと4.0TGLになる.

web管理画面上でも930GBx3基として認識

4基めを導入し,2つ目のRAID1を組む

例によってチェック中は余計なことをしないこと.

完成.


解説とか
#メールをいただいた何人かには,文章のみである程度開示していた.その内容に加筆したもの.

購入したHDDを直接TeraStationに接続してフォーマットしただけであるならば,
558.0GBまでしか認識されない.この場合,Raid設定を行ってもこの容量までしか使用できない.
この制限にx4したものが,「TGLシリーズでの2TBの壁」として知られていた.

この容量制限は,Shimalithの見立てでは,
TerastationTeraStation TS-TGL /R5 に搭載されているファームウェア(実体はOS/Linux)の
フォーマットツール(パーティションエディタのmakefsの一部,makefs.xfs)にバグがあり,
HDDのデータ領域に0を書き込み初期化する作業の途中で止まってしまうため,
必ず558.0GBになってしまうものと思われる.

XFS自体はサーバー用途のフォーマットで,規格上は相当な容量まで対応しているが,
試行錯誤からの推測では,この当時のLinuxのフォーマットソフトのバグがあった模様で,
そのLinuxを採用していたTeraStationにも影響が出たようである.
TGLシリーズは最大容量2TBであったし,勝手にHDDを純正外に入れ替える行為自体が保証外であるので,
当時のメーカにミスがあった訳ではない.

最近のTeraStationは似ているのは外見だけで中身にはCPUがメーカレベルで異なるなど相当改良が入っているため,
新しいTeraStationのファームウェアを入れる,というような簡単な方法はとれないかと思われる.

いろいろ試した結果としては,,システム領域はTerastationに書かせて,
データ用のパーティションのみ,PC上にて当該バグの修正されたLinux
(Shimalithが使ったのは,Ubuntu 9.03,さらに3台追加時にはUbuntu10.04)の
フォーマット機能GPartedでパーティションを拡張し,TeraStationに再度取り付けるのが適当だと判断した.
1台この方法でパーティション切りしたHDDが作れれば,2台目以降はディスク完全コピーを行っても良い
(1台目ディスクの不良セクタ情報もコピーされる恐れはあるが).

なお,大容量HDDの認識は可能なものの,RAIDを除いた一般フォーマットの合計容量が2TBを超えた状態で再起動すると,
今度はTerastationの管理ツールがまともに機能しなくなるようなのでなかなか使いどころが難しくなる(笑)
「Terastation のRaid解体,再構築 書きかけ」
http://sites.google.com/a/shimalith.net/shimalith-web/index/labs/backup-strategy
のように,Raidを諦めてしまうか,
総容量2TBを超えないようにHDDの一部を外して起動し,順に1TBのRaid1を2つ構築する,
というような特殊な運用が必要になると思われる.
(Shimalithはそうした.1TBのHDD4台で2xRAID1(1TB)を構築して運用している.
その際,新規購入のHDDと使い古しのディスクを敢えて取り混ぜてRAIDを組んだ.
きっとこのほうが同時に両HDDが故障する確率が小さくなるはず)

2ちゃんねるのTeraStaionについての掲示板(速報版を書いた前後に2回だけ見に行った)において,
「カーネルを更新すればいい」との発言があったが,半分は当たっている,というのがShimalithの見解.
というのも,カーネル(Linuxの骨格の部分)を更新すると,
バグとしてLinuxコミュニティに認識されていたらしいフォーマット担当ソフト(makefsのfill-0部分)も修正されるので,
結果パーティション変更を伴うディスクの初期化が成功するようになり,最大容量まで認識される,というからくり.

ただ,本当の原因を探らずに「カーネルごと更新さえすればいい」というのは,
質問サイトでよく見られる「リカバリしろ,再インストールだ」といっているのと同じで,
そりゃあ確かに動作するようにはなるのだけれども,
根本原因を探さずにモジュール丸ごと交換で対応するチェンジニア的思想はよろしくないと考えている(あくまで,個人的に).


・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
実験当時の書きかけの文章が発掘されたので.
内容は上記と重複が多いが,どうやってたどり着いたかの試行錯誤が残っているので,置いておく.
・本体の最大認識容量,あるいは他ドライブとの兼ね合い.
本体の総容量を減らすために2-4ドライブを外し,増設1TBのみにして起動,フォーマット.
=>半端な容量のまま.最大認識容量や他ドライブとの干渉のせいではない.
Linuxはドライブという単位をあまり重視していないので,
ドライブ1基あたりの最大容量制限とかも本来はない,はず.

・Ubuntu Linux Live CD 8.30で接続
付属パーティションツールのGPartedを使う.
パーティション1,3がxfs,2,4が不明なフォーマットで認識.
正規の250GB接続時と,TeraStationでフォーマットした1TBの差異は,パーティション4に集中.
パーティション4が余りのように思えたので,パーティション4を削除し,#3を拡張.


=>エラー.#3,#4双方を削除して新規にxfsパーティションを作製するも,やはりmakefs.xfsでエラー.

・クイックフォーマット的処理の速さに問題がありそうなので,
一旦他のフォーマットでならしてからxfsに
=>時間がかかった割に,エラー内容が変わっただけだった.

・xfsファイルシステムに問題がありそうな気がしたので,調査.
xfsは大量のファイルを扱えるよう設計されていて,600GBに壁があるという話は無しfrom wikipedia.

・さらに調査
エラー内容で検索.
ほとんど引っかからないが,海外で何件か同様のエラーメッセージが出て困った人がいる模様.
ファイルシステムはLUKSであったり,XFSであったりと条件は様々.
ディスクセクタに直接書き込めるか確認してみてという回答をもらっている方も.

その中で,回答の中に,「mkfs.xfsはジャーナルに0を詰めるだけ」という話が.
実際問題,その0書きでエラーしているとしか思えない.

さらに,xfs.1.0には問題があった的書き込み発見.


情報と実験を総合した結果,
・mkfs.xfsに大容量ファイル,かつ複数パーティションのドライブを扱えない可能性
(単パーティションのUSB外付けHDDのxfsフォーマットは1TBでも何の問題もなかったため)
・TeraSationだけでなく,この頃のLinux全体が抱えている問題らしい
・問題に気づいているなら,次バージョンで彼らが直してこないはずがない
より,Ubuntu Linux 日本語Remix 9.10でやってみることに.

9.10ではGPartedでxfsの処理を頼んだときのCPU使用率が数%上がり,
プログラムに変更があったことを思わせる.
で,,フォーマット成功.
Comments