SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|
2025|01|02|03|04|05|06|07|08|

2005-01-13(Thu) PICマイコン根性の動作

  昨日に引き続いてYRPに出勤。なんと午前中に早くも予定の仕事がコナれてしまった。午後はウニャウニャ気分で来週分の仕事に着手。定時にはウルトラマキシムハイパーグレートビッグストロングターボダッシュスペシャルを発動。瞬時にホテルYRPにチェックインだ。

  あまりに早かったため、晩飯を食おうと予定していた光龍というラーメン屋が開いていない。開店早々に行くのも五時半族(豊田高専語)っぽくてカッコ悪いので、18時頃に行ってミニギョーザセットを食った。まぁうまい。

  昨日はダラダラと過ごしてしまい、232メモリの開発がサッパリ進まなかったので、今日はミッチリと作業を行うべく机の上をセットアップする。ホテルYRPは部屋の照明もシッカリ明るく、デスクには電気スタンドも完備で、コンセントも多く、超高速ネット接続だからして、まことにデスクワークがハカドるコトこの上ない環境である。いえーい。

  画像の説明

  しかしイカに環境が素晴らしくてもハマるときはハマるのがこの世のサダメである。現在はPIC単独で、外部EEPROMに対して正しくI2Cプロトコルを発行する様子をオシロで確認するという目的で作業を行っているのだが、これがサッパリ動作しない。シミュレータではシッカリと動くことを確認しているのに、現実のPICは非常に珍妙な波形を繰り出してくるのである。

  画像の説明

  つーか、ナニよコレ。3.0Vロジックなのに、なぜか1.5Vで安定する期間がある。波形もナマりまくりだ。別にアナログロジックじゃないんだけどなぁ。あまりにも珍妙な動きなので、コード的にはスタートコンディションを発行するダケという単純なレベルにまで落としてオシロを適用しているのだが、クロックだけならチャンと波形が出るのに、データとのコンビネーションにするとLOWにした直後にポョンと1.5Vまでハネ返ってしまうのだ。うがー、ワケわからん。

  原因がわからないので、直接GPIOのビットをSET(bsf),RES(bcf)で操作するのをヤメLD(movwf)でGPIOに書き込むようにしてみたり、NOPで操作間隔を長めに調節してみたり、毎回TRISをセットしてみたりしたのだがサッパリ効果なし。何度もコードを書き換えてはオシロでチェックするのだが、PICライタとosziFOXはシリアルポートも電源アダプタも共用であるため、ケーブルの繋ぎ替えやアプリの上げ下げが超面倒。そのまま6時間ほどベッタリとハマり続けでいい加減イヤになってきた。

  仕方ないので今日はアキらめて寝るかという頃合に、なにげにオシロを電圧計モードにしてPICの電源ラインをチェックしてみた……2.7V……低い……よな。電源には単3電池x2を利用しているのだが、まだ2.9Vは確保されている……っと×◎は△に〆※っ○ッ!!

  電源がつながってねーじゃんッ!!

  恐ろしいことにPICのVddがオープンだったのである。なんでッ!? Vddがオープンでナゼ動くッ!? Vssはグランドに落ちている。すると1kΩプルアップしてあるポートから流れ込んだ電流で動作していたというコト? PICにつながっている正圧はソコしかないのでそうとしか考えられない。そりゃ動作が不安定なワケだ……。

  しかし、もっとドカンと思い切って不安定ならともかく、再現性のある中間電圧を持つ波形っつーのには参った。ヘタにオシロを使い始めて波形が見えてしまうモンだから、他の方面に原因追求するように頭が回らなかったというコトもある。この6時間の作業はいったいなんだったのか……どっはー。くそばかじゃん、おれ。

  頭を抱えつつもチャンとVddを供給するようにブレッドボード上の回路を修正したところ、ビシビシと波形が現れた。あーぁ、こんなタコなことばかりやっているオイラは、ホントはプログラマには向いていないのではないだろうか……実は単なるヘタのヨコ好き? コッチの業界に転職してもう何年にもなるのに、こんなトコロで自分の限界を思い知ってしまうとは……はぁ、心底つかれた。もー、寝ます。


