2013年4月12日金曜日

【Linux】RAID1が縮退運転しおった


やられたぜ・・・・

/dev/md0:
        Version : 1.2
  Creation Time : Mon Dec  3 17:39:14 2012
     Raid Level : raid1
     Array Size : 97590144 (93.07 GiB 99.93 GB)
  Used Dev Size : 97590144 (93.07 GiB 99.93 GB)
   Raid Devices : 2
  Total Devices : 1
    Persistence : Superblock is persistent

    Update Time : Fri Apr 12 00:31:47 2013
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           UUID : 84c532e6:58e0cc48:c30029c5:37eb4163
         Events : 731

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       18        1      active sync   /dev/sdb2

交換用のHDD買うか・・・・

とりあえず買ってみたものの、sdbのgrubが起動しない。

環境はこんなかんじ
Ubuntu 12.04
md0: sda2 sdb2
md1: sda3 sdb3
md2: sda4 sdb4

grubのOS選択画面で再起動がかかり、BIOS画面と行ったり来たりする。
grubの設定を変更してもだめ、grubシェルでlsしようとしたり、insmodしようとして、補完でTABキー打つと再起動する。
意味分かんない。

旧sdaから新sdaを全部コピーしてみたらできたので、物理的に新しいHDDにした状態で上の状態になった。

あとはmdadm /dev/md0 -a /dev/sda2とかしてリビルドして完了。

なぜか1パーテーションがビジーって言われたけど、再起動したら無問題だった。
よかったよかった。

2013年4月4日木曜日

【CakePHP】$this->renderとbeforeRenderの関係

今日はまった出来事。

権限によってviewを変更しようと思って、どこで調整しようかなーと考えてて、
beforeRenderならひと通りできそうだしいいじゃね?!と思ってやってみたらダメだった。

やろうとしている人が居られたら注意を。

■環境
・CentOS 6.5
・PHP 5.3
・CakePHP 2.3.1

なんでかなーと思って調べました。
Controllerの順序は↓な感じだと思う。

beforeFilter
(action)
beforeRender
(view)
afterFilter

使ってる人はご存知の通り、Controller中で$this->renderを使用したタイミングでviewへ処理が移行してしまい、Controllerでの処理が続行できない。
これは、autoRenderが働くためと思われる。詳細は調べてないのです。
$this->outputを呼び出しているせいで、その時点でview用のデータがセットされてしまうとのこと。

んで、重要なのはbeforeRenderと$this->renderのタイミング。

どうやら、beforeRenderはこの$this->outputを呼び出したあとに処理される模様。
普通に考えてみりゃそりゃそうだ。

プレフィックスルーティングもだるいし、viewだけディレクトリ切って各権限毎に振り分ける場合とかどうしたらいいんだべ?

今回は諦めてctpファイルを調整することにします。