[OS]サーバに使うOS、デスクトップ環境のOS

[Under Construction] 主にWindows 95/NTとUNIXとを比較し、個人的な意見を述べています。まだ工事中です。

->FreeBSDを用いたX端末
->PC UNIX比較メモ


* はじめに

以下の文書は、私個人の意見です。結論は世間一般で言われている内容に近いところに落ち着いていますが、相違もあります。また、内容が古かったり、間違っているところがあるかもしれません。その点はご容赦下さい。

間違いに気づかれた方は、メールやアンケートにてお知らせ下さい。(このページの一番下のところを見て下さい。)

また「研究室で」と述べているのは、私の所属する研究室の事情です。東大は大きな大学で、たくさんの研究室があっていろいろな研究が行われているので、他の研究室では事情が異なる場合もあるでしょう。割り引いて読んでください。

* 言葉の説明: UNIX

この節の説明は次の記事を参考にしました。

齋藤 明紀、BSDをハックする(第1回)、UNIX MAGAZINE 1997年8月号

UNIXという言葉はいろいろな意味で使われます。UNIXは登録商標ですから、本当は登録商標のUNIX®の意味で使うべきでしょう。現在、あるOSがUNIXを名乗ってよいかどうかなどは、 Open Groupの管轄です。公式に UNIXを名乗れる(認定されている)OSは、 UNIX® System のページで調べることができます。 BSDやLinuxなどは、現在の基準ではUNIXではありません。

しかし実際には、UNIXという言葉は"UNIX族"の意味で用いられることが多いようです。すなわち、AT&Tベル研究所で作られたオペレーティング・システムUNIX version 1〜7th editionと、その子孫であるOS、および互換OSのことです。この意味では、BSDやLinuxもUNIX(UNIX族)のうちと言えます。私の文書の中でも、UNIXという言葉をこの意味で用いています。つまりBSDやLinuxも含めて"UNIX"と表現しています。

(一度、UNIX→UNIX族、と書き直したのですが、かえって分かりづらいと思い、元に戻しました。)

* 私の立場

率直に言ってUNIXに洗脳されています。大学に入ったのが、ちょうどSunが SPARCチップを載せたワークステーションを出し始めたころでした。大学の計算機センターに、新しいSun3(これは68Kマシンだった)が並んで、浅香唯のビットマップを表示していたのを今でも鮮明に覚えています。そのころにも大学でUNIXを使う機会はちょっとだけありました。しかしUNIXに関する実際の知識と興味は、自宅でMINIXを使って遊びながら得たものです。MINIXも数に入れると、すでに10年間UNIXを使ってきたことになります。

現在、所属する研究室で、UNIXワークステーション(主にSun)、およびWindows NTマシンの管理に関わっています。もちろん、本業は研究活動です。

* この文書の経緯

わけあってWindows NT (Server|Workstation)とUNIX(商用、フリーの両方) の機能を比較した雑誌記事や、ウェブページを調べた。多くの記事・ページでは、サーバとしてはUNIXのほうが優れている、と結論づけている。経験的に、これには賛成だ。さて、デスクトップ環境としてだが、これについての意見は分かれる。まず、デスクトップ環境としては、Windowsの方が優れている、という意見。あるいは、デスクトップ環境としても、UNIXはWindowsに劣らない (優れている)という記事もあった。ピントのずれた記事も結構あって、たとえば「デスクトップ環境での比較は意味がない。デスクトップとサーバで同じOS を使うのは、その方がOSがたくさん売れるから…」云々と続く。現実に机の上にあるパソコンで仕事をしようって人に、営業について語られても困る。知りたいのは、使えるか使えないかだ。その記事はLinuxの旗振り記事としか読めなかった。

デスクトップ環境について、私なりの比較を書こうと思い、日記のページ 「近況」に書き始めたのだが、いくら書いても書き足りない上、日記のページにはふさわしくないほど大きな文書になったので、ページを分けることにした。


* デスクトップ環境: 私の結論

以下は個人的な意見。

私の結論は、UNIXサーバ(「CPUサーバ」、定義は後述)が利用できる環境では、デスクトップ環境はWindowsの方が良いと思います。逆説的ですが、UNIX(とX ウィンドゥシステム)が非常に優れたネットワーク機能と接続性を有しているために、デスクトップ機のOSがUNIXである必要がないわけです。それなら Windowsを入れて、UNIXにはない利点を生かすほうがいい。(ただしXサーバソフトウェアがないと、アプリケーションによってはリモートマシンから使えない、または使いづらい。)なおマッキントッシュは、あまり使ったことがないので断言できませんが、UNIXの機能を補完するという意味で、Windowsと同じく、デスクトップ環境の選択肢になるはずです。

