クライアントWindowsのファイル共有は最大10ユーザーまで:Tech TIPS
クライアントOSでもファイルやフォルダ、プリンタなどを公開して、ファイル・サーバとして利用できる。ただし最大でも同時に10ユーザー(Windows 7の場合は20ユーザー)までしか利用できないという制限がある。サーバ側のタイムアウトを短くすれば、ほかのユーザーが利用できる可能性が高くなる。
対象OS:Windows 2000 Professional/Windows XP/Windows Vista/Windows 7
解説
Windows OSでは、サーバOSでなくてもファイル共有(公開)機能(ファイル・サーバ機能)を持っている。そのため、Windows XPやWindows 7のようなクライアント向けOSであってもファイルやプリンタなどを公開して、ほかのコンピュータからアクセスできる。
サーバOSのファイル・サーバ機能とクライアントOSのファイル・サーバ機能にはいくつか違いがあるが、なかでも大きな違いは、同時に利用可能なユーザー数の制限である。本TIPSでは、この制限事項についてまとめておく。
Windows Server 2003やWindows Server 2008 R2のようなサーバOSのファイル・サーバ機能では、ライセンスのことを別にすると、技術的には事実上無制限にユーザーが接続できる(現実の制限は、例えばWindows Server 2008 R2の場合は2の24乗=1677万7216ユーザーまでと設定されているし、Windows 2000 Serverでは「無制限」と表示されている)。
これに対してクライアントOSでは最大10ユーザーもしくは20ユーザーに制限されている。具体的には、次のようになっている。
OS | 最大ユーザー数 |
---|---|
Windows 2000 Professional | 10ユーザー |
Windows XP Home Edition | 5ユーザー |
Windows XP Professional | 10ユーザー |
Windows XP Professional x64 Edition | 10ユーザー |
Windows Vista Starter(日本未発売) | 0ユーザー(ファイル公開は不可) |
Windows Vista Home Basic(日本未発売) | 5ユーザー |
Windows Vista(上記以外のエディション) | 10ユーザー |
Windows 7 (全エディション) | 20ユーザー |
クライアント向けOSのファイル共有サービスにおける最大セッション数 ファイル共有サービスで利用可能な最大セッション数(同時利用可能なユーザー数)は、今までのクライアントOSではずっと10ユーザーであったが(一部5ユーザーあり)、Windows 7では20ユーザーに拡張されている(別連載記事の「Windows 7のネットワーク機能概要」参照)。なお、Windows 7のStarterとHome Premium、Ultimateのように、エディションが違っても、制限ユーザー数に違いはない。 |
この制限数は、管理者権限のあるコマンド・プロンプトを開き、「net config server」コマンドを実行することによって確認できる。「最大ユーザー数」として表示されている値がその制限値である。
■Windows XPの場合
C:\>net config server
サーバー名 \\WINXP01
サーバー コメント
ソフトウェア バージョン Windows 2002
……(中略)……
隠しサーバー No
最大ユーザー数 10 ……最大ユーザー数
各セッションのオープン ファイルの最大数 16384
……(以下省略)……
■Windows 7 Ultimateの場合
C:\>net config server
サーバー名 \\WIN7X01
サーバー コメント
ソフトウェア バージョン Windows 7 Ultimate
……(中略)……
隠しサーバー No
最大ユーザー数 20 ……最大ユーザー数
各セッションのオープン ファイルの最大数 16384
……(以下省略)……
これに対して、例えばWindows Server 2008 R2の場合は次のように表示される。
C:\>net config server
サーバー名 \\SERVERR2
サーバー コメント
ソフトウェア バージョン Windows Server 2008 R2 Enterpri
……(中略)……
隠しサーバー No
最大ユーザー数 16777216 ……最大ユーザー数
各セッションのオープン ファイルの最大数 16384
……(以下省略)……
事実上、(技術的には)無制限に接続できることが分かる。
●ファイル共有サービスにおけるユーザー数制限とは?
以上の10ユーザーや20ユーザー(Windows 7の場合)という制限は、実際には何を意味するのかを簡単に解説しておこう。
ファイル共有サービスに接続する場合、いくつか方法がある。一般的には、1台のコンピュータ(クライアントWindows OS)に1人のユーザーがログオンし(つまり1台1ユーザー)、そこからエクスプローラなどを使ってサーバとなるコンピュータに接続する。この状態では、1台のクライアント・コンピュータからサーバ側に対して、1つのセッション(ファイルやサービスを利用するための通信路)が生成される。
10ユーザーまでということは、このようなクライアント・コンピュータを10台まで受け付け可能ということである。
この場合、サーバ側の複数の共有フォルダを利用しても、それは1セッションと数える。例えば、\\vistasvr01というコンピュータが公開している\dataと\\tempと\prjという3つの共有フォルダ・リソースを利用したとしても、サーバ側から見れば、それは1セッション(1ユーザー)である。最初にサーバに接続するときにだけユーザー認証が必要となるし、その認証をもって1つのセッションが確立している。
これに対して、1台のコンピュータをマルチ・ユーザーで利用している場合は、ユーザーごとに別のセッションが必要となる。
Windows XP以降のクライアントWindows(およびサーバ版Windows)ではユーザー切り替えの機能が導入されているため、1台のコンピュータに同時に何人かがログオンしていることがある。そして各ユーザーがサーバに接続しているとすると、これは1セッションではなく、そのユーザー数分だけのセッションを消費する。
例えば5人のユーザーが1台のクライアント・コンピュータにログオンしてそれぞれサーバに接続していれば、それだけで5セッション消費する。このようなコンピュータが2台あれば、それだけでサーバのユーザー数制限の上限に達してしまうことになる*。
*ユーザー切り替えでWindows OSを利用している場合、バックグラウンドのユーザーはファイル・サーバへアクセスしないのでアイドル状態になり、しばらくするとサーバ側で自動切断されることがある。こうなると制限は緩和されるが、バックグラウンドでも動き続けるようなアプリケーションならば自動切断されることなく、アクセスし続ける可能性がある。このため、フォアグラウンドのユーザーだけがファイル・サーバを使うとは断定できない。
実際には、ユーザー(人間)だけでなく、プログラムやサービスがサーバへ接続していることもあるので、10人が使っていなくても上限に達してしまったように見えることがある。またファイルを読み書きしていなくても、単にフォルダをブラウズしているだけとか、ネットワーク共有プリンタを使っているだけでもセッションを消費するので、やはり常に10人いっぱいまで使えるというわけではない。
●制限数に達した場合の挙動
ユーザー数が最大制限数に達した場合、さらに接続しようとすると、クライアント側には次のように表示される。これはエクスプローラで接続しようとした場合の例である。
ユーザー数超過の場合のエラー
これはWindows 7のエクスプローラでアドレス・バーに「\\vistasvr01」と入力して、Windows Vista Businessのファイル共有サービスに接続しようとしたところ。すでに許容セッション数の上限(最大ユーザー数は10)に達していたため、接続できずにエラーとなっている。ただしこのダイアログはすぐには表示されず、数十秒待たされてから(OSや状況などによって異なる)、このようなエラー・ダイアログが表示される。実際には、サーバ側(共有フォルダを公開している側)ではSTATUS_REQUEST_NOT_ACCEPTEDなどのエラーをすぐに返しているが、クライアント側ではどのようなエラーでもしばらく待ってから、何度か再試行するので、エラーが表示されるまでに時間がかかる。
(1)アクセスがエラーになったのでこういうメッセージが表示された。どのような原因でエラーになっても、このようなメッセージが表示される(ことが多い)。
(2)詳細を表示させるとこのようなエラー・コードが確認できるが、実際にはこのように、汎用的なエラー・メッセージが表示されることが多い。ほかに「ネットワーク・パスが見つかりません」というメッセージが表示されることもある。
(3)Windows VistaやWindows 7の場合はこのようなダイアログが表示されるが(Windows XPの場合は、もっと単純なエラー・ダイアログが表示されるだけである)、これをクリックしても「問題を特定できませんでした」としか表示されないことが多い。ただしリソースを直接指定していると(例:「\\vistasvr01\data」などと指定していると)、「"data" への接続数は既に最大許容数に達しています」のように表示されることがある。
コマンド・プロンプトの場合は次のように表示される。この場合は、最大数に達したのでエラーになったというメッセージが表示されているが、別のメッセージが表示される場合もある。ただしこのメッセージもすぐには表示されず、何度か再試行するために、数十秒待たされる。
C:\>net use * \\vistasvr01\data ……サーバへ接続を試みる(*は任意の空きドライブ文字にマップせよという指示)
システム エラー 71 が発生しました。
コンピューターへの接続数が最大値に達しているため、これ以上このリモート コンピューターに接続できません。 ……エラー・メッセージ
この状態をサーバ側で確認するには、[コンピュータの管理]ツールで[コンピュータの管理(ローカル)]−[システム ツール]−[共有フォルダ]−[セッション]の情報を見るか、コマンド・プロンプト上で「net session」コマンドを実行する。詳細は右上の関連記事を参考にしていただきたい。
■GUIツールで確認する
■コマンド・プロンプト上で確認する
現在接続されているユーザー数の確認方法
現在ファイル・サーバ機能を利用しているユーザー数を確認するには、サーバ側でファイル共有サービスのセッション情報を確認する。いずれの例でも、すでに10セッション使用中なので、11セッション目からは拒否される。1セッションが1ユーザーであり、これが制限数に達するとそれ以上は接続できなくなる。コンピュータ名とユーザー名はペアで管理されており、どちらかが異なれば、別のセッションとして扱われる。この総数が最大で10(または20)までに制限されている。
(1)[コンピュータの管理]ツールを起動し、[コンピュータの管理(ローカル)]−[システム ツール]−[共有フォルダ]−[セッション]を選択する。すると右ペインにこのサーバに接続しているクライアントの情報が表示される。なお、この例では管理ツールをローカルのコンピュータに接続して管理しているが、リモートのコンピュータに接続してセッション情報などを確認することもできる。その場合、管理接続もファイル共有サービスを使って実現されているので、セッション数を1つ消費する。実際にリモートのコンピュータに接続するなどして、確認していただきたい。
(2)クライアントのユーザー名。同じユーザー名でも、接続元のクライアント・コンピュータが異なれば、別セッションになる。ここが10ユーザー(もしくは20ユーザー)になっていると、それ以上接続できない。
(3)クライアントのコンピュータ名もしくはIPアドレス。同じクライアントでも、接続するユーザー名が異なれば、別セッションになる。
(4)開いているファイルの数。これが0以外のときにセッションを強制クローズすると、クライアント側でエラーになったり、(アプリケーションが正しいデータを書き込めなくなり)ファイルの内容が壊れたりするので注意。
(5)セッションが確立されてからの時間。時:分:秒で表示されている。
(6)クライアントで何も操作が行われていないアイドル時間。時:分:秒で表示されている。「00:00:00」からカウントアップし、デフォルトでは15分経過すると、サーバ側でもクライアント側でもセッションがクローズされる。何かファイル操作を行うと0に戻る。
(7)セッションを強制的にクローズするには、セッションを選んで右クリックし、この[セッションを閉じる]を実行する。
(8)コマンド・プロンプト上でも上記と同じ情報が表示されている。このコンピュータ名(もしくはIPアドレス)とユーザー名の組でセッションを識別する。
最大制限数に達して接続が拒否された場合、ほかの誰かが使用を終了させる(もしくはログオフ/シャットダウンする)のを待つか、サーバ側で現在有効なセッションを強制的にクローズすれば(終了させれば)空きができ、ほかのユーザーが接続できるようになる。具体的には、サーバ側のセッションの管理ツールでセッションを選択して右クリックし、ポップアップ・メニューから[セッションを閉じる]を選択する。
コマンド・プロンプトの場合は、「net session」で確認したコンピュータを指定して、「net session \\<コンピュータ名> /delete」を実行する。
ただし強制クローズしても、ファイルに対して読み書きしたり、コピーや一覧表示などの操作を行ったりすれば、すぐに再接続されるので、ほかのユーザーが利用できるという保証はない。それに使用中のファイルなどを強制クローズさせると、アプリケーションがエラーになる可能性もある。ほかのユーザーが使用を終了するのを待つのが正しい対応方法である。
●自動切断のタイムアウト時間はデフォルトでは15分
ユーザー数の上限に達した場合、セッションを強制クローズさせてもよいが、デフォルトでは15分のタイムアウトが設定されているので、それを待つという方法もある。
Windowsネットワークでは、ユーザーがいちいちセッションの終了処理(通常はシャットダウンやログオフするとクローズする)を行わなくてもよいように、デフォルトでは15分のタイムアウト時間が設定されている。これを確認するには、サーバ側で「net config server」を実行する。
C:\>net config server
サーバー名 \\WIN7X01
サーバー コメント
ソフトウェア バージョン Windows 7 Ultimate
……(中略)……
アイドル セッション時間 (分) 15 ……タイムアウト
コマンドは正常に終了しました。
最後のファイル操作(読み書きやアクセスなど)を行ってから15分経つと、ファイルを公開している側ではそのセッションをクローズする。タイムアウトまであとどのくらいあるかは、「net session」コマンドや、先ほどの管理ツールの「アイドル時間」などで確認できる。
タイムアウト時間を変更するには、ファイル・サーバ側で「net config server /autodisconnect:<時間>」を実行する。<時間>にはタイムアウト時間を分単位で指定するが、「-1」とすると、自動切断を行わないようになる。ユーザー数が多いときは、この値を小さくすればファイル・サーバの利用を終えたユーザーが早めに切断されるようになるため、ファイル・サーバの利用が競合して拒否される可能性が低くなる。
C:\>net config server /autodisconnect:5 ……5分にする
コマンドは正常に終了しました。
C:\>net config server ……確認
サーバー名 \\WIN7X01
サーバー コメント
ソフトウェア バージョン Windows 7 Ultimate
……(中略)……
アイドル セッション時間 (分) 5 ……5分になっている
コマンドは正常に終了しました。
ただしこの方法は、最大10ユーザー(もしくは20ユーザー)という制限をなくすものではないので、10人を大きく超えるユーザーがいる場合は根本的な解決にはならない。このような状況が頻発する場合は、サーバOSの導入を検討するべきである。
■更新履歴
【2010/10/08】Windows Vista Starter/Home Basicに関する記述を追加しました。
【2010/10/07】当初、Windows XPの最大ユーザー数は10ユーザーと記述しておりましたが、Windows XP Home Editionは5ユーザーでした。お詫びして訂正いたします。
【2010/10/04】当初公開した記事では、エクスプローラ経由で接続した場合に最大接続数を超えていると、サーバ側が無応答になると記述しておりましたが、実際にはSTATUS_REQUEST_NOT_ACCEPTEDなどのエラー・ステータスが返されておりました。そのため、エラー時の挙動の解説部分を修正いたしました。
【2010/10/01】初版公開。
■この記事と関連性の高い別の記事
- Windowsのコマンドプロンプトからリモートデスクトップのセッションを管理する(TIPS)
- Windowsでリモートデスクトップの接続時間を制限する(TIPS)
- Windowsのリモートデスクトップでコンソールセッションに接続する(TIPS)
- サーバにログオン中のユーザーをリモートから調査する(TIPS)
- コマンド・プロンプトでファイル共有を管理する(TIPS)
Copyright© Digital Advantage Corp. All Rights Reserved.