カテゴリー: 技術系

  • windows 2000 のADに windows 2008 R2 のADを追加するときにハマったポイント

    参考:AD2000からAD2008にアップグレードする手順

    1. Windows 2000のActive Directoryでドメインの機能レベルを「Windows 2000 Serverネイティブ」以上にする
    2. FSMOの機能をもったWindows 2000 Server上で、adprepを実行する
      1. 最初にフォレストのスキーマを拡張する。「adprep32.exe /forestprep」を実行
      2. 次にドメインのスキーマを拡張する。「adprep32.exe /domainprep」を実行
      3. 最後にリードオンリードメインコントローラ用にスキーマを拡張する。「adprep32.exe /rodcprep」を実行する
    3. Windows Server 2008 R2をドメインコントローラとして追加する
    4. FSMOマスタをWindows Server 2008 R2のADに転送する
    5. Windows 2000 Server のADを降格する
    6. 最後に必要に応じて、機能レベルを上げる

    adprepの実行でハマったこと

    以下のエラーだけ吐き出され、ハマり半日ハマり続けた。

    ---抜粋---
    [状態/結果]
    Adprep には、この操作を完了するために、スキーマ マスターから既存のフォレスト全体の情報へのアクセスが必要です。
    ---抜粋---
    

    他のエラーログも見たが、役にたちそうなものはなく、手探りで行っていくしかなかった。半日で解決できて良かったとも言える。adprepの実行でエラーが発生した場合は、以下のことを試すとよいだろう。(これは自分の失敗をまとめたもの)

    必ず、2008R2のインストールDVDをマウントして、adprep32.exeを実行すること。

    • adprepは、Windows Server 2008 R2のインストールディスクに格納されている。 このとき、”\support\adprep\adprep32.exe”だけ、コピーしても動作しない。 実行後、メッセージもなくすぐに終了するだけである。
    • adprepを、フォルダごとコピーした場合は、一見動くようにみえるが、何かが足りないらしく正常に動作しない。

    コマンドの実行は、コンソールから行うこと。

    • Windows 2000 serverにリモートデスクトップで(RDC経由で)アクセスし、コマンドを実行したが、アクセス権がないといわれる。
    • リモートデスクトップでアクセスした場合は、ログインに使っているユーザにドメインの管理権限があっても、スキーマの拡張権限がない振る舞いになった。コンソールから実行すれば、問題ないので、リモートデスクトップは使わない。

    幽霊のドメインコントローラは、しっかりと削除する

    • 以前にドメインコントローラの入れ替えや障害があり、ドメインコントローラの削除を行っている場合、ディレクトリ上にゴミが残っていることがある。
    • ADの一覧には表示されていないが、「ユーザとコンピュータ」以下にあるドメインコントローラに残っているなど。
    • 残っている場合には、アップグレード時に通信の確認を行おうとして失敗し、処理が止まるので、幽霊ドメインコントローラを見つけて削除する。

    マイクロソフトの移行ガイドを信用しない

    • これが一番、重要かもしれない。
    • 移行ガイドを実行すると、実行するコマンドに漏れがあったり、注意事項が書いていないため、失敗の原因になる。便利かと思ったが、信用してはいけなかった。

    adprep32.exeの実行中に、Enterキーなどのキーをたたかない。

    • Windows 2000 Serverのスペックに影響するのか、実行中に動作しているのかいないのかよくわからないときがある。この時にEnterキーを押すと、 busyのエラーが発生し、処理が強制終了してしまう。
    • スペック以外の原因はないため、adprep32.exeの実行後は終了するまで放置するとよい。結構時間がかかるので、コーヒーを飲むなどのブレイクにあてる。
  • メモ:WindowsのDNSサーバ機能を調べるのに役に立ちそうなURL

    Windows ServerのDNS機能は、なぜか資料が少ない。ネットを検索しても、ほしい情報はなかなか見つからない。油断すると、また最初から探してしまいそうなので見つけたURLをメモする。

    windows serverのDNSサーバ機能は、基本的にGUIで操作なので弄っているだけで設定できてしまったりもする。既に構築されているものだったら、比較的簡単に操作できるのけど、ちょっと凝ったことや別のサーバからDNSサーバを切り替えたりしようと考えると資料が少ない。今回調べているのは、そこら編の凝ったこと。調べていって、ある程度成果が出たら公開するつもりだ。(可能なら・・・だけど。)

  • IPv4アドレスの在庫終了。

    あっちこっちに書かれているが、備忘録として。

    IANAが持っていたIPv4のIPアドレスの在庫がついにつきた。のこりは、5ブロックのみで、各地域のNICに1ブロックづつ割り当てが決まっているそうなので、事実の配布終了と言っていいだろう。最後の2ブロックはAPNICに割り当てられている。アジア地域のインターネットの普及を考えると、簡単に分配がおわってしまうだろう。でも、このニュースは一般的なニュースとして取り上げられていない。かなり重要なことだと個人的には思っているが、世間は関係ないようだ。今では、iPhoneにもIPアドレスがついているというのに。秘匿されているから、一般の人は気にしていないからだろう。これからは、IPv6の時代になっていくのだろう(と信じたい)。

    企業や家庭はプライベートIPアドレスとNATで逃げられるから、危機感なぞないのかもしれないな。

  • メモ:scpでディレクトリをコピーする。

    scpで、ディレクトリを含むファイルをコピーするには “-r” を指定する。

     scp -r directory zen@www.xenon.jp:/home/
    

    WinscpなどのGUIツールばかり使っていると、scpコマンドの使い方を忘れてしまった。

  • zabbix 1.6.8 から 1.8.3にアップデートしたときに発生したエラーの回避方法

    yum を使って、プログラム自体は、1.8.3に簡単にアップデートすることができた。その後のDB(MySQL)へのパッチでエラーが発生した。このエラーを回避する方法を探すのに、ちょっと手間取ったので書いておく。

    発生したエラー

     [root@your-0bb7513658 mysql]# mysql -u root zabbix < /usr/share/doc/zabbix-server-1.8.3/db
     patches/1.8/mysql/patch.sql
     ERROR 1061 (42000) at line 1: Duplicate key name 'actions_1'
    

    対応方法

    先にIndexを削除する。MySQLでZabbixのデータベースに対して以下のコマンドを入力する。

     alter table dhosts drop index dhosts_1;
     alter table dservices drop index dservices_1;
     alter table httptest drop index httptest_2;
     alter table httptest drop index httptest_3;
     alter table history_log drop index history_log_2;
     alter table history_text drop index history_text_2;
     alter table actions drop index actions_1;
     alter table escalations drop index escalations_2;
     alter table graphs_items drop index graphs_items_1;
     alter table graphs_items drop index graphs_items_2;
     alter table services drop index services_1; 
    

    参考:http://www.zabbix.com/documentation/1.8/manual/installation/upgrading

    Index削除後に、もう一度、patch.sqlを当ててやれば、今度は成功する。このパッチは時間がかかるので要注意。

  • Macで半角カタカナ入力ができなくて困った。

    Mac OS X 10.6 で半角カタカナを入力しようとしたところ、入力できなくて困った。

    普通であれば、F8や “Ctrl+;”の入力で、半角カタカナに変換できるはず。そう、それを入力しても、なぜか半角の英数字になってしまう現象になやまされた。結構、長いじかんを使ってやっと問題の原因を発見した。

    もし、半角英数字にしか変換できない場合は、以下の設定を試してほしい。

    1. 左上のことえりのアイコンをクリックし、言語とテキストを開く。
    2. 次に、入力ソースのタブをクリック。
    3. ”ことえり”の中にある”半角カタカナ”にチェックが入っていなければ、チェックを入れる。
    4. チェックを入れた後は閉じる。

    これで、ことえりで半角カタカナの入力が選べるようになる。もしくは、F8キーで半角カタカナに変換できるようになる。解ってしまえば、簡単なのだが、普段使わない半角カタカナの敷居は高かった。F8キーを押しても半角カタカナに変換できない人は試してほしい。

    普段は使わないけれど、いざ使うことになると変換ってできないものだ。個人的には、半角カタカナは撲滅したいけれど、銀行とかがあるからな。。。

  • tweetnestのアーカイブを日本語(2byte文字)対応させる

    tweetnestでつぶやきをアーカイブしていたのだが、長いつぶやきのアーカイブが途中で切れていた。いろいろと調べてみると、ある一定の文字数を超えると、途中できれたり化けたりしていた。

    原因を探ってみると、tweetnestでつぶやきを格納しているDBの絡むがvarchar(255)で設定されていた。varchar(255)だと、日本語で140文字も格納できない。そのため、途中でデータが切れていたようである。他のカラムの設定を見てみると、text型で設定されているところもあるので、少々アバウトだが、対象のカラムをtext型に変換してみた。変換に使ったSQL文は以下。

    mysql> alter table tn_tweets modify text text not null;
    

    これで拡張は終了。次のつぶやき取得から、日本語で140文字あってもちゃんとアーカイブされる。

    おまけ。
    通しで作業をするとこんな感じ。

    mysql> use tweetnest;
    mysql> desc tn_tweets;
    +--------------+---------------------+------+-----+---------+----------------+
    | Field        | Type                | Null | Key | Default | Extra          |
    +--------------+---------------------+------+-----+---------+----------------+
    | id           | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
    | userid       | int(10) unsigned    | NO   |     |         |                |
    | tweetid      | bigint(20) unsigned | NO   |     |         |                |
    | type         | tinyint(4)          | NO   |     | 0       |                |
    | time         | int(10) unsigned    | NO   |     |         |                |
    | text         | varchar(255)        | NO   | MUL |         |                |
    | source       | varchar(255)        | NO   |     |         |                |
    | favorite     | tinyint(4)          | NO   |     | 0       |                |
    | extra        | text                | NO   |     |         |                |
    | coordinates  | text                | NO   |     |         |                |
    | geo          | text                | NO   |     |         |                |
    | place        | text                | NO   |     |         |                |
    | contributors | text                | NO   |     |         |                |
    +--------------+---------------------+------+-----+---------+----------------+
    13 rows in set (0.07 sec)
    
    mysql> alter table tn_tweets modify text text not null;
    Query OK, 1287 rows affected (0.28 sec)
    Records: 1287  Duplicates: 0  Warnings: 0
    
    mysql> desc tn_tweets;
    +--------------+---------------------+------+-----+---------+----------------+
    | Field        | Type                | Null | Key | Default | Extra          |
    +--------------+---------------------+------+-----+---------+----------------+
    | id           | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
    | userid       | int(10) unsigned    | NO   |     |         |                |
    | tweetid      | bigint(20) unsigned | NO   |     |         |                |
    | type         | tinyint(4)          | NO   |     | 0       |                |
    | time         | int(10) unsigned    | NO   |     |         |                |
    | text         | text                | NO   | MUL |         |                |
    | source       | varchar(255)        | NO   |     |         |                |
    | favorite     | tinyint(4)          | NO   |     | 0       |                |
    | extra        | text                | NO   |     |         |                |
    | coordinates  | text                | NO   |     |         |                |
    | geo          | text                | NO   |     |         |                |
    | place        | text                | NO   |     |         |                |
    | contributors | text                | NO   |     |         |                |
    +--------------+---------------------+------+-----+---------+----------------+
    13 rows in set (0.00 sec)
    
    mysql>
    

  • ガルーン3のインストールでつまづいたところ

    ガルーン3のインストールをしてみたのだが、ちょっとだけ躓いたところがあった。
    また、躓かないようにメモ。

    環境は、CentOS 5.5 の32bit版。
    Apacheは、OSセットアップ時にインストール。
    めんどくさいので、GUIは入れていない。

    selinuxは、disableにする。
    selinuxが有効になっている場合、インストール後にcgiの実行でエラーになる。
    そのとき、ブラウザ上では訳の分からない文字列で埋め尽くされる。
    ApacheのErrorログには、ライブラリの1つで実行できないエラーが出ている。

    インストール後の初期設定がタイムアウトして、中途半端に終わってしまう。
    インストール後の初期設定では、disk i/o の負荷が高いようだ。
    インストール先のHDDのアクセスが遅いとか、iptablesなどを有効にしていて
    通信関連で時間がかかっていると、途中でエラーになる。
    この状態でエラーになると、先に進めないので、ガルーンを一度アンインストールする必要がある。

    おまけ。
    ガルーン3のインストール後のセットアップがうまくいかなくて、
    5回くらい再インストールをしていたら、アンインストールに失敗。
    関連するファイルとディレクトリをマニュアルのファイル展開場所を参考に削除したが、
    どこかにゴミが残っているようで、その次のインストールで失敗した。

    インストールで安全なのは、selinuxは無効にして、iptablesなどのセキュリティ系も停止しておく。
    これをやると簡単にインストールとインストール後の設定が終わる。
    selinuxが悪いのか、garoon3の作りが悪いのか。
    おまじないと思って、selinuxを切るのが一番だろう。

  • Hyper-V環境でのWindows Server ライセンス

    解説しているページへのリンク。

    Hyper-V環境でのMicrosoft Windows Serverライセンスの仕組みとは?
    http://techtarget.itmedia.co.jp/tt/news/1009/09/news02.html

    もっとシンプルなんだけど、解説か日本語訳かのどちらかが悪い。
    マイクロソフト用語が多すぎるので、混乱する・・・。
    簡単どころか、余計に混乱するような感じ。

    簡単に行ってしまえば、Windows Server 2008 R2を買ったとして、
    ベースとなるWindows Server 2008 R2をインストールする。
    これで、実は1ライセンス消費。
    でも、このWindowsの上に、Hyper-Vをインストールして、
    ゲストOSとして同じくWindows Server 2008 R2をインストールする。
    この場合、Windows ライセンスはゲストOSが消費し、
    ベースのWindows Server 2008 R2からはライセンスが消えるのだが、
    ホストになっている場合はライセンスを消費しないという仕組みなので
    ライセンス違反にはならない。

    だが・・・
    ゲストOSを別のHyper-Vに移動させると
    ホスト側のOSにもライセンスが必要になってしまう。
    なんとも分かりにくい。

    元の解説は、いまいちイケテナイね。

  • memo:SQL Server 2005の勉強に役立つページ

    マイクロソフトの製品には、自習書というものが公開されていることがある。この自習書の内容が、実環境に近い形で説明されているので、自分でやりたいことや困っていることにマッチする可能性が高くて便利。だが、ざっくりとしたキーワードだと、なぜかGoogleの検索上位にはこない。Bingだと、上位にくるので発見しやすくて良いのだが。

    SQL Server 2005の自習書:http://technet.microsoft.com/ja-jp/sqlserver/cc721623.aspx

    バックアップ/リストアの自習書やSQLCMD(コマンドラインでSQL Serverにアクセスするコマンド)の使い方もあり、入門書が手元にない場合などに便利に使える。マイクロソフトの自習環境もつかえるので、勉強するのにも役に立つので良い。こういうページの情報はすぐに忘れるので、自分のためにメモ。