この結論は、ちょっと卑怯ですね。だって結局「両方使えばいいじゃん」と言っているに過ぎないから。上手に使い分けましょう、ってことです。

* 念のための補遺1: UNIXってサーバOSじゃないの?

サーバ用OSというわけではありません。サーバとして使うと優れた性能を発揮するので、サーバとして利用されることが多い、というだけです。デスクトップ環境としても利用されています。

ある外資系の証券会社の研究・分析部門を見学させていただいたことがあります。SunやHPなどのワークステーション(もちろんUNIX環境)が、ほとんどすべての机の上に置かれていました。一つの机に2、3台のワークステーションが乗っていることもあり、全部で数100台。もちろん、すべてデスクトップ環境として使われています。(サーバは別の部屋にあるそうです。)これは数年前の話なので、現在では事情は変わっている可能性がありますが、まぁとにかく、 UNIXをデスクトップ環境として利用するのは、珍しくも何ともない、普通のことです。

* 念のための補遺2: プログラミング環境とは

私は上の比較で、「プログラミング環境として比較すると、WindowsはUNIXにはまったくかなわない。」と述べました。これに対して、Visual開発環境などを例に挙げて「プログラミング環境はWindowsの方が優れている。UNIXの開発環境は、基本的にCUIじゃないか」という反論が予想されます。この点について、私の知識の範囲で、前もって論駁しておきます。

いちばん言いたいことは、最後の項目です。

商用UNIXには、Visualに相当する開発環境がある

たとえばSunの場合は、開発環境 Sun WorkShopが用意されています。私は使ったことがないので、どのような環境なのか存じません。

Linux、FreeBSDなどフリーのUNIXについては存じません。

わたしはこれらの「開発環境」は、UNIX上では不要だと考えます。理由は以下の通り。

UNIXでは、Visual開発環境が提供するよりももっと高度なプログラミング作業を、開発環境なしでできる

プログラミングとは、プログラムの(再)設計、ソースコードの作成や修正、コンパイル、実行(テスト)、デバッグの繰り返しです。プログラムの種類によっては、パフォーマンスの改善が入るかもしれません。さて、これらのすべての段階において、UNIXは必要十分なツールを提供しています。

フリーソフトウェアが云々という項目が多いのは、筆者がフリーソフトウェアの恩恵を享受しながら、プログラミングを行っているからです。しかし、フリーソフトウェアに頼らなくとも、上に述べたことはすべて出来ます。実際、私の所属する研究室では、Cコンパイラおよび商用のFORTRANコンパイラと、標準添付のエディタ(vi(1))だけで、多数のソフトウェアが開発され、利用されてきました。現在は良質のフリーソフトウェアをたくさん入手できるので、これを利用しない手はありません。が、必須ではない。

「開発環境」について補足します。単に複数のウィンドウが開いて、ソースコードを編集できるだけでよいのなら、UNIX上で可能です。一部の開発中のOSを除き、現在利用できるすべてのUNIXで出来る、と言ってよいでしょう。

Visual開発環境は、プロジェクトの管理やコンパイルオプションの指定(選択肢から選ぶ)など、いろいろやってくれます。Visualにも良いところはあるのは認めます。Visual開発環境で出来てUNIXの環境では出来ないことは、まったく無いと断言できますが、それを一揃いにまとめて、メニューから選べるようにしたところがポイントなんだと思います。

UNIXでは、プログラムを作らなくとも高度な作業が行える

いちばん言いたいことは、これです。 UNIXの優れた点として、標準のコマンド群が非常によくまとまっており、それを使うだけで多くの仕事をこなせる、ということが挙げられます。これは Windows 95/NTでは考えられません。たとえば、次のような仕事。

  1. 数値計算の結果のデータファイル(テキスト)の1列目と3列目、6列目を 取り出し、
  2. データのどれかが"NO"になっているデータを除外し、
  3. それを3列目の数値をキーに降順でソートし、
  4. 印刷する。

UNIXでこの仕事をするのは、一瞬で終わります。そう、10秒ぐらいですかね? こんなにかからないかな? 私はキーボードを打つのはそれほど速くないので… :-)。

% awk '{print $1,$3,$6}' data.txt | egrep -v "NO" | sort -nr +1 | lpr

