Home > 4 > Linux Archive

Linux Archive

TerastationPro(TS-TGL)の3disk raid5化&500GB制限回避

  • Posted by: Caruma
  • April 18, 2010 8:39 PM
  • Linux

ひょんなことから、TS-TGLを入手した。だが、80GB*4のRAID5という前時代的なディスク容量。

仕方ないので、何も調べずにアキバにいって、価格と容量のバランスがよいWDの1.5TBを3本購入。
RAID5だから、3本でいいだろうと安易に考えたのが運のつきだった。。。。

家に帰り、TS-TGLにディスクを換装。

起動させメニューから確認。よしよし認識してるぞ。
既存のアレイを削除し、新しく作ろうとする、、、と、、、、

RAID5は4本必要です。

なんですと!おお、、なんということ。。。

では、仕方ないと、2本でミラーを組んでみることに。
そうすると、容量が、550GBのアレイになってしまう。。。なぜだ、、、

調べてみると、TS-TGLはそういう仕様らしい。なんという。

仕方ないので、ディスクを買うか、なんとかするとか思案。
しかしディスクかいにいくにしてもすでに夜中だったので、とりあえず朝までなんとかしてみようと。

そこで、とりあえず、ファームをroot奪取版に入れ替えてみる。

■ ファームの入替え
ntlworld.comからカスタムファームをDL
私は、1.12dを使用した。

DLしたら解凍し、japaneseの方をdclickしてinstall。
2,3回terastationが再起動したらtelnetがenableになっていると思う。

loginは、"myroot"でパスワードなしで入れます。

■ raidの構成
そもそも、今回は1.5TB*3でRAID5なので、本来は3TB使えるはず。
だが、TS-TGLは500GB*4=2TBという制限があり、2TB以上のアレイは認識できない。
# kernelのver上の制約という話もある?

仕方ないので、workaroundとして、2TB+1TBの2領域にわけることで、3TB使用可能にする。

以下の手順は、4 x 1TB = 2 Raid5 arrays => finally workingを参考。

1. 大前提。
データは吹っ飛びますので、どっかからもってきたディスクを流用する人は、退避させて下さい。かつ、最悪、terastation自身がただのbrickになる可能性もあります。
At your own risk で。

後、作業時にログをとらなかったのでコマンドの結果は適当です。
下の手順を見て何をしているか分からない人は、やらない方がいいと思います。

2. telnet で terastaion にアクセスし、mount 状況の確認。

  • bash# telnet -l myroot "TERASTAION IP"
  • root@CONTROLS1:~# df -h
  • Filesystem Size Used Avail Use% Mounted on
  • /dev/shm 15M 120k 14M 1% /mnt/ram
  • /dev/ram1 14M 211k 13M 2% /tmp
  • /dev/md1 1.4T 5.8M 1.4T 1% /mnt/array1

3. RAID Array1をアンマウント


  • root@CONTROLS1:~# umount /dev/md1

4. Diskのパーティションを切り直します。スロット1がsda、スロット2がsdb、スロット3がsdc、スロット4がsddと対応しています。
パーティション1はterastaionがsystem(firm)で使用している(多分)と思われます。2はswapで、3と4がデータ領域です。
今回は、 1.5TBのディスクを3本使い、パーティション3=約1TB パーティション4が約400GB(パーティション1と2の領域がある為)のディスクを3本でraid3=約2TB+約800GBのRAID5を組む為、3と4それぞれパーティションを切っていますが、ディスクの総容量が2TB以下ならパーティションを分割する必要はありません。


  • root@CONTROLS1:~# mfdisk -c /dev/sda (必要な本数分sdb-dも実施)

  • Command (m for help): d (パーティション3を削除)

  • Partition number (1-4): 3

  • Command (m for help): d (パーティション4を削除)

  • Partition number (1-4): 4

  • Command (m for help): n (パーティション3を作成)

  • Command action

  • e extended

  • p primary partition (1-4)

  • p

  • Partition number (1-4): 3

  • First cylinder (66-121601, default 66): 66

  • Last cylinder or +size or +sizeM or +sizeK (66-121601, default 121601): +1000000M

  • Command (m for help): n (パーティション4を作成)

  • Command action

  • e extended

  • p primary partition (1-4)

  • p

  • Partition number (1-4): 4

  • First cylinder (63808-121601, default 63808):

  • Using default value 63808

  • Last cylinder or +size or +sizeM or +sizeK (63808-121601, default 121601):

  • Using default value 121601

  • Command (m for help): t (swapパーティション2を作成)

  • Partition number (1-4): 2

  • Hex code (type L to list codes): 82

  • Command (m for help): p (パーティションの確認)

  • Command (m for help): w (write)

  • The partition table has been altered!

  • Re-read table failed with error 16: Device or resource busy.

  • Reboot your system to ensure the partition table is updated.

  • Syncing disks.