2007-01-13(Sat) バックアップのためのRAID1

  昨晩、半徹したので遅い朝ながらも、しばらく前にようやく歩き始めたウチのガキのイッペイの相手をしつつ、隙を見て本格的にサーバをバラしにかかる。なかなかしっかりした作り。本機は電源ファンがケースファンを兼ねる構造になっているが、非常に理にかなった空気の流れが作り出されるような配置になっている。感心。

  画像の説明

  しかし、バラせばバラすほど、どこにも作りが特殊な部分は見つからない。フツーのATAのHDDが、マスター設定で、プライマリ側につながっている。マザー上にも特にヘンな接続はない。COM2が前面のLCDパネルにつながっているのと、PCI上のギガ蟹のLEDが前面パネルに引き出されているくらい……となると、BIOSの中身が特殊? それは、あまり考えたくはないが……。

  画像の説明

  バラした状態でいつまでも眺めていてもどーしよーもないので、元通りに組み立てる。もう一度レスキューモードで上げて、grub-install……うまくいかない。どーしても、RAID1からシステムを起動したいんだけどなぁ……どーにもうまくいかない。

  悩み続けていても仕方ない。フツーにインストールしてみよう。改めてフツーにインストールする。パッケージは最小。あれ? 動く? 起動するじゃん!? とりあえず、ちょっと安心。これでインストールできなかった日には、いきなりNASがレンガに変身するところだ。

  ソフトRAIDを妙な設定にしたのが原因なんだろうか? となると、この状態から、システムをミラーリング状態に持ち込まなければならないことになるが……と、ココらあたりで、なんでHDDを1台しか搭載していないサーバで、そんなにオイラがミラーリング構成を組みたがっているのか説明しておこう。

  別に1台のHDDでミラーリングするのが目的ではない。ミラーリング機能を利用したバックアップ環境を実現したいというのが目的である。一般に、バックアップに求められる条件としてはいくつかあるが……

  • サーバの停止を伴うか、バックアップの所要時間はどれくらいか
  • バックアップファイルの形態、利用が容易かくて
  • バックアップに必要な容量、履歴管理が可能か

  ……くらいかな。で、オイラがもっとも重要視するのが、最初の条件。バックアップに時間がかかってもいいから、サーバを停止することなく、スナップショットが取りたい、という要求である。

  で、2番目の条件も重量。Linux標準のdumpでバックアップすると、1個のデカいファイルになってしまう。テープにバックアップするのが前提ならそれで仕方ないが、ちょっと昔のファイルにアクセスしたいだけなのに、バックアップの目録を見ながら個々にファイルを書き戻してから……なんぞウザくてやってられないッ!!

  この点、平時はRAID1の片肺を「崩した状態」にしておき、バックアップを取りたいときにUSBのHDDを接続して「RAID1の復旧」を行い、RAID1の再構築が完了したところで「片側を切り離す」というバックアップ手法を取れば、システムに負荷をかけることなく、無停止でバックアップを行うことが可能なのである。たぶん、RAID1の切り離しはATOMICに行われるであろうからバックアップはスナップショットにほかならないし、なんといっても、切り離したディスクはそのままmount可能な形式なのである。この扱いやすさは最強だ。おまけにバックアップの進捗を/proc/mdstatでビジュアルに監視できる楽しさもある。

  世間一般では、スナップショットならLVMを使うのが素直であるが、いまだLVMの安定性には問題がある。また、接続しっぱなしでRAID1運用するという手もあるが、接続しっぱなしだと落雷で同時に破損する可能性は避けられない。やはり平常時は切り離しておきたい。切り離しておけば電力も食わないしね。

  ちなみにこのバックアップ法は最後の条件には不適である。んが、どうせオイラは数週間に一度くらいしかバックアップしないだろうし、履歴管理したければ改めてDVD-Rに書き出せばいいのだ。そのために、パーティションサイズはあらかじめ4GBに設定してある。

  と、RAIDを組みたい理由はそんな理由なのだが、どうにも既存のインストールを、うまくRAID状態に持っていくことができない……つーか、そもそも最初にソフトRAIDでのインストールした際に起動しなかった理由がわからない……ダメモトでもう一度やってみる? えぃ……

  できるじゃん!?

  ……な、なんだ? 最初と同じ手順で作業したはずなのに(そもそもRHEL4のインストールの際、そんなに多くの選択肢はない)見事にRAID1から起動できてしまった。そういえば、昨日はメモリチェックが始まらなくて強制リセットかけたりしてなんだか安定しなかったが、今日は非常に安定している……慣らし運転じゃないが、どこかしらのエージングが進んで動作が安定してきたのだろうか? まぁ、特に電源とかはロジカルなパーツではないから、あながちありえない話でもないだろうが。

  つーわけで、起動しちゃえばこっちのもの。以下のようなコマンドで「同ドライブ上のRAID1」を縮退、切り離す。

# mdadm --manage /dev/md0 --fail /dev/hda2
# mdadm --manage /dev/md0 --remove /dev/hda2
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hda1[0]
      4192832 blocks [2/1] [U_]

  バックアップのテストを始める。USBのHDDを接続して、ほぼ同容量のパーティションを確保し、以下のコマンドを実行。

# mdadm --manage /dev/md0 --add /dev/sda1

  この直後からリビルドが開始され、しばらくすると……

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[1] hda1[0]
      4192832 blocks [2/2] [UU]

  RAIDの再構成は完了。この時点でバックアップ完了である。再度、切り離す。

