
USBマスストレージデバイスクラス( USB MSCまたはUMSとも呼ばれる)は、USBインプリメンターズフォーラムによって定義された、USBデバイスクラスという一連のコンピューティング通信プロトコルです。これにより、USBデバイスをホストコンピューティングデバイスからアクセス可能にし、ホストとUSBデバイス間のファイル転送を実現します。ホストにとって、USBデバイスは外付けハードドライブとして機能します。このプロトコルは、多数のストレージデバイスとのインターフェースを設定します。

この規格を介してコンピュータに接続されるデバイスには、以下のものが含まれます。
この規格をサポートするデバイスは、MSC(Mass Storage Class)デバイスとして知られています。MSCは元々の略称ですが、UMS(Universal Mass Storage)も一般的に使われるようになりました。
ほとんどの主要なオペレーティングシステムはUSBマスストレージデバイスをサポートしています。古いシステムでのサポートは通常、パッチを通じて提供されます。
Microsoft Windows は Windows 2000 以降、MSC をサポートしています。Windows 95およびWindows NT 4.0より前の Windows では、Microsoft による USB のサポートはありませんでした。オペレーティングシステムのアップデートであるWindows 95 OSR2.1 では、USB のサポートが限定的になりました。当時、Microsoft は汎用 USB マスストレージ ドライバを作成しておらず ( Windows 98用も含む)、USB ストレージ デバイスの種類ごとにデバイス固有のドライバが必要でした。Windows 98 および Windows 98SE ではサードパーティ製のフリーウェア ドライバが利用可能になり、Windows NT 4.0 でもサードパーティ製のドライバが利用可能です。Windows 2000では(汎用ドライバを介して) 標準の USB マスストレージ デバイスがサポートされています。Windows Meおよびそれ以降のすべての Windows バージョンでもサポートされています。
Windows Mobile は、USB ホスト搭載デバイスでFATフォーマットされたほとんどの USB マスストレージデバイスへのアクセスをサポートしています。ただし、ポータブルデバイスは通常、セルフパワーの USB ハブがないと、ハードドライブディスクエンクロージャ( 2.5 インチ (64 mm)ハードドライブは通常、 USB 仕様で規定されている最大 2.5 Wを必要とします) に十分な電力を供給できません。デバイス実装者がその機能を追加しない限り、Windows Mobile デバイスはファイルシステムをマスストレージデバイスとして表示できません。ただし、サードパーティ製アプリケーション (市販の Softick CardExport や無料の WM5torage など) は、ほとんどの WM デバイスに MSC エミュレーション機能を追加しています。ファイルシステムの問題により、一般的にエクスポートできるのはメモリ カード (内蔵ストレージメモリは除く) のみです。詳しくは、下記の「デバイス アクセス」を参照してください。
Windows のAutoRun機能はすべてのリムーバブル メディアで動作していたため、USB ストレージ デバイスがコンピュータ ウイルスの侵入経路となる可能性がありました。Windows 7以降、Microsoft は AutoRun を CD および DVD ドライブに限定し、以前の Windows バージョンを更新しました。[ 1 ]
MS-DOSも、ほとんどの互換オペレーティングシステムも、USBをサポートしていませんでした。USBマスストレージデバイスをサポートするために、Duse、USBASPI、DOSUSBなどのサードパーティ製の汎用ドライバが利用可能です。FreeDOSは、USBマスストレージをAdvanced SCSI Programming Interface(ASPI)インターフェースとしてサポートしています。
AppleのMac OS 9とmacOSはUSBマスストレージをサポートしており、Mac OS 8.6はオプションのドライバを介してUSBマスストレージをサポートしていました。[ 2 ]
Linuxカーネルはバージョン2.3.47 [ 3 ] (2001年、カーネル2.2.18 [ 4 ]にバックポート)以降、USBマスストレージデバイスをサポートしています。このサポートには、癖やシリコン/ファームウェアのバグの回避策、デバイスやコントローラの追加機能( SMARTや温度監視に使用されるATA-USBブリッジのATAコマンドパススルー、ハードディスクドライブのスピンアップとスピンダウンの制御、その他のオプションなどのベンダー有効化機能)が含まれます。Android 6以降 [ 5 ] を実行するモバイルデバイスも、USB - CポートのデュアルロールUSBと、古いポートのUSB-OTGを介してUSBマスストレージをサポートしています。
Solaris はバージョン 2.8 (1998 年) 以降、NetBSD はバージョン 1.5 (2000 年) 以降、FreeBSD はバージョン 4.0 (2000 年) 以降、OpenBSD はバージョン 2.7 (2000 年) 以降、デバイスをサポートしています。Digital UNIX (後にTru64 UNIXとして知られる) はバージョン 4.0E (1998 年) 以降、USB および USB マスストレージデバイスをサポートしています。AIXはバージョン 5.3 T9 および 6.1 T3 以降、USB マスストレージデバイスをサポートしていますが、サポートが十分ではなく、パーティショニングや一般的なブロッキングなどの機能が欠けています。[ 6 ]
Xbox 360とPlayStation 3 は、写真や音楽などのメディアのデータ転送にほとんどのマスストレージデバイスをサポートしています。2010 年 4 月現在、Xbox 360 (a) はセーブされたゲームにマスストレージデバイスを使用しており[ 7 ]、PS3 はマスストレージデバイス上のデバイス間で転送が可能でした。独立系開発者は、TI-84 PlusおよびTI-84 Plus Silver Edition用のUSB マスストレージデバイスにアクセスするためのドライバをリリースしています。[ 8 ]これらの電卓では、usb8xドライバがmsd8xユーザーインターフェイスアプリケーションをサポートしています。