5. 手を3回叩き祈りながら再起動

  • root@CONTROLS1:/etc/rc.d/rc3.d# reboot
  • Broadcast message from root (pts/0) Mon Aug 10 15:49:05 2009...
  • The system is going down for reboot NOW !!


6. RAID Arrayの作成
mdadmというのはlinuxのソフトウェアraidの管理コマンドです。補則を。

  • mdadm --create /dev/md1 --level=5 --raid-devices=3 --force --run /dev/sd[a-d]3
  • -create : arrayの作成
  • /dev/md1 : 作成するarrayを指定
  • -level=5 : raid何かを指定。今回はraid5なので5。
  • -raid-devices=3 : 作成するarrayで使用するディスクの本数。今回は3本。

あと言うまでもないとは思いますが、 -run /dev/sd[a-d]3というのは、適宜書き換えて下さい。[a-d]の部分でdiskを指定し、その後の数字"3"はパーティションnoです。

例えば、raid5を4本で組む場合は、

  • mdadm --create /dev/md1 --level=5 --raid-devices=4 --force --run /dev/sd[a-d]3

となります。

では本番。

  • root@CONTROLS1:~# mdadm --create /dev/md1 --level=5 --raid-devices=3 --force --run /dev/sd[a-c]3
  • mdadm: array /dev/md1 started.
  • root@CONTROLS1:~# mdadm --create /dev/md2 --level=5 --raid-devices=3 --force --run /dev/sd[a-c]4
  • mdadm: array /dev/md2 started.

7. fstabの書き換え。

  • root@CONTROLS1:~# vi /etc/fstab
  • # /etc/fstab: static file system information.
  • #
  • #
  • /dev/md0 / auto defaults,noatime 0 0
  • proc /proc proc defaults 0 0
  • /.swapfile swap swap defaults 0 0
  • /dev/md1 /mnt/array1 xfs rw,noatime 0 0
  • /dev/md2 /mnt/array2 xfs rw,noatime 0 0


8. diskinfoの書き換え。これやらないとブラウザの管理画面がおかしくなります。

  • root@CONTROLS1:/# vi /etc/melco/diskinfo
  • array1=raid5
  • array2=raid5
  • disk1=array1
  • disk2=array1
  • disk3=array1
  • disk4=array1
  • usb_disk1=
  • usb_disk2=
  • usb_disk3=
  • usb_disk4=


9. 作成したarrayをフォーマットします。

  • root@CONTROLS1:/# mkfs.xfs -f /dev/md1
  • mkfs.xfs: warning - cannot get sector size from block device /dev/md1: Invalid argument
  • meta-data=/dev/md1 isize=256 agcount=367, agsize=1048576 blks
  • = sectsz=512
  • data = bsize=4096 blocks=384005616, imaxpct=25
  • = sunit=16 swidth=48 blks, unwritten=1
  • naming =version 2 bsize=4096
  • log =internal log bsize=4096 blocks=32768, version=1
  • = sectsz=512 sunit=0 blks
  • realtime =none extsz=196608 blocks=0, rtextents=0
  • root@CONTROLS1:/# mkfs.xfs -f /dev/md2
  • mkfs.xfs: warning - cannot get sector size from block device /dev/md2: Invalid argument
  • meta-data=/dev/md2 isize=256 agcount=333, agsize=1048576 blks
  • = sectsz=512
  • data = bsize=4096 blocks=348172656, imaxpct=25
  • = sunit=16 swidth=48 blks, unwritten=1
  • naming =version 2 bsize=4096
  • log =internal log bsize=4096 blocks=32768, version=1
  • = sectsz=512 sunit=0 blks
  • realtime =none extsz=196608 blocks=0, rtextents=0