# mdadm --manage /dev/md0 --fail /dev/sda1
# mdadm --manage /dev/md0 --remove /dev/sda1
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hda1[0]
      4192832 blocks [2/1] [U_]

  切り離した領域は、mount /dev/sda1 /mntで、極めてフツーに扱うことができる。当然、書き込みも可能だ。ちなみに、新たにRAIDバックアップ可能な領域を作るには以下のコマンドでOK。

# mdadm --create /dev/md1 --level 1 --force --raid-devices=1 /dev/hda2

  また、こんな実験もしてみた。RAID1を3連ミラーにするのだ。

# mdadm --grow /dev/md0 --raid-disks=3
Personalities : [raid1]
md0 : active raid1 sda1[1] hda1[0]
      4192832 blocks [3/2] [UU_]
# mdadm --manage /dev/md0 --add /dev/sda2
Personalities : [raid1]
md0 : active raid1 sda2[2] sda1[1] hda1[0]
      4192832 blocks [3/3] [UUU]

  growオプションはカーネルが2.6でないと動かないらしいが、当然RHEL4ならば問題なく動く。なお、grow(増やす)といいつつも、1を与えれば、1連ミラー(?)に減らすこともできる。

  つーわけで、ずっと前から構想を練っていた「ミラーリングバックアップメソッド」を、やっとこさ実現することができた。今度こそ、次期サーバの設定にとりかかろう。ではまた。


2024-01-13(Sat) 秩父ドライブ

  九四ドライブ東北ドライブの時の習慣で、宿の朝食は開始早々に摂り、冷たい空気の中を走り出す、ということになっているので、今回もそうするのであった。6時半過ぎに朝食、7時半前に出発である。

  帰りは行きのように塩尻経由ではなく、秩父を抜ける。最初の経由地は長瀞。「MOTER MAN 秩父鉄道」の「長瀞だけにトロトロ走っております」とか「イジらないで、長瀞さん」とかで、妙に心が惹かれる地名なんだよな。「岩畳」という案内が気になってそれに向かってクルマを走らせる。朝早いので道はスカスカだ。「岩畳」とは道路ではなくて、河岸が石のカタマリになっているという意味なんだな。寝覚の床みたいな場所だ。近くまで行ったもののどこも有料駐車場なので降りずに雰囲気だけ楽しんで後にする。そのうち改めて訪れたい場所だな。

  秩父の町を抜けて先へ。以前から「三峰口」って不思議な終端駅だな、と思っていたのだが、神社への観光用の駅だったのだな。雰囲気のいい山岳道路を進み、国道140号を南ルートへ向かう。今回のメーンイベントは故駒ヶ滝隧道なのだ。手前の駐車場に駐めて周囲を散策する。隧道の入り口は塞がれていて、道路はごく普通に先に伸びているが、GoogleMapで事前にチェックしていた自分にはその道路がなかった頃の景色が重なって見える。ちょっと横から見ればだいぶ無理して作られた道路だということが見て取れる。うーん、この隧道は通ってみたかったなぁ。2013年に閉鎖じゃ、通るチャンスはなかったけれど。

  画像の説明 画像の説明

  さらに旧道を抜けて雁坂トンネルへ向かう。すごく立派なトンネルなのにほとんど交通量がない。青函トンネルを思い出させるな。手前のパーキングエリアでも「実は雁坂トンネルはお得!使って!」的なチラシを見かけたが、ETCも使えないし、なんか負け戦的なヤケクソを感じさせる。通ってみると何てことはない普通のトンネル。いや、線形が直線過ぎて半分くらいからもう出口の光が見えてしまうのは珍しいかもな。

  雁坂トンネルを抜けたところにある「道の駅みとみ」で小休止。まだ11時前だったので、先に進んでから飯にしようかと思ったが、6時過ぎに食ってるんだからちょっと早めでも悪くない。「ほうとう」を出す店もあるし、空いてるからここで食ってしまうか、と早い昼飯にすることにした。

  ここは「ほうとう」に「宝刀」という字を当てているが、これは諸説あるうちのひとつらしい。カッコイイけどカッコよすぎるなぁw。とか考えているとブツがきた。デカい。具も多い。が、普段から燃費の悪い生活をしている胃袋持ちなのでペロリである。特段の感動もなかったが、ウマかったな。

  その後は甲府を抜けるのだが新しいバイパスができていてスルリと通過。山道を楽しみつつ、富士の裾野を抜けていく。敢えて富士宮から狭めの峠道を抜けると、ストンと由比に着く。別に観光地でも何でもないのだが、由比も好きな場所なんだよな。

  残りの何度も通った道なので「大崩海岸」を通ってみようと思っていたのだが、経路のチェック不足もあり気づくと通り過ぎてしまっていた。1号って複数あるんだよな。まぁ、時間の都合もあったし、次回で。

  蒲郡ICは工事中のはず、と思って蒲郡西ICから乗ったのだが、既に工事は終わっていたようだ。19時前に帰宅。総走行距離770km。あー、今回も楽しかった。

  画像の説明