USBマスストレージ仕様は、多数の業界標準コマンドセットへのインターフェースを提供し、デバイスがそのサブクラスを公開できるようにします。実際には、サブクラスを介してコマンドセットを指定するサポートはほとんどありません。ほとんどのドライバはSCSI透過コマンドセットのみをサポートし、SCSI周辺機器タイプ(PDT)でSCSIコマンドセットのサブセットを指定します。サブクラスコードは、以下のコマンドセットを指定します。
この仕様では、準拠デバイスに特定のファイルシステムを義務付けていません。指定されたコマンドセットおよびそのサブセットに基づいて、データのセクターを読み書きする手段を提供します(ハードドライブへのアクセスに使用される低レベルインターフェイスと同様)。オペレーティングシステムは、USBマスストレージデバイスをハードドライブのように扱うことができ、ユーザーは任意のフォーマット(MBRやGPTなど)でパーティション分割し、任意のファイルシステムでフォーマットできます。
比較的シンプルなため、USBフラッシュドライブ、カメラ、デジタルオーディオプレーヤーなどの組み込みデバイスで最も一般的に使用されているファイルシステムは、MicrosoftのFATまたはFAT32ファイルシステム(長いファイル名のサポートはオプション)です。ただし、USBマスストレージデバイスは、Windows NTのNTFS 、 macOSのHFS Plus、Linuxのext2、SolarisまたはBSDのUnixファイルシステムなど、他のファイルシステムでフォーマットすることも可能です。この選択により、異なるオペレーティングシステムを使用する機器によるデバイスの内容へのアクセスが制限(または防止)される場合があります。OSに依存するストレージオプションには、LVM、パーティションテーブル、ソフトウェア暗号化などがあります。
カメラ、MP3プレーヤー、その他外部ホストとは独立してファイルシステムにアクセスする必要がある機器では、メーカーはFAT32ファイルシステムを推奨しています。これらの機器はすべて、ファイルシステムの破損やその他の損傷を防ぐため、ホストオペレーティングシステムにファイルシステムを開放する前に、ファイルシステムを停止(マウント解除)します(ただし、理論的には、どちらの機器も読み取り専用モードまたはクラスタファイルシステムを使用することも可能です)。一部の機器には、読み取り専用モードで使用できる書き込み保護スイッチ(またはオプション)が備わっています。
プリフォーマット済みデバイスのベンダーは、主に2つのパーティション方式を採用しています。1つは、ファイルシステム(通常はFAT32)をパーティション分割せずにデバイスに直接配置し、ブートセクタ、ヘッダー、パーティションを追加せずにセクタ0から開始させる方式です。もう1つは、DOSパーティションテーブル(およびMBRコード)を使用し、1つのパーティションがデバイス全体に及ぶ方式です。このパーティションは、パフォーマンスと耐久性を高めるために、ソリッドステートドライブ でよく見られるように、セクタの2乗(1MBまたは2MBなど)にアラインされることがよくあります。USBマスストレージデバイスに似た組み込みストレージを備えたデバイス(USBポートを備えたMP3プレーヤーなど)は、異なるファイルシステムで再フォーマットすると、ファイルシステムが破損している(または見つからない)と報告します。ただし、ほとんどのデフォルトパーティションデバイスは、追加のパーティションを使用して再パーティション化(最初のパーティションとファイルシステムを縮小)できます。このようなデバイスは、最初のパーティションを自身の操作に使用し、ホストシステムに接続すると、すべてのパーティションが使用可能になります。
単一のUSBポートで接続されたデバイスは、複数のUSBデバイスとして機能し、そのうちの1つはUSBマスストレージデバイスとして機能します。これにより、主にMicrosoft WindowsおよびMac OS Xオペレーティングシステム向けのドライバとドキュメントの配布とアクセスが簡素化されます。このようなドライバは、デバイスが標準のUSBクラスに適合しないか、追加機能を備えているため、デバイスを最大限に活用するために必要です。組み込みのUSBマスストレージデバイスを使用すると、CD-ROMディスク、フロッピーディスク、またはベンダーのWebサイトへのインターネットアクセスなしで追加のドライバをインストールできます。これは、多くの最新システムには光学ドライブやフロッピーディスクドライブが搭載されていないため重要です。デバイスがネットワークアクセス(無線、GSM、またはイーサネットカード)を提供するため、インターネットアクセスが利用できない場合があります。組み込みのUSBマスストレージは通常、ベンダーによって永久的に読み取り専用に設定され、偶発的な破損や他の目的での使用を防ぎます(ただし、ファームウェアのアップグレードを実行する際に独自のプロトコルで更新される場合があります)。この配布方法の利点は、コストの削減、インストールの簡素化、およびドライバの移植性の確保です。
タグ付きコマンドキューイングやネイティブコマンドキューイング(パフォーマンスを向上させる可能性がある)、ATAセキュア消去(ドライブ上のすべてのデータを安全に消去できる)、SMART(ドライブの信頼性の指標にアクセスする)などの高度なハードディスクドライブコマンドは、SCSI、ATA、ATAPIなどの低レベルドライブコマンドセットの拡張機能として存在します。これらの機能は、ドライブがUSBマスストレージインターフェイスをサポートするディスクエンクロージャに配置されている場合には機能しない可能性があります。一部のUSBマスストレージインターフェイスは汎用で、基本的な読み書きコマンドを提供します。これはハードドライブを含むデバイスとの基本的なデータ転送には適していますが、このようなUSBマスストレージデバイスに高度なデバイス固有のコマンドを送信する簡単な方法はありません(ただし、デバイスは標準のUSB制御インターフェイスを介して独自の通信プロトコルを作成する場合があります)。USB 3.0で導入されたUSB Attached SCSI(UAS)プロトコルは、 コマンドキューイング、それを必要とするハードウェア用のコマンドパイプ、電源管理など、これらの問題のいくつかを解決します。
特定の USB 2.0 チップセットには、SCSI パススルーを実現するための独自の方法があり、これを使用してsmartctl ( -dオプションの後に "chipset") などのツールでドライブから SMART データを読み取ることができました。[ 9 ]より新しい USB ストレージ チップセットは、ATA (および SATA) デバイスとやり取りするための汎用プロトコルとしてSCSI / ATA 変換(SAT) をサポートしています。 [ 10 ]ドライブが USB ブリッジ経由で接続されているときに、特殊な ATA または SCSI パススルー コマンド (セキュア消去やパスワード保護など) を使用すると、特にhdparmユーティリティを使用した場合にドライブが故障する可能性があります。[ 11 ]
USB実装者フォーラムのウェブサイトより: