説明

メモリカード及びパーティション作成プログラム

【課題】メモリカード側に作成されたパーティションの数が、システム側でサポートするパーティション数の上限を超えている場合でも、そのような上限を超えたパーティションに対するアクセスを実現すること。
【解決手段】メモリカード18Bは、記憶領域上に、基本パーティション#1〜#3及び拡張パーティション#4が作成されるとともに、拡張パーティション#4内には、更に論理パーティション#5〜#11が作成されることにより、基本パーティション#1〜#3及び論理パーティション#5〜#11内に、ファイルを作成可能に構成されている。特に、拡張パーティション#4が、基本パーティション#3内に含まれる記憶領域と重複する範囲に作成されており、しかも、基本パーティション#3内には、論理パーティション#5〜#11と記憶領域が一致するファイルが作成されている。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリカード及びパーティション作成プログラムに関する。
【背景技術】
【0002】
従来、メモリデバイスが備える記憶領域を複数のパーティションに分割して、それらのパーティション毎に用途を設定することは、既に提案されている(例えば、特許文献1参照。)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開2010/0293362号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、Linux(登録商標)においては、ブロックデバイスが2つの8bit変数で区別される設計になっている。これらの変数は、一般に「デバイス番号メジャー」、「デバイス番号マイナー」と呼ばれている。MMC(Multi Media Card)/SD(Secure Digital)メモリカードデバイスに対しては、通常、デバイス番号メジャーとして179が割り当てられて、これが事実上の標準となっている。
【0005】
また、MMC/SDメモリカードデバイスのデバイス番号マイナーは、8bitのうち、5bitを別スロットに割り当てることで最大32スロットまでサポートし、残る3bitを各スロット及び各スロットに作成されるパーティションに割り当てることで、1スロット当たり最大7パーティションまでをサポートしている。
【0006】
より具体的には、mmcblk0〜mmcblk31までの32スロットを、デバイス番号マイナー中の5bitで識別することが多い。また、mmcblk*(*は0〜31のいずれか;以下同様)及び各mmcblk*に作成される7つのパーティションmmcblk*p1〜mmcblk*p7を、デバイス番号マイナー中の3bitで識別することが多い。
【0007】
ただし、1スロット当たりのサポートパーティション数が7では、パーティション数が足りないケースも少なくはなく、その部分をカスタマイズして、サポートするスロットの数を減らして、代わりに1スロット当たりのサポートパーティション数を増やしているシステムも珍しくはない。例えば、サポートするスロット数を16(4bit)に減らすことで、1スロット当たり15パーティションに対応可能としたシステム、サポートするスロット数を8(3bit)に減らすことで、1スロット当たり31パーティションに対応可能としたシステムなどもある。
【0008】
しかし、このようなカスタマイズによって、サポートパーティション数を増やしたシステムで、事実上の標準よりも多くのパーティションを作成すると、当然ながら、よりサポートパーティション数の少ないシステムでは、一部のパーティションを適正に認識することができず、事実上の標準となっているシステムとの互換性が低下することになる。
【0009】
また、上記とは逆に、サポートスロット数が32よりも増やされたシステムも考えられる。例えば、MMC/SDメモリカードと電気信号的に互換性を持ったオンボードデバイスとして、eMMCやeSDといった直付けタイプのデバイスが存在するが、これらのデバイスを大量に実装した大容量フラッシュストレージ使用システムの場合、大容量化を図るには、1スロット当たりのサポートパーティション数を減らしてでも、サポートスロット数を増やしたい場合がある。
【0010】
しかし、このようなカスタマイズを行ったシステム上で、事実上の標準でもある7つのパーティションを持ったMMC/SDメモリカードを利用しようとする場合、一部のパーティションを適正に認識することができなくなる。
【0011】
つまり、メモリカード側で事実上の標準よりも多いパーティションが作成されている場合、システム側で事実上の標準よりもサポートパーティション数が少ない場合、いずれの場合にも、アクセスできないパーティションが発生するおそれがある。
【0012】
本発明は、上記問題を解決するためになされたものであり、その目的は、メモリカード側に作成されたパーティションの数が、システム側でサポートするパーティション数の上限を超えている場合でも、そのような上限を超えたパーティションに対するアクセスを実現可能なメモリカードと、そのようなパーティションをメモリカード上に作成する処理をコンピュータに実行させるためのパーティション作成プログラムを提供することにある。
【課題を解決するための手段】
【0013】
以下、本発明において採用した構成について説明する。
本発明のメモリカードは、記憶領域上に、基本パーティション及び拡張パーティションが作成されるとともに、前記拡張パーティション内には、更に論理パーティションが作成されることにより、前記基本パーティション及び前記論理パーティション内に、ファイルを作成可能に構成されたメモリカードであって、前記拡張パーティションが、前記基本パーティション内に含まれる記憶領域と重複する範囲に作成されており、しかも、前記基本パーティション内には、前記論理パーティションと記憶領域が一致するファイルが作成されていることを特徴とする。
【0014】
このメモリカードにおいては、拡張パーティションが、基本パーティション内に含まれる記憶領域と重複する範囲に作成されるとともに、基本パーティション内には、論理パーティションと記憶領域が一致するファイルが作成されている。
【0015】
そのため、論理パーティションをマウントしても、基本パーティション内に作成されたファイルをループバックデバイスとしてマウントしても、論理パーティション内に作成されたファイルに対して同様なアクセスが可能となる。
【0016】
したがって、メモリカード側に作成された論理パーティションの数が、システム側でサポートするパーティション数の上限を超えている場合でも、そのような上限を超えた論理パーティションについては、その論理パーティションに対応するファイルをループバックデバイスとしてマウントすることで、その論理パーティション内のファイルに対するアクセスを実現することができる。
【0017】
このようなメモリカードのより具体的な例としては、例えば、前記基本パーティション、前記拡張パーティション、及び前記論理パーティションは、シリンダ単位で確保される記憶領域であって複数シリンダ分が物理的に連続する記憶領域上に作成され、前記基本パーティションは、FAT16に準拠したフォーマット形式で初期化されて、当該基本パーティション内のファイルは、クラスタ単位で確保される記憶領域上に作成され、しかも、前記シリンダのサイズは、前記クラスタのサイズの整数倍とされて、前記基本パーティション内では、前記シリンダの境界が前記クラスタの境界に一致させてあるものを挙げることができる。
【0018】
このようなメモリカードであれば、シリンダの境界を考慮して各パーティションが作成されるので、各パーティションともに、この種のパーティションを作成する場合の一般的な規約に準拠したものとなり、より多くのシステムでアクセスできる可能性がある汎用性の高いものとなる。また、基本パーティション内では、シリンダの境界がクラスタの境界に一致させてあるので、シリンダ単位で確保される記憶領域に作成される論理パーティションと、クラスタ単位で確保される記憶領域に作成される基本パーティション内のファイルとで、両者の境界を容易に一致させることができる。
【0019】
また、本発明のメモリカードは、MMC(Multi Media Card)又はSD(Secure Digital)メモリカードであると好ましい。ここでいうSDメモリカードには、外形的な寸法が標準的なもの以外に、外形的な寸法が標準的なものよりも小型化されたminiSDメモリカード、microSDメモリカードなども含まれる。また、容量を増大させた規格であるSDHC、SDXCなどのメモリカード、及びそれらの外形的な寸法が標準的なものよりも小型化されたものも含まれる。MMCについても同様である。
【0020】
さらに、本発明のパーティション作成プログラムは、コンピュータを、メモリカードが備える記憶領域上に、基本パーティション及び拡張パーティションを作成するとともに、前記拡張パーティション内に、更に論理パーティションを作成するパーティション作成手段として機能させることにより、前記メモリカードを、前記基本パーティション及び前記論理パーティション内に、ファイルを作成可能な状態にするパーティション作成プログラムであって、前記パーティション作成手段は、前記拡張パーティションを、前記基本パーティション内に含まれる記憶領域と重複する範囲に作成するとともに、前記基本パーティション内には、前記論理パーティションと記憶領域が一致するファイルを作成することを特徴とする。
【0021】
このようなパーティション作成プログラムによって、コンピュータを上述のようなパーティション作成手段として機能させれば、本発明のメモリカードを作成することができる。
【0022】
なお、このパーティション作成プログラムにおいて、前記パーティション作成手段は、前記基本パーティション、前記拡張パーティション、及び前記論理パーティションを、シリンダ単位で確保される記憶領域であって複数シリンダ分が物理的に連続する記憶領域上に作成し、前記基本パーティションを、FAT16に準拠したフォーマット形式で初期化して、当該基本パーティション内のファイルを、クラスタ単位で確保される記憶領域上に作成可能とし、しかも、前記シリンダのサイズを、前記クラスタのサイズの整数倍として、前記基本パーティション内で、前記シリンダの境界を前記クラスタの境界に一致させるものであると好ましい。
【図面の簡単な説明】
【0023】
【図1】メモリカードへのアクセス及びパーティション作成を実行するPCのブロック図。
【図2】メモリカード内のパーティションの構造を示す説明図。
【図3】(a)は多パーティションMMC作成処理のフローチャート、(b)はMMCの内容消去処理のフローチャート、(c)はMMCパーティション分割処理のフローチャート。
【図4】(a)は第3パーティションをFAT16フォーマット処理のフローチャート、(b)はnの計算処理のフローチャート。
【図5】第5〜11パーティションをループバックマウント可能にする処理のフローチャート。
【図6】パーティションの作成経過を示す説明図。
【図7】MBRの内容を示す説明図。
【発明を実施するための形態】
【0024】
次に、本発明の実施形態について一例を挙げて説明する。
[システム全体の構成]
図1は、パーソナルコンピュータ1(以下、PC1という)の概略的な構成を示すブロック図である。このPC1は、図1に示すように、CPU11、ROM12、RAM13、HDD14(ハードディスク装置14)、操作部15、表示部16、通信インターフェース17、及びMMC/SDデバイス18など、この種のPCとして周知の各種構成を備えている。MMC/SDデバイス18は、カードスロット18Aと、このカードスロット18Aに装填されるメモリカード18Bとで構成される。また、このPC1には、OSとしてLinux(登録商標;以下同様。)が搭載されている。
【0025】
[メモリカードの構成]
次に、上記PC1での処理によって作成されるメモリカード18Bが備える記憶領域のデータ構造について、図2に基づいて説明する。
【0026】
本実施形態において、メモリカード18Bが備える記憶領域には、基本パーティションとして、第1パーティション〜第3パーティションが作成されている。なお、以下の説明及び図中では、第nパーティションのことをパーティション#nとも表記する。
【0027】
一般に、メモリカード18B上には、最大で4つの基本パーティションか、最大で3つの基本パーティション及び最大で1つの拡張パーティションを作成可能であるが、本発明の構成を採用する場合は、4つの基本パーティションを作成することはできず、基本パーティションは最大で3つとなる。
【0028】
ただし、本発明の構成を採用するに当たって、最大数の基本パーティションを作成するか否かは任意であり、少なくとも1つの基本パーティションがあれば、本発明の構成を採用することができる。また、2つ以上の基本パーティションを作成した場合でも、本発明の構成を採用可能なパーティションは1つだけであり、残りの基本パーティションについては、一般的な周知のデータ構造とされる。
【0029】
なお、2つ以上の基本パーティションを作成した場合、その中のいずれか1つの基本パーティションであれば、どの基本パーティションであっても本発明の構成を採用可能であるが、以下、第3パーティションにおいて本発明の構成を採用した事例を示す。
【0030】
本実施形態において、まず、第3パーティションでは、任意の開始位置から連続した物理エリアをファイルとして確保可能なファイルシステムが採用される。そのようなファイルシステムの例としてはFAT16やFAT32を挙げることができ、本実施形態では、FAT16を採用している。ちなみに、Linuxで利用されるext2、ext3、及びxfsなどのファイルシステムは、一定間隔毎にスーパーブロックが割り込むデータ構造をとり、連続した物理エリアをファイルとして確保できないので、本実施形態の第3パーティションで採用するファイルシステムとしては適切ではない。なお、第1パーティション、第2パーティションでは、それぞれどのようなファイルシステムを採用してもよく、上述したFAT16やFAT32はもちろんのこと、ext2、ext3、xfsなどのLinux独自のフォーマットを採用してもよい。
【0031】
さて、第3パーティションがFAT16で初期化された場合、第3パーティション内には、図2中に示したように、ブートセクタ、FAT#1、FAT#2、ルートディレクトリなどの管理領域が作成され、それに引き続く領域として任意のデータを格納可能なデータ部が確保される。
【0032】
本発明においては、このデータ部と重複する位置に、拡張パーティションが作成され、この拡張パーティション内に複数の論理パーティションが作成される。すなわち、通常は、基本パーティションとは重ならない位置に拡張パーティションが作成されるが、基本パーティションと重なる位置に論理パーティションが作成されている点で、本発明は一般的な技術とは異なる構成となっている。
【0033】
なお、拡張パーティション内に、複数の論理パーティションが作成される点や、論理パーティションとともにEPT(拡張パーティションテーブル)が作成される点は、本発明においても一般的な技術と同様の構成となる。ただし、上述の通り、拡張パーティションが一般的な技術とは異なる領域に作成されるので、結果として、論理パーティションも基本パーティションと重なる領域に作成されることになり、この点は一般的な技術とは異なるものとなる。
【0034】
図2において、拡張パーティションである第4パーティションが、第3パーティションの枠内に描かれているのは、一般的な技術では重複しない両パーティションが重複していることを意味するものである。また、複数の論理パーティションである第5パーティション〜第11パーティションが、第4パーティションの枠内に描かれているのは、一般的な技術と同様に、これらの論理パーティションが拡張パーティションの中に作成されることを意味している。なお、EPT#5〜#11は、それぞれパーティション#5〜#11に対応するので、対応関係を理解しやすくするために#5〜#11の番号を付与してあるが、第1パーティション〜第4パーティションに対応するEPT#1〜#4は存在しない。
【0035】
つまり、第1パーティション〜第4パーティションに対応するパーティションテーブルは、MBR(セクタ0)の一部に書かれるため、EPTのような独立したパーティションテーブル専用のセクタは必要ない。EPT#5の位置は、拡張パーティションの先頭セクタと決められており、EPT#6以降の位置は、1つ前のEPTに、その位置が記述されている。
【0036】
ちなみに、第5パーティション〜第11パーティションでは、それぞれどのようなファイルシステムを採用してもよく、上述したFAT16やFAT32はもちろんのこと、ext2、ext3、xfsなどのLinux独自のフォーマットを採用してもよい。また、複数の論理パーティションは、少なくとも1つは作らないと無意味であるが、いくつ作るかは任意である。
【0037】
さらに、以上のような前提のもと、第3パーティション内には、EPT#5〜#11及びパーティション#5〜#11に対応するファイルが作成されている。これらのファイルの実データ部は、EPT#5〜#11及びパーティション#5〜#11として利用されている記憶領域と一致させてあり、見かけ上はファイルとして記憶領域が使用済みである状態にされている。これらの見かけ上のファイルは、ルートディレクトリからリンクされていてもよいし、ルートディレクトリからリンクされた他のディレクトリからリンクされていてもよい。
【0038】
このようなかたちで、EPT#5〜#11及びパーティション#5〜#11に対応する記憶領域が、見かけ上ファイルとして使用済みになっていれば、第3パーティション内に他のファイルが作成される場合でも、EPT#5〜#11及びパーティション#5〜#11に対応する記憶領域が使用されることはなく、EPT#5〜#11及びパーティション#5〜#11のデータ破壊を防ぐことができる。なお、第3パーティション内に他のファイルを作成できる余地を残すかどうかは任意であり、第3パーティションをほとんど空き領域がない状態にしてもかまわない。この場合、第3パーティションは、見かけ上、常にディスクフルの状態にあるパーティションとなる。
【0039】
また、パーティション#5〜#11に対応するファイルの中味は、パーティション#5〜#11の記憶領域そのもの、すなわち、パーティション#5〜#11のディスクイメージそのものとなる。したがって、パーティション#5〜#11に対応するファイルを、ループバックデバイスとしてマウントすれば、論理パーティションであるパーティション#5〜#11そのものをマウントした場合と同様に、各パーティション#5〜#11内のファイルに対するアクセスを実現することができる。
【0040】
この場合、パーティション#5〜#11は、あくまでもループバックデバイスとしてマウントされているのであって、メモリカード18B上の論理パーティションそのものがマウントされている訳ではない。そのため、システムの制限上、メモリカード18B上でサポートされるパーティションの総数が上限を超えている場合でも、そのようなパーティションに対応するファイルには、第3パーティション経由でアクセスできる。よって、上述のようなループバックデバイスとしてのマウントが可能となり、その結果、サポート上限を超えた論理パーティション内のファイルにもアクセス可能となるのである。
【0041】
[多パーティションMMC作成処理]
次に、上述のような特徴的データ構造を持つパーティションを作成するための「多パーティションMMC作成処理」について、図3〜図5のフローチャートに基づいて説明する。この「多パーティションMMC作成処理」は、利用者がPC1において所定のコマンドを入力することによって起動される。なお、以下の説明では、説明を簡潔にするため、便宜的にメモリカード18BのことをMMCと略称するが、SDメモリカードでもよいことはもちろんである。
【0042】
この「多パーティションMMC作成処理」を開始すると、まず、PC1は、図3(a)に示すように、MMCの内容を消去する(S110)。この「MMCの内容消去処理」は、詳しくは図3(b)に示す処理となり、PC1は、全てパーティションを削除して(S210)、MBR(セクタ0)以外の全セクタを0xE5でFILLして(S220)、「MMCの内容消去処理」を終了する。なお、図3(b)に示す処理は、念のために一連の処理として実行しているが、事前にパーティションを削除してあってもよく、その場合、図3(b)に示す処理を実行しなくてもよい。また、S220も念のために実行している処理であり、省略は可能である。
【0043】
さて、図3(b)に示す処理を終えたら、図3(a)に示すS120へと進み、PC1は、MMCのパーティション分割を実行する(S120)。この「MMCパーティション分割処理」は、詳しくは図3(c)に示す処理となり、PC1は、図6(a)に示すパターン1で、MMCをパーティション分割する(S310)。
【0044】
このパターン1は、図2に示したデータ構造と同様の領域にパーティション#4〜#11が形成されているものの、パーティション#3については、パーティション#4の先頭直前の位置に末尾があり、パーティション#3とパーティション#4の重複が生じていないデータ構造になっている。このようなパーティションであれば、通常のパーティション作成コマンドでエラーを発生させることなく作成することができる。
【0045】
このようなパーティション分割を行ったら、PC1は、パターン1のMBR(セクタ0)をファイルmbr1.datに保管する(S320)。S320において、MBRのリードは、LinuxのコマンドsfdiskのMBRバックアップ機能(−Oオプション)によって行われる。ファイルmbr1.datに保管される情報は、図7(a)に示すような情報で、先頭4バイトに引き続く5バイト目から512バイト分の情報がパターン1のMBRに相当する。
【0046】
続いて、PC1は、図6(b)に示すパターン2で、MMCをパーティション分割する(S330)。このパターン2は、図2に示したデータ構造と同様の領域にパーティション#3が形成されているものの、パーティション#4〜#11については形成されていない。したがって、このようなパーティションであっても、通常のパーティション作成コマンドでエラーを発生させることなく作成することができる。
【0047】
このようなパーティション分割を行ったら、PC1は、パターン2のMBR(セクタ0)をファイルmbr2.datに保管する(S340)。S340においても、MBRのリードは、sfdiskのMBRバックアップ機能(−Oオプション)によって行われる。ファイルmbr2.datに保管される情報は、図7(b)に示すような情報で、先頭4バイトに引き続く5バイト目から512バイト分の情報がパターン2のMBRに相当する。
【0048】
続いて、PC1は、ファイルmbr1.dat,mbr2.datからmbr3.datを作成する(S350)。mbr3.datは、図7(a)に示すmbr1.dat内のデータのうち、破線で囲った部分を抽出するとともに、図7(b)に示すmbr2.dat内のデータのうち、破線で囲った部分を抽出し、それらを合成することにより、図7(c)に示すようなデータとしたものである。
【0049】
このような合成を行うことにより、パターン1のパーティション#1,#2,#4に関する情報を保持したまま、パターン1のパーティション#3に関する情報が、パターン2のパーティション#3に関する情報で更新される。その結果、パーティション#3についてはパターン2相当で、かつパーティション#4についてはパターン1相当とされたMBRが創り出されることになる。
【0050】
続いて、PC1は、再びパターン1でMMCをパーティション分割して(S360)、MMC内にパーティション#4〜#11を作成する。ここでは、パーティション#4〜#11の他、EPT#5〜#11も作成されることになり、パーティション#3の末尾の位置だけが図2とは異なる状態になる。
【0051】
この状態において、PC1は、mbr3.datをMBR(セクタ0)に書き込んで(S370)、「MMCパーティション分割処理」を終了する。S370において、MBRのライトはsfdiskのMBRリストア機能(−Iオプション)によって行われる。S370では、ファイルmbr3.datに保管されている情報(図7(c)参照。)のうち、先頭4バイトに引き続く5バイト目から512バイト分の情報がMBRに書き込まれる。
【0052】
その結果、パーティション#3の末尾の位置に関する情報は、図6(b)に示すパターン2相当に更新されるので、その結果、パーティションの位置に関しては、図2に示すように、パーティション#3とパーティション#4が重複する位置に更新される。また、パーティション#3とパーティション#4が重複する位置になるので、結果的に、パーティション#4内にあるパーティション#5〜#11についても、パーティション#3と重複する位置に配置されることになる。
【0053】
さて、図3(c)に示す処理を終えたら、図3(a)に示すS130へと進み、PC1は、「第3パーティションをFAT16フォーマットする処理」を実行する(S130)。この「第3パーティションをFAT16フォーマットする処理」は、詳しくは図4(a)に示す処理となり、PC1は、まず、特別なパラメータを付けずに第3パーティションをFAT16フォーマットする(S410)。そして、このときのクラスタ2(先頭クラスタ)が64セクタ(32kバイト)のアライメントから何セクタ足りないかを把握するため、その足りないセクタ数nの計算を実行する(S420)。
【0054】
より詳しくは、本実施形態において、MMC上の各パーティションは、図2に示したように、シリンダ単位で確保される記憶領域となっていて、複数シリンダ分が物理的に連続する記憶領域上に作成されている。一方、FAT16でフォーマットされた第3パーティションは、1クラスタをアクセス単位としてファイルの管理が行われる。
【0055】
後述する処理では、パーティション#5〜#11やEPT#5〜#11と同一の記憶領域を、ファイル単位でアクセス可能とするための情報を作成する。このとき、第3パーティションのデータ部のクラスタ2(先頭クラスタ)が、第3パーティションの先頭からクラスタサイズの整数倍となる位置に存在していない場合、そこから1クラスタ単位で区切られる記憶領域のクラスタ境界は、シリンダ境界から常にずれた位置となってしまう。
【0056】
このようなずれが生じると、パーティション#5〜#11やEPT#5〜#11と同一の記憶領域に対し、クラスタ単位の領域をぴったりと重ねることはできなくなるので、それを回避するために、S420では、クラスタ2(先頭クラスタ)をどこから始めれば、そこから始まるクラスタ境界が、第3パーティション上のシリンダ境界にアライメントするのかを算出する。
【0057】
本実施形態の場合、FAT16でフォーマットされた第3パーティションは、1クラスタ=64セクタをアクセス単位としてファイルの管理が行われる。一方、1トラックは最大で63セクタとすることができるが、1クラスタ=64セクタに対して整数倍の関係を持つセクタ数を1トラックとするなら、1トラック=32セクタとするのが最大である。そこで、本実施形態では、1シリンダを128ヘッド×1トラック当たり32セクタ=4096セクタとし、これにより、1シリンダにちょうど64クラスタが含まれる関係とした。
【0058】
このような前提のもと、S420では、詳しくは図4(b)に示す処理が実行される。この処理を開始すると、PC1は、第3パーティションの先頭セクタ(PBR)をリードし(S510)、PBRから必要な情報を取得する(S520)。PBR上で、以下に示すアドレス(バイト数)には、0x000d(1):1クラスタ中のセクタ数、0x000e(2):予約セクタの数、0x0010(1):FATの数(通常2)、0x0011(2):ルートディレクトリエントリ数、0x0016(2):1つのFAT中のセクタ数、などが格納されており、S520ではこれらの情報を取得する。
【0059】
続いて、PC1は、先頭クラスタ(クラスタ2)の位置を計算する(S530)。先頭クラスタ(クラスタ2)の位置は、次の計算式;予約セクタの数+FATの数×1つのFAT中のセクタ数+ルートディレクトリエントリ数×32÷512、に基づいて算出することができる。ちなみに、1つのディレクトリエントリが32バイトで、1セクタが512バイトなので、ルートディレクトリのセクタ数はルートディレクトリエントリ数×32÷512となり、通常、この除算で端数が出ることはない。
【0060】
本実施形態の場合、予約セクタの数+FATの数×1つのFAT中のセクタ数+ルートディレクトリエントリ数×32÷512=1+2×180+512×32÷512=393となる。したがって、S410で作成されたクラスタ2の位置は、第3パーティションの先頭から393セクタ後であることがわかる。ただし、393セクタは、1クラスタ=64セクタの倍数には該当しないので、この位置から先頭クラスタ(クラスタ2)が始まると、データ部のクラスタ境界は、上述のシリンダ境界とは一致しない状況になる。
【0061】
そこで、PC1は、「クラスタ2の位置」を64で割り(S540)、その答えをp余りqとして、q(余り)が0か否かを判断する(S550)。ここで、余り0なら(S550:はい)、たまたま「クラスタ2の位置」が第3パーティション上の64セクタ単位境界から始まっていることになるので、この場合はn=0(すなわち、「クラスタ2の位置」をずらす必要なし。)と算出される。一方、S550で余り0ではないなら(S550:いいえ)、n=64×(p+1)−「クラスタ2の位置」と算出される。
【0062】
本実施形態の場合、クラスタ2の位置は第3パーティションの先頭から393セクタ後であったので、393÷64=6余り9となり、n=64×(p+1)−「クラスタ2の位置」=64×(6+1)−393=55となるので、あと55セクタ分後にずらせば、「クラスタ2の位置」が64セクタ(32kバイト)境界でアライメントすることがわかる。
【0063】
こうして図4(b)に示す処理を終えたら、図4(a)に示すS430へと進み、PC1は、mkfs.vfatコマンドを“−Rn+1”のパラメータ付きで実行し、第3パーティションを再度FAT16フォーマットし(S430)、「第3パーティションをFAT16フォーマットする処理」を終了する。
【0064】
−Rオプションは、予約セクタの数を指定するオプションであり、省略時には上述の通り、予約セクタが1となる。したがって、先に説明したように予約セクタが1の状態において、あと55セクタ分後にずらせば、「クラスタ2の位置」が64セクタ(32kバイト)境界でアライメントするのであれば、予約セクタを56にすることで、「クラスタ2の位置」を64セクタ(32kバイト)境界でアライメントさせることができるとわかる。なお、本実施形態では、無条件でS430を実行しているが、S420でn=0となった場合、S410とS430は実質的に差異のない処理となるので、この場合は、S430を実行しなくてもよい。
【0065】
さて、図4(a)に示す処理を終えたら、図3(a)に示すS140へと進み、PC1は、「第5〜11パーティションをループバックマウント可能にする処理」を実行する(S140)。この処理は、詳しくは図5に示す処理となり、この処理を開始すると、PC1は、第3パーティションのFAT1、FAT2を変更する(S610)。FAT1の内容としては、クラスタ2が、ファイル(後述するサブディレクトリ“pat”)として利用されている旨の情報、パーティション#5〜#11やEPT#5〜#11それぞれに対応する複数クラスタが、ファイルとして利用されている旨の情報などが登録される。なお、FAT1、FAT2は、同一内容を持つので、FAT1を作成後に、そのコピーがFAT2に書き込まれる。
【0066】
続いて、PC1は、第3パーティションのルートディレクトリを変更する(S620)。このS620では、第3パーティションのボリューム名、サブディレクトリ“pat”がルートディレクトリに登録される。なお、サブディレクトリ“pat”の実データ部分の先頭はクラスタ2とされ、これにより、ルートディレクトリからFATを参照することで、FATの情報からクラスタ2がファイルの終端でもあることを把握でき、その結果、サブディレクトリ“pat”は、クラスタ2と同じ意味であることが判ることとなり、実データ部分へのアクセスが可能となる。
【0067】
そして、PC1は、第3パーティションのクラスタ2(サブディレクトリ“pat”)を変更し(S630)、「第5〜11パーティションをループバックマウント可能にする処理」を終了、以上で「多パーティションMMC作成処理」を終了することになる。S630では、パーティション#5〜#11やEPT#5〜#11それぞれに対応するファイル名と、それぞれの開始クラスタ番号とを対にした情報が、クラスタ2に書き込まれる。このとき、ルートディレクトリと違い、クラスタはフォーマットで初期化されないので、1クラスタ全体(64セクタ、32kバイト)を書き込む必要がある。これらの情報が書き込まれると、例えば、パーティション#5に対応するファイル名と、その開始クラスタ番号とを、対にしてクラスタ2(サブディレクトリ“pat”)から読み取ることができるようになる。したがって、FATを参照することで、FATの情報からパーティション#5の開始クラスタ2から引き続くクラスタ番号を順に辿り、ファイルの終端に至るまでの全クラスタ番号を把握でき、これにより、パーティション#5に対応する全ての実データ部分へのアクセスが可能となる。
【0068】
こうして作成されたファイルのうち、パーティション#5〜#11に対応するファイルは、パーティション#5〜#11そのもののディスクイメージを持つファイルとなるので、このファイルをループバックデバイスとしてマウントすることにより、パーティション#5〜#11内のファイルへのアクセスが可能となる。
【0069】
[効果]
以上説明した通り、上述のようなパーティションが作成されたメモリカード18Bによれば、パーティション#5〜#11については、これらをサポートするシステムであれば、通常の論理パーティション(論理ドライブ)としてアクセスできる。一方、サポートパーティション数の上限が11未満のシステムであっても、未サポートとなる論理パーティションについては、その論理パーティションに対応するファイルをループバックデバイスとしてマウントすることで、論理パーティションへのアクセスが可能となる。
【0070】
よって、メモリカード18B上には、システムの制限を考慮することなく、所望の数だけ論理パーティションを作成することができ、その場合に、サポートパーティション数の上限値が小さいシステムで、論理パーティションへのアクセスができなくなるのを回避することができる。
【0071】
[その他の実施形態]
以上、本発明の実施形態について説明したが、本発明は上記の具体的な一実施形態に限定されず、この他にも種々の形態で実施することができる。
【0072】
例えば、上記実施形態において、MMC及びSDメモリカードを中心とする説明を行ったが、SDメモリカードの上位規格となるSDHC、SDXCなどのメモリカードや、MMCの上位規格となるメモリカードでも、本発明の構成を採用できる。また、SDメモリカードとしては、miniSDメモリカード、microSDメモリカードなど、外形寸法の異なるバリエーションもあるが、これらに本発明を適用できるのはもちろんである。
【0073】
また、上記実施形態では、第3パーティションに第4パーティションを重複させる例を示したが、拡張パーティションを基本パーティションのいずれかに重複させることが本発明の特徴であり、重複対象となる基本パーティションは、第3パーティションに限らない。すなわち、第1パーティションや第2パーティションに拡張パーティションを重複させてもよいし、1つの基本パーティションさえあれば、2つ目以降の基本パーティションが作成されているか否かは任意である。
【符号の説明】
【0074】
1・・・パーソナルコンピュータ、11・・・CPU、12・・・ROM、13・・・RAM、14・・・ハードディスク装置、15・・・操作部、16・・・表示部、17・・・通信インターフェース、18・・・MMC/SDデバイス、18A・・・カードスロット、18B・・・メモリカード。