解釈によっては、これもシェルを用いたプログラミングのうちに入ります。ポイントは、よくまとまった機能のコマンド群を複数組み合わせて、実にいろいろな機能を実現できる、という点です。

上の例はUNIXに都合のよい例でしたが、研究活動を行う上では、この例のような処理を頻繁に行います。実験データの加工と縮約などが、これにあたります。あとはファイル名をいっせいにつけ変えるとか、すべてのファイルを順番に処理するなど。(これはシェルの機能です。)

もちろん、頑張れば、このためのプログラムをVisual開発環境で作ることはできます :-P。でもそんなことしたくないよね。だって開発環境を起動して、 "Microsoft Visual Studio"のロゴ画面が消える頃には、UNIXならもう仕事が終わってるんだもん。あるいは最初の例のような仕事は、Excelなどの表計算ソフトを持ち出して来るのが筋なのでしょうが、ま、起動した頃には仕事が終わってる、という点はいっしょです。

* 私個人の環境

研究室では、私の机の上にマシンを置かせてもらってます。ぜいたくですね。個人の机がある、というのもぜいたくかな。マシンは、Windows95が動くPCです。これにXサーバソフトウェアを入れ、ここからUNIXマシンにリモートログインし、Emacsなどを使って仕事をします。この文書もそうやって書いています。プレゼンテーションの資料(OHPなど)はMS PowerPointやAdobe Illustratorのお世話になっています。OSを入れ替える予定はありません。

なお、あの悪名高いMS Internet Explorer 4.0 SP1を使っています。これは少なくとも1日に1回はおかしくなり、再起動させられますが、もう慣れました。ハードディスクを吹っ飛ばされたことは、まだありません。(セキュリティに不安があるらしいですね。ディスクの中身を盗み見られてるかも? やばいなぁ、画像ファイルから女の子の好みがばれちゃう ^^;;)

自宅では、やはりWindows95が動くPCを使っています。実はFreeBSDも入っているのですが、メインアプリケーションがゲームなので(^^;;)Windowsの方ばかりをひいきにしています。


* サーバ: 私の結論

結論から述べると、ほとんどすべての目的において、Windows NT ServerよりもUNIXのほうが優れていると感じています。もはやこれは常識と言っていいでしょう。

サーバというものについて、あまり詳しくない方のために、ここから下の部分で簡単な説明をします。なお、誤解を避けるために、 UNIXってサーバOSじゃないの?の節もご覧下さい。

* サーバの分類

ひとくちに「サーバ」というと、サーバソフトウェアを指す場合もありますが、ここでは"サーバマシン"の意味で使っています。この言葉が曖昧だと気づかずに書いた古い文書も、まだこのページに残っていますが、順次改訂していきます。

"サーバマシン"を3つに分類してみます。OSやマシンの差異を論じている文脈中では、単に"サーバマシン"というと、下の分類の1か2の意味で使われているようです。

  1. 対外的ネットワーク(インターネット)サーバ: DNS, SMTP, HTTP
  2. サイト内ネットワーク(イントラネット?)サーバ: ネームサービス(NIS など)、ファイルサーバ(NFS, Sambaなど)、データベースサーバ
  3. CPUサーバ: 計算能力を提供する(数値計算だけではなく、要するにプ ロセスを実行させる能力のこと)。データベースサーバは、こっちに入 れた方が良いかな。

「CPUサーバ」という表現は、CPUがたくさんあるマシン(CPUラック)を指して使われることもよくあり、そちらの方が普通かもしれません。ここではもっと普遍的に、計算能力を提供するマシン、という意味で使っています。

またこのページの上の方で出てくる「Xサーバ(ソフトウェア)」は、この分類とは毛色の違うものです。これもソフトウェアの呼称です。詳しくは説明しませんが、Xウィンドゥシステムは、画面の表示機能を担当する"サーバ"と、これを利用していろいろな機能を提供するプログラム群"クライアント"からなります。"サーバ"は"クライアント"とは異なるマシンで動かすことができるため、 Windows用やMac用のXサーバソフトウェアも数種類あります。

ネットワークサービスの提供

まず、ネットワークサービスについてですが、SMTP、HTTPなどネットワークサーバとしての性能が、UNIXの方がWindows NT Serverよりもずっと優れていることは、もはや常識です。詳しくは以下のリンク集から、適当なページをたどって、ご覧になって下さい。

-> Windows NT Serverと UNIXとの比較
(「水先案内」のページ内)

調べれば調べるほど、Windows NTをネットワーク関連のサーバにするのはやめておこう、という気になります。特にWindows NTのDNSには、苦労している人が多いようですね。

CPUサーバ: 処理能力の提供

我々の研究活動においては、プログラムを組んで実行するなどを行うため、3 番目のCPUサーバとしての利用がメインです。エディタを使うこともCPUを食うわけですから。さて、CPUサーバとして利用できるのは、リモートログインできるOSですから、Windows NTは基本的には選択肢からはずれます。常識的には UNIXを使うことになるでしょう。(スーパーコンピュータや汎用機という選択肢もあります。)

Plan 9: 分類に影響を受けたOS

Plan 9は分散オペレーティングシステムです。私はPlan 9を本格的に利用したことはありませんが、その考え方は参考になります。サーバの分類のしかたは、一部Plan 9 の考え方を拝借しています。

ちょっと脱線: アプリケーションサーバって何?

最近「アプリケーションサーバ」という言葉をよく聞くようになりました。以前はこの言葉は、アプリケーションプログラムのファイルを提供するファイルサーバマシンの意味で使われることが多かったように感じますが、最近では ウェブアプリケーションを動かすためのサーバソフトウェア、その中でも特にサーバ側Java技術(Servlet)を利用するサーバソフトウェアの意味 で使われることが多いようです。つまり現時点では、マシンの分類ではなく、ソフトウェアの呼称として使われるようです。

-> アプリケーションサーバー


* 私の管理経験

* UNIX

現在管理しているのは、Sunワークステーション(Solaris 2.6、SunOS 4.1.4) と、PC UNIXであるFreeBSD 2.2-STABLEです。以前はRISC/osや純SVR4も管理していました。

これらのマシンで、SMTPおよびPOP3(メール), HTTP(ウェブ), NIS, NFS, Sambaなどの各ネットワークサービスを提供しているほか、CPUサーバとしての処理能力を提供しています。CPUサーバは、こう書くとかっこいいですが、要するに「ログインできるUNIX」のことなので、利用者アカウントを作るとか、ネットワークアクセスを制限するなどの基本的な管理をしているだけのことです。DNSのサーバおよびHTTP/NNTP代理サーバ(proxy server)の管理にも、ごく短い期間だけ関わりました。

UNIXは非常に安定していますが、それでもSunワークステーションの方は、1年に1度ほど凍り付くことがあり、再起動させられます。それのせいでファイルが失われたり、OSが飛んだりしたことはありません。FreeBSDマシンの方は非常に安定していて、管理者のミスを除き、まだトラブルを起こしたことがありません。

* Windows NT 4.0

Windows NT Workstation2台(Alphaマシン)の管理に関わっています。最近、NT Server(PC)もわけあって導入しました。NTの管理に関しては、共同で管理をしている松沢君が私よりも詳しいので、彼に頼っている面が大きい。とはいえ基本的な管理作業は、もちろん行っていますし、トラブルに見舞われて再インストールした経験も数回あります。(ええと、3回かな?)

こう書くと悪い印象を与えますが、実際にトラブルに見舞われたことは、その再インストールも含めて、数回です。UNIXワークステーションのトラブルが1 年に1回程度の割合なのと較べれば、ずっと多いのは事実ですが、クライアントとして使うぶんには、さほど問題ありません。何せWindows95やMacintoshもクライアントとして使っているんですから、それに較べればずっとましです。

いわゆる「サーバ」としての仕事は、Windowsの世界に特有の「ドメイン」のコントローラだけをさせています。ネットワークドメインでもNISドメインでもなく、Windowsのドメインです。それ以外のサーバ仕事はさせていませんし、今後させることもないでしょう。

SP4(サービスパック4)にはやられました。MSのやり方が、そして私がいかに甘かったかが、身に染みました。次からは安易にサービスパックを入れたりしません。あ、でも、上の"再インストール"はこれとは関係ありません。

Windows NT 4.0の擁護: GUIによる管理について

GUIによる管理は賛否両論だが、どちらかというと非難を聞く機会の方が多い。特にUNIX好きの人からは非難が多い。でも、あれはそれほど悪くない。たとえばドメインに利用者を追加するときは、ドメインユーザーマネージャなるツールでヒョイヒョイと設定できる。特にパスワードの期限を簡単に設定できるのがうれしい。フォルダの「共有」の設定も楽ちんだ。

