SMBとNFSプロトコルの徹底比較
コンピュータやユーザー間でファイルを共有することで、より効率的かつ便利にコミュニケーションを取り、データをやり取りすることができます。ネットワーク経由でのファイル共有には、サーバーやコンピュータ上でSMBやNFSプロトコルを使用するなど、さまざまな方法があります。NAS(ネットワーク接続ストレージ)デバイスも、SMBやNFSを介してファイルを共有するために利用されます。
NFSとSMBの比較記事を読んで、ご自身の状況に適したプロトコルがどれか、どのプロトコルを選択すべきかを理解してください。
SMBプロトコルとは何ですか?
SMB(Server Message Block)は、ネットワーク経由で共有データにアクセスするためのファイル共有プロトコルです。Windows環境において、ローカルエリアネットワーク(LAN)経由でファイルにアクセスするために広く利用されています。 1983年にIBMによって開発され、後にMicrosoftがこのプロトコルを採用し、現在ではWindowsにSMBのサポートが組み込まれています。このプロトコルは進化を続けており、最新のSMBバージョンはv.3.1.1です。
時々、CIFSという用語がSMBと混同されることがあります。CIFSはSMBの方言、つまりMicrosoftによるSMB v1の実装です。こちらをお読みください CIFS 対 SMB 詳細については、比較をご覧ください。
NFSプロトコルとは何ですか?
NFS(Network File System)は、UNIX系およびLinuxオペレーティングシステム向けのファイル共有プロトコルです。その名称とは異なり、NFSはファイルシステムではありません。NFSプロトコルは、1984年にSun Microsystemsによって開発されました。
- NFSバージョン1はSun社内で使用されただけで、一般には公開されませんでした。
- NFS v2は、基本的なファイル共有機能を提供していました。
- NFS v3は可変サイズへの対応やエラー報告機能の改善をサポートしていますが、NFS v2クライアントとは互換性がありません。
- NFS v4は、インターネット技術特別委員会(IETF)によって開発された最新のNFSバージョンです。並列ファイルアクセスをサポートしており、このバージョンではセキュリティが強化されています。NFS v2およびNFS v3との下位互換性があります。NFS v4はKerberos認証をサポートしています。
NFS 対 Samba – 主な違い
Samba は、Linux に SMB サーバーを構築するためのフリーソフトウェアです。なお、Samba には SMB クライアントは含まれていません。別途、 cifs-utils LinuxでSMBクライアントを利用するためのパッケージ。
ネットワークプロトコルであるNFSを、ソフトウェアパッケージ(Samba)と比較すべきではありません。ただし、Windows向けのNFS実装について話す場合、NFSを使用するには、Windowsに適切なNFSサーバーおよび/またはNFSクライアント(タスクに応じて)をインストールする必要があります。
NFS 対 SMB – 機能の概要
このセクションでは、7つの異なるカテゴリーについて、SMBとNFSの機能を比較します。
1. ネットワーク接続/使用ポート
- SMBプロトコルとNFSプロトコルは、いずれもOSIモデルのアプリケーション層(レイヤー7)で動作し、クライアント・サーバー型アーキテクチャを採用しています。
- SMBではセッションの確立が必要です(NFSでは不要です)。
- SMBは、その動作においてプレゼンテーション層(レイヤー6)を利用することもできます。
- これら2つのプロトコルは、インターネット上ではなく、ローカルエリアネットワーク(LAN)での使用を想定して最適化されています。SMBおよびNFSの共有プロトコルは、インターネット上で使用するためのネットワークアドレス変換やルーティングには適していません。
- NFS はポート 2049(TCP および UDP)とポート 111(TCP および UDP)を使用します。TCP 111 はポートマッパーによって使用されます。TCP 1110 および UDP 1110 は、クラスタおよびクライアントの状態情報に使用されます。NFS ロックマネージャは TCP 4045 および UDP 4045 を使用します。
- SMBは、NetBIOSトランスポートを使用せず、TCP/IPを直接利用してTCPポート445を使用します(これは、Windows 2000以降、および現在使用されている最新のSMBバージョンにおける動作方式です)。 SMBは、TCP/IP上のNetBIOS上で動作させるために、TCP 139、UDP 137、およびUDP 138ポートを使用します。NetBIOSはセッション層プロトコル(OSIモデルの第5層で動作)であり、Windows 2000以前の古いSMB実装で使用されていました。
2. プリンターの共有
SMBはプリンター共有をサポートしており、これによりリモートユーザーは特定のマシンに接続されたプリンターを使用して、ネットワーク経由でファイルを印刷することができます。NFSプロトコルにはプリンター共有機能はありません。Linuxには、ネットワーク印刷のための別の仕組みが用意されています。
3. 認証
NFSプロトコルとSMBプロトコルの主な違いは、認証の方法にあります。
- SMBでは、ユーザーやグループに対してACL(アクセス制御リスト)の概念を採用しています。SMBは、指定されたユーザーやグループに対して共有ファイルへのアクセス権を付与します(ユーザーベースの認証)。アクセス権限は柔軟に設定できます。許可するホストへのアクセスを設定するには、ファイアウォールを使用できます。
- NFSでは、従来より許可されたIPアドレスからのアクセスを提供しています。NFSはホストベースの認証システムを採用しており、NFS共有へのアクセスを許可するホストのIPアドレスを指定することができます。この場合、許可されたマシンのすべてのユーザーがNFS共有にアクセスできるようになります。
所有権とLinuxスタイルの権限は、NFSプロトコルの機能の一つです。LinuxはUID(ユーザーID)とGID(グループID)を使用して動作しますが、WindowsはSID(セキュリティ識別子)を使用して動作します。
NFS v4におけるKerberosのサポートにより、認証システムが強化され(特定のユーザーへのアクセス提供機能が向上します)。
4. ファイル共有へのアクセス
ファイルロックは、SMB では必須ですが、NFS では推奨されています。ファイルロック機構は、ユーザーが開いているファイルの一貫性を確保するために使用されます。ロックがかけられていると、他のユーザーは、そのファイルが閉じられるまで、開いているファイルにデータを書き込むことができません。
Windows では、UNC パス
を使用して SMB ファイル共有にアクセスできます。
\serversharedirectory1directory2
Linuxでは:
smb://server/share/directory1/directory2
NFS共有には、Export File System (EFS) パスと以下の形式を使用してアクセスできます:
server:/directory1/directory2
5. オペレーティングシステムにおけるサポートと統合
NFSプロトコルはLinux向けに最適化されています。SMBはWindows向けに最適化されており、Windowsのネイティブなファイル共有プロトコルとして、優れた統合性を備えています。
ただし、どちらのプロトコルもWindowsとLinuxの両方で使用可能です。LinuxでSMBプロトコルを使用するには、SMBクライアント(cifs-utils)またはSMBサーバー(Samba)をインストールする必要があります。 WindowsでNFS設定を使用するには、追加コンポーネント(ロール)としてNFSクライアントおよび/またはサーバーをインストールする必要があります。
ファイルへのアクセスにおいて、NFSは大文字と小文字を区別しますが、SMBは大文字と小文字を区別しません。これは、ファイルの検索方法やファイル名の入力方法に影響します。
NFSプロトコルはオープンスタンダードであり、誰でも実装することができます。
6. セキュリティ/暗号化
- リクエスト・レスポンス・プロトコル(RPC)に基づくNFS通信は、ファイアウォールがないとリスクが高まります。NFSが、セキュリティ対策が施されていない基盤となるUDPプロトコルを使用して動作する場合、全体的なセキュリティレベルが低下します。NFSは、TLS(SSLに基づくトランスポート層セキュリティプロトコル)を使用した暗号化をサポートしています。
- SMBは、NFSのKerberos暗号化よりも強固なAES-256暗号規格によるエンドツーエンドの暗号化をサポートしています。SMB 1は脆弱性のあるプロトコルと見なされていますが、最新のSMB 3バージョンは安全であるため、SMBのセキュリティレベルはNFSよりも高くなっています。
7. NFSとSMBのパフォーマンス比較
ネットワーク経由で中小規模のファイル(たとえば、1 MB 程度のファイルなど)を転送するには、NFS の方が適しています。 大容量ファイル(例えば500MBのファイル)の転送においては、両プロトコルのパフォーマンスはほぼ同等です。
暗号化を使用する場合、NFSはSMBよりも高速です。4MB単位の転送速度では、SMBの方が読み取り処理が高速です。トラフィック負荷が高い場合、データ転送処理が遅くなる可能性があります。なお、NFS v.4.2では最大帯域幅が向上しました。
SMB 対 NFS:比較表
NFSとSMBの比較における主な違いを、以下の表にまとめました。
| 中小企業 | NFS | |
| 環境 | Windowsで標準搭載されている | 主にLinuxシステムで使用される |
| 認証 | 便利なユーザーベースの認証 | ホストベース認証が主な方法である |
| 使用されたポート | TCP 445; TCP 139、UDP 137、138 | TCP 2049、UDP 2049、TCP 111、UDP 111;TCP 1110、UDP 1110、TCP 4045、UDP 4045。 |
| 暗号化とセキュリティ | はい – Kerberos、AES-256 | はい – Kerberos と TLS |
| クロスプラットフォーム環境 | 対応 | 対応 |
| ファイルのロック | 必須 | お知らせ |
| プリンターの共有 | はい | いいえ |
| リソースへのアクセス | サーバーディレクトリ1ディレクトリ2 | server:/ディレクトリ1/ディレクトリ2 |
結論
ファイル共有プロトコルとしてNFSとSMBのどちらを選択するかは、主にネットワーク内のコンピュータで主に使用されているオペレーティングシステムやその他の要因によって決まります。どちらのプロトコルも信頼性が高く、さまざまなオペレーティングシステムやNASデバイスで使用可能です。どちらを選択する場合でも、ネットワーク上でファイル共有を利用する際は、データのバックアップを必ず行うことが重要です。 NAKIVO Backup & Replication SMBおよびNFS共有データに加え、仮想マシン、物理サーバー、Microsoft 365上のデータを保護できるオールインワン型のデータ保護ソリューションです。