差分

移動先: 案内検索

ファイルシステム

3,818 バイト追加, 2018年3月4日 (日) 17:32
/* tmpfs、ramfsファイルシステム */
=== ファイルシステムのマウント ===
MOでもUSBメモリでもハードディスクでも、あるいはファイルであってもブロックデバイスとみなせるものなら同じですが、話を単純化するために、ここではハードディスクということで話を勧めましょう。MOでもUSBメモリでもハードディスクでも、あるいはファイルであってもブロックデバイスとみなせるものなら同じですが、話を単純化するために、ここではハードディスクということで話を勧めましょう。
ファイルシステムとはファイルを管理するための仕組み全体を指します。ハーディスクのパーティションをext2やext3、あるいはそれ以外のファイルシステムの形式にフォーマットしそれをファイルシステムとしてマウントします。ファイルシステムとはファイルを管理するための仕組み全体を指します。ハーディスクのパーティションをext2やext3、あるいはそれ以外のファイルシステムの形式にフォーマットし、それをファイルシステムとしてマウントします。
まずハードディスクのパーティションを設定し、各々のパーティション上にファ
わかります。このディレクトリをマウントポイントと呼びます。
 
 
<pre class="bash">
$ df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda1 28834716 1593820 25776172 6% /
/dev/hda2 48062468 4817440 40803552 11% /home
</pre>
 
 
/dev/hda1は、IDE 0 Master に接続されるハードディスクの最初のパーティショ
ンのことで、hda2は2番目のパーティションを意味しています。ハードディス
クをまるごと1パーティションにすることもできます。下の例はSCSI接続されクをまるごと1パーティションにすることもできます。ているMO装置にMOのメディアを入れてマウントしている状態です。ちなみにこSATAのインタフェースの場合は/dev/sdaとなります。のMOはこのテキスト書いているLinuxマシンに接続しており、主に定期的なバッその中のパーティションが/dev/sda1や/dev/sda2となります。クアップに使っています。sd?と名前がつくスペシャルデバイスファイルはSCSIのインタフェースでアクセスする記憶装置です。実際にはハードウェア側がSCSIのインタフェースをもっていなくてもスペシャルデバイスファイルを経由しエミュレーションとしてSCSIを提供するという意味です。
/dev/sda 610940 206972 372936 36% /mnt
Linuxでハードディスクに利用できるファイルシステムの種類にはext2、ext3、SATAのハードディスクだけではなくUSBメモリを使うときも/dev/sd?となります。JFS、XFS、ReiserFSなど色々な種類が使えます。それぞれに良さがあるのです下の例はUSBメモリを挿した時の状態です。が、慣れなければ、この中で一番古いext2を使うのが無難でしょう。これらのこのUSBメモリには ''HIRONOBU'' と名前を設定しています。ファイルシステムは、それぞれ性能や機能に特徴があります。選ぶのに悩むほどの選択肢が用意されています。これがWindows XPやWindows 2003 Server だと互換性を持たすためのFATが2種類と、主に使うNTFSの合計3種類で、実質NTFSの1 種類だけです。多くのディストリビューションのデフォルトでは /media/ユーザ名 の下に自動的にマウントします。
:調べてみよう| Linux以前のUnixも一つのオペレーティングシステムは主たるファイルシステムは1つだけでした。それは何故でしょう。
ファイルシステムの構築とマウントは非常に簡単です。ハードディスクを指定<pre class="bash">してフォーマットし、それとマウントポイントとなるディレクトリへマウント/dev/sdg1 3804348 375556 3215828 11% /media/hironobu/HIRONOBUするだけです。</pre>
/dev/sdaに接続されているMOデバイスをext2のファイルシステムを構築し、マ; 補足ウントする手順は次のようになります。: [[USBメモリをLinuxファイルシステムとして使う]]
# /sbin/mkfs -t ext2 /dev/sda
# /bin/mount -t ext2 /dev/sda /mnt
# df /mnt/mo
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/sda 610940 256 610684 1% /mnt
まだ何も使っていない状態でも、ファイルの属性情報を管理するのに必要な領
域が既に事前に取られています。
# cd /mnt Linuxでハードディスクに利用できるファイルシステムの種類にはext2、ext3、ext4、 # ls -lJFS、XFS、ReiserFSなど色々な種類が使えます。 total 12近年のディストリビューションではデフォルトのファイルシステムがext4というものが多いですが、 drwx------ 2 root root 12288 Nov 25 21:21 lost+foundこれらのファイルシステムは、それぞれ性能や機能に特徴があります。ユーザの選択肢が広く、その選択をユーザにゆだねているのもまたLinuxの特徴です。
ext2の場合、フォーマットしたパーティションに(今回の説明では1ディスク1 パーティション)lost+foundというディレクトリができます。このディレクト:調べてみよう| Linux以前のUnixも一つのオペレーティングシステムは主たるファイルシステムは1つだけでした。それは何故でしょう。リはハードディスクの故障などで内容が破損してしまったファイルの残骸が格納されます。ファイルシステムの構築とマウントは非常に簡単です。ハードディスクを指定してフォーマットし、それとマウントポイントとなるディレクトリへマウントするだけです。
=== inode ===
できません。ls -iを使えばinode番号が表示されます。
 
