ここでは、ファイルシステムの概念と管理操作を身に付けます。
Linuxのファイル管理
Linuxのファイルを管理するためには、ハードディスクとファイルシステムとディレクトリ構造の知識が必要です。
ファイルシステムとは
ファイルシステムとは、ファイル名・更新二付けなどの属性データファイルデータ本体を効率よく管理するための仕組みです。ファイルシステムにはいくつか種類があり、利用するファイルシステムにより、ファイルをアクセスしたときに得られる効率や安全性が変わります。
パーティションとは
ハードディスクを利用するために、ハードディスクを区切った単位です。ディスクの内部を複数のパーティションを区切る作業が必要です。パーティションを分割する作業をパーティショニングと呼びます。
/ディレクトリ
Linuxのディレクトリ構造はツリー上になっていることを以前の章で説明しました。最上階層にあるディレクトリは/ディレクトリであり、ルートディレクトリと呼ばれます。/rootディレクトリとは異なるので気を付けてください。
マウント
WindowsなどのOSでは、ハードディスクやUSBメモリをつないだとき、それらを独立したドライブとして認識しますが、LinuxではハートディスクやUSBメモリを1つのデバイスファイルとして認識します。そしてそれらを1つのディレクトリとして認識させます。この操作を「マウントする」といいます。
LinuxでハードディスクやUSBメモリを利用するには、1つ目を必ず/ディレクトリにマウントします。複数のディスクを利用する場合は、2つ目以降のディスクをすでにマウントされているディスクの中のディレクトリにマウントします。ここで気を付けるべきことは、既に中身があるディレクトリにディスクをマウントすると、マウントされたディレクトリが/ディレクトリであっても中身が置き換わってしまい、今まであったディレクトリの中身は読み書きできなくなります。また、間違えても/rootディレクトリには絶対マウントしないようにしてください。
ファイルシステムの作成方法
ハードディスクを利用するには、以下の手順で作成して利用できます。
・パーティションの作成:fdiskコマンド
・ファイルシステムの作成:mkfsコマンド
・マウント:mountコマンド
これらのコマンドは/sbinディレクトリにあるシステム管理用のコマンドですので、rootユーザ(管理者)でなければコマンドを実行することができません。そのため、事前にrootユーザに切り替える必要がありますが、ubuntu環境下ではsuコマンドは使えないので、sudoコマンドの後にシステム管理用のコマンドを入力して実行してください。
ディスクのパーティション
fdiskコマンドは、分割されたパーティションの情報を調べたり、パーティションを作成、削除したりできます。
Linuxでは、システムとデータのバックアップ頻度を差別化したり、障碍児の影響範囲を狭めたりするために、パーティションを分割します。
1 |
fdisk オプション デバイスファイル |
【代表的なオプション】
【演習】
fdiskコマンドを実行して現在認識されているハードディスクのパーティション情報を表示しましょう。
以下の例に従ってコマンドを実行してみてください。
ここでは、接続されているハードディスクのデバイス名は/dev/sda1、/dev/sda2、/dev/sda5の3つです。つまり、1つ目のハードディスク(sda)が3つに分割されていることが分かります。(2つ目以降のハードディスクはsdb、sdc、sde…という風にアルファベット順になっています。)
パーティションの分割
コンピュータのハードディスクとして主にSATAとSASの2つのインターフェース(周辺機器を接続するためのハードウェア)規格が広く使われています。ハードディスクは、1つのパーティションとして使うか、最大4つまでのパーティションに分割できます。
各パーティションは、基本パーティションまたは拡張パーティションとなります。拡張パーティションは1台のハードディスクに1つだけ作成することができ、拡張パーティションの中には、さらに論理パーティションを複数作ることができます。
各パーティションは、基本パーティションまたは拡張パーティションとなります。拡張パーティションは1台のハードディスクに1つだけ作成することができ、拡張パーティションの中には、さらに論理パーティションを複数作ることができます。
【パーティション分割例】
・基本パーティションを4つ
・基本パーティションを3つ+拡張パーティションを1つ
※Linuxでは4つ以上のパーティションが必要となるケースが多いので、拡張パーティション1つと他の3つを基本パーティションという構成で使う場合が多くなります。
ハードディスクを増設して利用可能にする
新しいハードディスクには、データ用の領域と、スワップ領域(Linuxがメモリの代わりにプログラムを置いておく領域)の2つを作成します。
fdiskコマンドを用いてパーティションを分割しますが、分割後にサイズ等の変更が難しいのであらかじめどのようにパーティションを分割するか計画して行ってください。また、既に利用しているハードディスクのパーティションを操作すると、大切なデータが消えてしまうので気を付けてください。
fdiskコマンドを用いてパーティションを分割しますが、分割後にサイズ等の変更が難しいのであらかじめどのようにパーティションを分割するか計画して行ってください。また、既に利用しているハードディスクのパーティションを操作すると、大切なデータが消えてしまうので気を付けてください。
ファイルシステム
ファイルシステムとは、ディレクトリやファイルの情報やデータをディスクのどこに保存してあるか管理するためのシステムです。
ファイルシステムは、ディレクトリやファイルのファイル名やファイルの作成時間、所有権限などの情報を管理しています。また、ディスクのデータが書いてある場所と書いていない場所なども管理しています。
ファイルシステムは、ディレクトリやファイルのファイル名やファイルの作成時間、所有権限などの情報を管理しています。また、ディスクのデータが書いてある場所と書いていない場所なども管理しています。
ファイルシステムはオペレーティングシステムによって利用されるファイルシステムが異なります。Linuxの場合はディストリビューションによって採用するファイルシステムは異なりますが、多くの場合ext3もしくはext4が利用されます。CDやDVDなどはISO9600という規格のファイルシステムが使われます。
ジャーナリング機能
ジャーナリングとは、ファイルシステムに対する書き換え処理をファイルシステムに逐一記録する機能です。ジャーナリング昨日はコンピュータ我流停止するなどの障害時に有効となります。コンピュータが急停止し、ファイルのデータがファイルシステムに書き込み途中であった場合、処理されていないコマンドを対処します。ext3ファイルシステム以降のファイルシステムはこのジャーナリング機能を取り入れています。
マウント状態の表示
dfコマンドを実行すると、現在マウントされているファイルシステムのリストを表示できます。
例えば、udevは/devディレクトリに、/dev/sda1は/ディレクトリにマウントされていることが分かります。
このようにマウントするために利用するディレクトリを「マウントポイント」といいます。
ファイルシステムの作成
ハードディスクを利用するためには、パーティションに分割した後ファイルシステムを作成します。ファイルシステムの作成にはmkfsコマンドを使います。
1 |
mkfs オプション |
【代表的なオプション】
マウント(mountコマンド)
ハードディスクやリムーバブルメデイアなどをマウントポイントにマウントするためにmountコマンドを使います。
1 |
mount -t タイプ -o オプション デバイスファイル マウントポイント |
【代表的なオプション】
アンマウント(umountコマンド)
マウントされたハードディスクやリムーバブルメディアを利用しなくなるとアンマウントします。アンマウントするには、umountコマンドを使います。
1 |
umount マイウントポイント |
スワップ領域の作成
Linuxのカーネルと呼ばれる根幹のプログラムは、ハードディスクからプログラムやデータをメモリ領域へ読み込んで実行します。プログラムやデータを新たに読み込むための空きメモリ領域がなくなると、Linuxのカーネルは今利用していないメモリ上のプログラムやデータをスワップ領域へ一時的に退避させます。
スワップファイルシステムの作成
スワップ領域を作成するには、mkswapコマンドを実行します。
1 |
mkswap デバイスファイル |
【代表的なオプション】
スワップ領域の作成と利用
スワップ領域は作成した後にswaponコマンドを実行すると有効化できるようになります。
無効化するときにはswapoffコマンドを使います。
1 |
swapon デバイスファイル |
【代表的なオプション】
1 |
swapoff デバイスファイル |
【代表的なオプション】
シンボリックリンクとハードリンク
リンク機能は、ファイルをコピーしたり移動したりせずに、別のディレクトリにあるように扱うことができる機能です。例えば、コマンドの引数としてファイルやディレクトリを指定する場合、パスが長くて複雑になると入力を間違える可能性があると思いますが、リンク機能を使えばよく使うファイルを自分のホームディレクトリにおいてあるように扱うことが可能となります。
ハードリンク
ハードリンクは、ファイルの実態を直接指し示して共有します。ハードリンクを削除しても元ファイルは削除されません。ハードリンクは、iノード番号を共有することで実現しているので、別ファイルシステムには作成することができません。
シンボリックリンク
シンボリックリンクは、元ファイルが保管されている位置を示す疑似的なファイルを作成します。シンボリックリンクを消しても元ファイルに影響はありません。元ファイルを消すとシンボリックリンクからのアクセスはエラーとなります。シンボリックリンクは、別ファイルシステムのあいだで作成することができます。windowsでいうショートカットと似たようなものと認識してもらって構いません。
1 |
ln 元ファイル名 リンク先名 |
【代表的なオプション】
①ハードリンクの作成
【演習】
/usr/bin/file(fileコマンドの実行ファイル)のコピーをホームディレトクトリに作成し、ハードリンクを作成してみましょう。
その後、コピーしたfileファイルを削除してもfile2が実行できるのを確認しましょう。
②シンボリックリンクの作成
lessコマンドのマニュアルをリダイレクトでファイル出力したものにシンボリックリンクを張ってシンボリックリンクを参照してみましょう。
ディスクを管理するコマンド
ハードディスクを管理するコマンドとして、ファイルシステムをチェックして修復するfsckコマンドや、ファイルやディレクトリが使っているディスク容量を調べるduコマンドがあります。
ファイルシステムの確認と修復(fsckコマンド)
コンピュータが異常終了するなど正常にシャットダウンが行われないと、ファイルシステム「のファイル管理情報とハードディスクに書き込まれたデータ間でつじつまが合わなくあることがあります。この場合、fsckコマンドを使って整合性を確認し、修復を行う必要があります。
※このコマンドは、異常終了した後のシステム起動時に自動的に実行されます。
1 |
fsck デバイス名 |
ディレクトリ使用量の確認(duコマンド)
細かいディレクトリの使用量を調べるにはduコマンドを使います。
1 |
du ディレクトリorファイル |
【代表的なオプション】
【演習】
自身のホームディレクトリの使用量を確認してみましょう。