【特許請求の範囲】
【請求項1】
記憶領域上に、基本パーティション及び拡張パーティションが作成されるとともに、前記拡張パーティション内には、更に論理パーティションが作成されることにより、前記基本パーティション及び前記論理パーティション内に、ファイルを作成可能に構成されたメモリカードであって、
前記拡張パーティションが、前記基本パーティション内に含まれる記憶領域と重複する範囲に作成されており、しかも、前記基本パーティション内には、前記論理パーティションと記憶領域が一致するファイルが作成されている
ことを特徴とするメモリカード。
【請求項2】
前記基本パーティション、前記拡張パーティション、及び前記論理パーティションは、シリンダ単位で確保される記憶領域であって複数シリンダ分が物理的に連続する記憶領域上に作成され、
前記基本パーティションは、FAT16に準拠したフォーマット形式で初期化されて、当該基本パーティション内のファイルは、クラスタ単位で確保される記憶領域上に作成され、
しかも、前記シリンダのサイズは、前記クラスタのサイズの整数倍とされて、前記基本パーティション内では、前記シリンダの境界が前記クラスタの境界に一致させてある
ことを特徴とする請求項1に記載のメモリカード。
【請求項3】
MMC(Multi Media Card)又はSD(Secure Digital)メモリカードである
ことを特徴とする請求項1又は請求項2に記載のメモリカード。
【請求項4】
コンピュータを、
メモリカードが備える記憶領域上に、基本パーティション及び拡張パーティションを作成するとともに、前記拡張パーティション内に、更に論理パーティションを作成するパーティション作成手段として機能させることにより、前記メモリカードを、前記基本パーティション及び前記論理パーティション内に、ファイルを作成可能な状態にするパーティション作成プログラムであって、
前記パーティション作成手段は、前記拡張パーティションを、前記基本パーティション内に含まれる記憶領域と重複する範囲に作成するとともに、前記基本パーティション内には、前記論理パーティションと記憶領域が一致するファイルを作成する
ことを特徴とするパーティション作成プログラム。
【請求項5】
前記パーティション作成手段は、
前記基本パーティション、前記拡張パーティション、及び前記論理パーティションを、シリンダ単位で確保される記憶領域であって複数シリンダ分が物理的に連続する記憶領域上に作成し、
前記基本パーティションを、FAT16に準拠したフォーマット形式で初期化して、当該基本パーティション内のファイルを、クラスタ単位で確保される記憶領域上に作成可能とし、
しかも、前記シリンダのサイズを、前記クラスタのサイズの整数倍として、前記基本パーティション内で、前記シリンダの境界を前記クラスタの境界に一致させる
ことを特徴とする請求項4に記載のパーティション作成プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2013−97543(P2013−97543A)
【公開日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願番号】特願2011−239260(P2011−239260)
【出願日】平成23年10月31日(2011.10.31)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】