ただしこれらは「うまく動いているうちは」の話だ。何せやつはトラブルメーカーなのだ。私とWindows NTとの付き合いは、UNIXとの付き合いよりはるかに短いが、OSが飛んで動かなくなる経験は、NTの方がずっと多い。そして、トラブルが発生したときには、GUIは何の役にも立たないのだ。ついでにつけ加えると、いわゆるリモート管理はお手上げだ。私の意見では、GUIが悪いのではなく、GUI「しかない」のが問題だと思う。

MSに要望

Windows NTを、NT-currentとNT-stableの2つのリリースエンジニアリングに分けてくれませんか? ^^;; 今より多少はましになると思うんだけど。

FreeBSDならcurrent→stableに機能が取り込まれるんだけど、NTだと逆かもしれないなぁ。Windows 2000はもちろんcurrentブランチになるよね。MSが「しばらくは手をださないほうが良い」ってアナウンスするかな? するわけ無いか… ^^;;。

* Windows95, Macintosh

Windows95マシンは、当研究室にたくさんあります。研究室の共同マシンに関しては、日常管理はまったく行っていません。使いたい人が勝手に使ってくれ、トラブルには対処しないというスタンスです。 Windows98は導入していません。管理の都合から、OSをWindows NTに入れ替えつつあります。

MacintoshはWindows95のマシンと同じぐらいあり、クライアントとして使われています。こちらはWindowsマシン以上に手をかけておらず、ほとんどまったくメンテナンスされていません。私はマッキントッシュのことは、ほとんど知りません。

* 「研究室」の事情

企業のサーバの場合には、おそらく「このシステムが止まったら、1日あたり○×億円の損失が出る」といった経常利益の算出が行われているでしょう。性能面でも、たとえばウェブサーバなら1日あたり○△アクセスを捌ける必要がある、などの要件が、漠然とであっても決められていると思います。これに対し、大学の研究室では、経常利益の算出はもちろんしていませんし、捌けるアクセス数の下限も決まっていません。ウェブサーバを立ち上げる必然性すらない。

我々が運用しているサーバの場合には、このシステムが止まったら、あるいはファイルシステムがこけたら「○×君が論文を出せないから卒業できない」というのが最大の損失です。これは怖い。たまらなく怖い。考えただけでぞっとする。しかし論文提出の直前でなければ、システムが1日止まっても、研究活動の大きな妨げにならないし、みんなも理解を示してくれる。(とはいえ2日以上も止まるようでは、研究活動が出来ないわけですから、管理者はつらい立場に立たされます。)というわけで、怖いシチュエーションは、次のような場合。 (地震、雷、火事などの災害はとりあえず無視する。)

対処その1: ハードウェアの破損

ワークステーション自体が故障した場合には、それがディスクサーバでないなら、問題になりません。ディスクサーバだった場合、そのディスクを他のワークステーションに接続し、最低限の設定を行うだけで、環境を復旧できるようになっています。これは何も特殊な設定ではありません。ファイルサーバ名を NISの別名にしておくなど、多少の工夫をしてはいますが、本質的にはOSが UNIXならば、どのワークステーションでも行えることです。

ハードディスクが破損した場合には、とにかくどこかからSCSIハードディスクを都合してきて、ワークステーションに接続し、フォーマットして利用します。かわりのディスクとしては、ワークステーション用として売られているハードディスクである必要はなく、生協で山積みで売られているLogitechのハードディスクで充分です。少なくともSolarisの場合、SCSIハードディスクならまず間違いなく接続でき、利用可能ですから、とにかくすぐに手に入ることが最重要です。

対処その2: 利用者ファイルの消失

各利用者のファイルに関しては、基本的には個人の責任においてバックアップを取っておく、という方針にしてあります。ただし、管理者も不定期にバックアップを取ります。


* 参考

各ページにリンク集を設けるのは、無駄だと感じ始めました。リンク集のページ「水先案内」にリンクを集約しようと考えています。そちらをご覧下さい。このページに関連する話題は、次の節にまとめてあります。

-> OSとその周辺
(「水先案内」のページ内)

PC UNIXに関連して自分で調べた情報は、このページではなく、別のページにまとめました。下のリンクをたどってご覧下さい。

-> PC UNIX比較メモ


<- トップページ
工学院大学機械工学科流体研

リンクはご自由に。でもメールをくれると嬉しいな。

金野 祥久  konno@researchers.jp

Last modified: Wed Mar 29 11:07:37 JST 2000