10. arrayをマウントします。

  • root@CONTROLS1:/# mount /dev/md1
  • root@CONTROLS1:/# mount /dev/md2

11. terastation起動時に作成したマウントが読まれるようにスクリプトを仕込む

  • root@CONTROLS1:/# vi /etc/init.d/restart_my_array.sh
  • #!/bin/sh
  • echo "-- rebuild mdadm.conf for md1--"
  • echo 'DEVICE /dev/ts_disk?_3' > /etc/mdadm.conf
  • mdadm -Eb /dev/ts_disk?_3 >>/etc/mdadm.conf
  • echo "-- rebuild mdadm.conf for md2--"
  • echo 'DEVICE /dev/ts_disk?_4' >> /etc/mdadm.conf
  • mdadm -Eb /dev/ts_disk?_4 >>/etc/mdadm.conf
  • mdadm -As --force
  • mount /dev/md2

12. スクリプトに実行権限を付与


  • root@CONTROLS1:/etc/init.d# chmod +x restart_my_array.sh

13. rc3dへリンク


  • root@CONTROLS1:/# ln -s /etc/init.d/restart_my_array.sh /etc/rc.d/rc3.d/S99z_restart_my_array

14. 再起動します。ブラウザから管理画面を開きarray1と2が認識できている事を確認。

■ おまけ。シリアルコンソールの有効化
ファーム1.12で確認済みです。


  • http://{TeraStation の IP アドレス}/cgi-bin/task.cgi?task=console¶m=on


但し、コールドリブートした場合は、リセットされてしまうので注意。

UNIX:InterScan Web Security Suite 3.1 Linux版 が使用するポートの一覧

  • Posted by: Caruma
  • May 14, 2009 8:08 PM
  • Linux

IWSSのドキュメントの在処

  • Posted by: Caruma
  • May 13, 2009 6:57 PM
  • Linux

CLIでTZを変更する

  • Posted by: Caruma
  • March 13, 2009 4:22 PM
  • Linux

Perl Tips | Linux で、システムのタイムゾーンを設定する方法

# ルートでログインする。現在のタイムゾーンを確認するには date コマンドを使用する。date と入力して Enter キーを押すと、Sat Oct 12 00:00:00 PDT 2006 のように表示される。この場合は PDT がタイムゾーンで、PDT とは Pacific Daylight Saving Time (太平洋標準時の夏時間)の略で、米国の場合は夏時間は PDT とと表記する。夏時間でない場合は PST である。MDT/MST、CDT/CST、EDT/EST なども同様である。 # /usr/share/zoneinfo にディレクトリを変更する。ここに設定できるタイムゾーンが集まっている。 # 日本の場合はそのまま Japan というファイルが見つかるが、Asia というディレクトリの下に Tokyo というファイルも見つかるはずである。米国に設定したい場合は America の中から選択する。 # ここで選んだファイルを /etc/localtime にコピーすればいいのだが、まずは mv /etc/localtime /etc/localtime.org などとしてから、JST / 日本(東京)の場合は、 # ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime とした方がいいだろう。

Riece Command

  • Posted by: Caruma
  • February 27, 2007 10:34 AM
  • Linux

Commands - Riece -- An IRC client for Emacsen --
たまになやむのですよ、、、、アレナンダッタッケ。。?と
ということで、メモメモ

Index of all entries

Home > 4 > Linux Archive

Search
Feeds

Return to page top