<pre class="bash">
$ ls -i *.txt
540463 memo.txt 540446 section-4.txt 540452 section-8.txt
540416 section-2.txt 540420 section-6.txt
540443 section-3.txt 540447 section-7.txt
</pre>
inode番号はディレクトリ中にあるファイル名とinode番号を管理するデータ構造
これはLinuxのような今日的なUnix系のオペレーティングシステムでは、
複数のファイルシステムの方式を同時に持っているからです。
 
 
=== VFS ===
ここでは下位レイヤでのファイルシステムを個別に説明します。
 
その前に、現在利用しているGNU/Linuxのシステムがどのようなファイルシステムをサポートしているのかを確認する時は /proc/filesystems を参照するとわかります。
 
<pre class="bash">
% cat /proc/filesystems
</pre>
=== ext2 ファイルシステム ===
<ref>ext2に関する資料
http://www.linux.or.jp/JF/JFdocs/Filesystems-HOWTO-6.html</ref>
は正式名称Second Extented Filesystemといい、ext2fsとも書きます。Linux のために開発されたファイルシステムです。とも書きます。Linuxのために開発されたファイルシステムです。前身である前身である Ext ファイルシステムの次のバージョンと位置づけられます。最大ファイルシファイルシステムの次のバージョンと位置づけられます。現在も /boot のファイルシステムは ext2 ファイルシステムを利用しているディストリビューションが多くあります。ステムサイズ4TB、最大ファイルサイズ2GB 最大ファイルシステムサイズ4TB (カーネル2.6からは32TB)、最大ファイルサイズ2GB まで扱えます。
ext2ファイルシステムはファイルの読み書きで良い局所性を出すための工夫がされています。ext2ファイルシステムはファイルの読み書きで良い局所性を出すための工夫が書き出しが行われる時、同じブロックグループ内で、隣接する8ブロックを先行して割り当てするので、連続しての書き込みの効率があがります。されています。書き出しが行われる時、同じブロックグループ内で、隣接する8ブロックを先行して割り当てするので、連続しての書き込みの効率があがります。このような書き方をするので当然、連続しての読み込みをする際のヒット率が高くなります。このような書き方をするので当然、連続しての読み込みをする際のヒット率が高くなります。
=== ext3 ファイルシステム ===
ext3
<ref>ext3に関する資料 http://www.valinux.co.jp/docs/pdf/D-3.pdf</ref>
ext2をベースにジャーナリングファイルシステムext2 をベースにジャーナリングファイルシステム(Journaling Filesystem)に拡張したものです。拡張したものです。ジャーナリングファイルシステムとはメタデータと呼ばれジャーナリングファイルシステムとはメタデータと呼ばれるファイル属性などの変更履歴をジャーナルログに記録しておき、ファイルシステムの整合をチェックする時は、そのジャーナルを使う方式です。るファイル属性などの変更履歴をジャーナルログに記録しておき、ファイルシext2 ファイルシステムのように整合性をチェックするためにファイルシステム全部を走査する必要がないので高速に処理ができます。ステムの整合をチェックする時は、そのジャーナルを使う方式です。ext2ファイルシステムのように整合性をチェックするためにファイルシステム全部を走査する必要がないので高速に処理ができます。最大ファイルシステムサイズ4TB、最大ファイルサイズ4TBまで扱えます。最大ファイルシステムサイズ4TB、最大ファイルサイズ4TBまで扱えます。
</ref>
などもあります。
これらはいずれもジャーナリング機能を持っており、かつ、色々な特色ある機能を持っています。これらはいずれもジャーナリング機能を持っており、かつ、特色ある機能を持っています。
JFS は IBM の AIX、
XFS はシリコングラフィックス社の IRIX といった実績のあるUNIX系OSで使われていたものであり、
それがLinuxに移植され利用されるに至っています。それが Linux に移植され利用されるに至っています。JFSにしてもXFSにしても、これらの能力を最大限に生かしきるのはサーバやクラスタといったエンタプライス環境であり、また熟練したオペレーターによる運用によって始めて能力や特性をいかせることができるといっても過言ではありません。それらを熟知した上で利用することをお薦めします。JFS にしても XFS にしても、これらの能力を最大限に生かしきるのはサーバやクラスタといったエンタープライズ環境であり、熟練オペレーターによる運用が行われる場合、これらのエンタープライズ環境で必須な障害からの復帰などの能力や特性を十分に活かすことが出来るでしょう。
; 補足 : 日常利用するディスクトップのレベルであれば、GNU/Linuxのディストリビューションがデフォルトで選択するファイルシステムで十分な能力を発揮します。
=== ext4 ===  ext4 は ext3 の後継として作られたファイルシステムです。カーネル2.6.19 から正式採用しています。ext4 のファイルシステムは1EB、ファイルサイズは16TBのサイズをサポートしています。 同時期に存在していた競合していたJFSやXFSファイルシステムから良い点を導入しするなど新しい機能や拡張を行い、また安定性も十分に備え、ext3に比べて大きく進化しています。 たとえばパフォーマンスに関してはブロックの遅延アロケーションが可能になりました。これはなるべくディスク上の物理ブロックを連続に確保するために書き込みを遅滞させます。連続した物理ブロックに書き込むことが出来るようになり、その後にファイルをリードする際に高速に読み込むことが出来るようになります。ファイルサイズが最初にわかっている場合はファイルのプリアロケーションの機能を使いディスク上の物理ブロックを予め確保することが出来ます。 他にもたくさんの新しい機能があります。調べるには下記の資料が役に立つでしょう。  * RED HAT ENTERPRISE LINUX ストレージ管理ガイド [https:/ /access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/storage_administration_guide/ch-ext4 第6章 EXT4 ファイルシステム] * IBM seveloperWorks チュートリアル Linux ext4 の徹底調査 [https://www.ibm.com/developerworks/jp/linux/library/l-anatomy-ext4/index.html 第 4 世代拡張ファイルシステム、ext4 の紹介 ] === Reiser4 / NILFS2 / Btrfs ===
JFSやXFSやReiserFSの次の世代のファイルシステムです。
* ext4 : ext3の後継
* Reiser4 : ReiserFSの後継。まったくの別実装。
* NILFS2 : Log-structured ファイルシステム、耐故障性の向上、スナップショット機能
=== tmpfs、ramfsファイルシステム ===
メモリ上に展開するファイルシステムです。メモリ上にあるのでシステムが停止すればなくなります。一時的なファイルを作成するファイルシステムとして利用されます。メモリ上に展開するファイルシステムです。メモリ上にあるのでシステムが停止すればなくなります。一時的なファイルを作成するファイルシステムとして利用されます。tmpfsは仮想記憶上に取られるので利用するシステムの記憶領域が足りない時はページイン・ページアウトが発生します。
; 調べてみよう : dfやmountコマンドを使って、自分のファイルシステムでtmpfsがどのように使われているか調べてみよう。
; 補足 : ramfsは物理的メモリしか使わないのに対し、tmpfsは仮想記憶上に取られます。つまりtmpfsは、システムの物理的記憶空間が足りなくなってきた場合、内容をスワップします。そのため、搭載している物理的メモリよりも大きなエリアを取ることも可能です。
 
=== JFFS / JFFS2 ===
 
USBストレージやSDカードなどフラッシュメモリを使った記憶装置をファイルシステムとして使うためのフラッシュ・ファイルシステムがLinuxには用意されています
<ref>
Linux フラッシュ・ファイルシステムの徹底調査 さまざまな選択肢とそのアーキテクチャー
https://www.ibm.com/developerworks/jp/linux/library/l-flash-filesystems/index.html
</ref>
フラッシュ・ファイルシステムとして
JFFS (Journaling Flash File System)、
JFFS2 (Journaling Flash File System 2)、
YAFFS2 (Yet Another Flash File System 2)
などがあります。
JFFSは現在では使われておらず、後継のJFFS2が利用されています。
 
 
フラッシュメモリ(ここではUSBストレージやSDカードに使われているNAND フラッシュ・デバイスとします)には書き込みや読み込みはハードディスクと違う動作を必要としますし、またフラッシュメモリには書き換え上限があり同じ場所で書き込みを繰り返し上限に達すると、その場所が書き込めなくなるります。そのためフラッシュメモリに特化したファイルシステムが用意されています。
 
 
一方で近年ではSDカードやUSBストレージのハードウェアも進化し特別なファイルシステムがなくとも効率よく、かつ寿命が伸びる仕組みを取り入れているのでSDカードやUSBストレージを使っているからといって必ずJFFS2のようなファイルシステムが必要であるというわけではない状況になって来ています。たとえばAndroidの場合、古くはJFFS2でしたが後にext4に切り替えています。
=== ネットワークファイルシステム ===
==== NFS ====
NFS (Network filesystem) はUnixで最初に使われたネットワークを経由してはUnixで最初に使われたネットワークを経由してファイルシステムをマウントする仕組みです。ファイルシステムをマウントする仕組みです。NFSの仕様はUNIXだけではなくNFSの仕様はUNIXだけではなく抽象化したファイルシステムとなっています。抽象化したファイルシステムとなっています。たとえば異なるUnixの種類同士たとえば異なるUnixの種類同士(例えばFreeBSDのファイルシステムとLinuxとか、あるいはSUN SolarisとSystemV SolarisとSystemV IIIとか)、あるいはUnixとWindowsといったファイルシステムの種類の異なるものでもネットワークを介して共有することができます。LANで接続あるいはUnixとWindowsといったファイルシステムの種類の異なるものでもネットワークを介して共有することができます。されたコンピュータ間でファイルを共有することを想定しています。LANで接続されたコンピュータ間でファイルを共有することを想定しています。
<pre class="bash">
$ echo 'abcd' > i
$ cat i
$ cat t
cat: t: そのようなファイルやディレクトリはありません
</pre>
ているので、ファイルの中身はまだ存在しています。
 
<pre class="bash">
$ echo 'abcd' > i
$ ln i t
合計 4
8488913 -rw-r--r-- 1 hironobu hironobu 5 2005-11-21 20:14 t
</pre>