Skip to content

MS_WindowsOSDesignPhilosophy

nishi_74322014 edited this page Aug 3, 2026 · 1 revision

Windows OSの設計思想

概要

  • Windows OSの設計思想
  • Linuxと対比してみると面白いかも。

GUIのクライアントOS

Windows OSのオペレーションはGUI中心であり、

  • 初心者に対してフレンドリであり、
  • 且つアドホックな操作に強い

と言う特性があります。

クライアントOS -> GUI

これは、Windows OSが元々クライアントOSとして設計されたためと考えます。

  • この設計指針によって、WindowsはクライアントOSのトップシェアを獲得した。
  • 故にWindows OSは、ワークステーションには向いてない(そもそもそう作られてない)(リモートデスクトップサービス(旧ターミナルサービス): MS_RemoteDesktopServices.md

サーバーOS -> CUI

逆にインタラクティブ・シェル、シェル・スクリプト的な役割を担う CMDBATの機能は弱く、

後年、WSH(VBScript(MS_VBS.md)、JScript)や PowerShell、WSL(Windows Subsystem for Linux: MS_WSL.md)、Windows Terminalが実装されました。

PCサーバの普及

しかし、時代は流れ、Windows、Linux等の
PCサーバが企業の基幹システムに食い込むようになってきました。

  • Linuxは、元々企業の基幹システムで利用されていたUNIX系OS
    (UNIXの仕様に似ている、UNIX参考にして作られた)であるため、
    PCサーバだからと言ってインフラSEに対する大きな影響はありませんでしたが、
  • Windowsは、元々クライアントOSとして設計されており、使い勝手が異なるようで、
    Linuxをメインに扱うインフラSEやプログラマからは評判が悪いように思います。

各種 違い

機能の違い

Windows

エンドユーザ向け。

  • オールインワンで高機能
  • クライアントOS自体でサーバOSまでサポート。

Linux

プロ仕様。

  • POSIXは、カーネルに対するC言語用のインターフェイスという感じで低レイヤ
  • Linux上での開発は、必要な開発用のライブラリを自分で探してもってくる文化。

認証系の違い

Active Directory

Active Directoryと密に連携している点が大きく異なると思います。

アカウント

上記に関連して、アカウント系が違います。

設定方法の違い

GUI経由の設定により、設定値が何処に反映されるかもわからないため、
システム設定の自動化、差分確認、システムの複製、バックアップ・リストア
などがUNIX/Linux系のOSと比べ、対応し難いと言う点が上げられます。

  • UNIX/Linux系OSでのOS、サービス、アプリケーションの設定は
    /etc/home/user/ 以下のファイルに保存され、設定の仕様も、manページに記載されている。
  • これに対し、Windows OSでのOS、サービス、アプリケーションの設定は
    基本的にレジストリに保存されるが、設定はレジストリだけとは限らないこと、
    設定仕様のマニュアル化、レジストリ直接編集がサポートされていないケースがある。

このため、Microsoftも、

の等のCUIを用意(整備)し続けていますが、

  • 用意されていないものがあったり、
  • CUIを探すのに苦労するものがあったり、

...などが、一部あるようです。

なお、Windows OSは、OSバージョンアップに伴い、
設定仕様(保存先)も変更されることが多いですが、
CUIのインターフェイス変更は比較的少なく安定しているようです。

補足(最新化): 現在は、Windows 側でも構成管理を宣言的に扱う仕組みが整備されている。

  • PowerShell DSC / Microsoft Intune の構成プロファイル
  • Windows Admin Center(GUI 操作を PowerShell に落とし込める)
  • コンテナ(Windows コンテナ)による「設定ごと持ち運ぶ」アプローチ

それでもレジストリ中心という構造自体は変わっていないため、本ページの指摘は概ね有効。

自動パラメタ

(Windows 自動パラメタとチューニング: MS_WindowsAutoTuning.md

設定方法の違いの影響

設定方法の違いによって、

  • システム設定の自動化
  • システム設定の差分確認
  • システムの複製
  • システムのバックアップ・リストア

に違いが生まれます。

システム設定

  • 自動化
  • 差分確認

共に、CUIを使用して設定値を設定・取得する必要があります。

自動化

レジストリ直接編集がサポートされていないケースがある。

差分確認

過去にレジストリ・ダンプによる設定の差分確認も試みてみましたが、
半年運用したら、レジストリDUMPのDIFFは8割程度が異なる結果となりました。

レジストリには、自動パラメタなどの情報も格納されるため、
レジストリキーで範囲を絞らないDUMP&DIFFによる差分確認は困難です。

システムの複製

  • Windowsでは Sysprep が必要です。
  • Linuxではマニュアル操作になります。

参考

  • Sysprep - Wikipedia

    • コンピュータ名の再生成
    • 一意なSIDの再生成
    • カスタムドライバキャッシュデータベースの生成
    • mini-setup または OOBE (Out of Box Experience)の再実行
  • 蒼の王座 » AzureのVirtual MachineでLinuxの調査と検証メモ

    Linuxのイメージを作成するには、Windowsの Sysprep 的な処理を実行する必要があります。
    Linuxでは、Windows Azure Linux Agentが、その機能を提供しています。

システムのバックアップ・リストア

レジストリ、その他のストレージに保存される設定がマニュアルに記載されていないため、
/etc/home/user/ 以下のバックアップ・リストアで済むUNIX/Linux系OSと大きく異なります。

ただし、アプリケーションによっては、/etc/home/user/ 以下以外の
バックアップ・リストアが必要になるケースもあると考えられるので、
その辺りは、バックアップ対象アプリケーションの仕組みを理解した上で
バックアップ・リストア設計を行う必要があるということに大きな違いは無いと考えます。

  • IIS(MS_IIS.md)で言えば、メタベース
    • MetaBase.xml
    • IIS7からapplicationHost.configに変更
  • SQL Server(MS_SQLServer.md)で言えば、システム・データベース
    • master データベース
    • msdb データベース
    • model データベース
    • Resource データベース
    • tempdb データベース
  • Active Directoryで言えば
    • NTDS
    • SYSVOL
  • .NETで言えば、*.config ファイル(.NET config: MS_DotNetConfig.md
    • Machine.config
    • Web.config
    • *.exe.config(app.config)

参考

サポートの考え方

  • Windows OSは、Level 200 の利用者をターゲットにOSをコモディティ化しているため、
    日式メーカ企業の様な、ミッション・クリティカルなシステムに対象を絞った
    ニッチなサポートがあれば利用可能と思われる範囲内の利用方法であっても、
    (サポートポリシーに反するため)Microsoftからはサポートを得られないケースがあります。

  • 平たく言って、

    Microsoftのサポートポリシーに反する使い方はサポートされない。

    と言うことになります。

参考

  • Microsoft Tech·Ed Japan 2010 - 見どころとセッション レベル

    • Level 200
      受講いただいた方がテーマの製品やテクノロジの全貌、
      備わった機能を把握し、提案ができるようになることを目指したレベル
    • Level 400
      受講いただいた方がプロジェクト リーダーやテクニカル リードとしてテーマの製品やテクノロジの
      活用の勘所をプロジェクト メンバーや部下、外部発注先に指導できることを目指したレベル
  • Sysprep のサポート

    特定のサーバーの役割が構成された Windows Server 2008 R2 インストールに対し、
    /generalize オプションを使用して sysprep コマンドを実行すると、
    イメージングおよび展開の後にそれらのサーバの役割が機能しなくなる可能性が
    あります(/generalize オプションにより、SID重複解消とドライバ削除が可能)。

移行メモ(誤記): 原文の「SDI重複解消」は「SID 重複解消」の誤記と解して整えた。

参考

@IT

  • 「Linuxの真実、Windowsの真実」は虚実。 - @ITクラブ Cafe
  • Linuxの真実、Windowsの真実(全11回)
    • イントロダクション:LinuxとWindows。その本当のコストとリスクを評価するために
    • 第1回:ファイル/プリント・サーバの基本機能比較
    • 第2回:ネットワーク管理に不可欠なディレクトリ・サービス
    • 第3回:Linuxファイル・サーバの本当のTCO
    • 第4回:LinuxはWindowsより安全か?
    • 第5回:Office互換ソフトの実力とリスク
    • 第6回:Webサーバ・プラットフォームとしてのLinuxとWindows
    • 第7回:WebホスティングはUNIX/Linuxの独壇場か?
    • 第8回:Linux+フリーJavaは安いのか?
    • 第9回:可用性、スケーラビリティを備えたシステム開発
    • 第10・11回:座談会:SIerから見たLinuxとWindows(前後編)

Wikipedia

開発基盤部会 Wiki


Tags: Windows, Linux

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally