Linuxについて [ファイル管理]

### ファイルシステム

ファイル名や更新日付など属性データ•ファイルデータ本体を効率よく管理する仕組み

### パーティション

ハードディスクを利用するために、ハードディスクを区切った単位

### Linuxのディレクトリ構造

複数のファイルをまとめて管理でき、他のディレクトリもまとめることができる
Linuxのディレクトリ構造はディレクトリが大元となるツリー状となっている

#### /ディレクトリ

大元のディレクトリで”/”をルートと読む
/ディレクトリをルートディレクトリといい、ここにディレクトリやファイルが入る

#### マウント

ハードディスクやSSD、USBメモリなどのストレージ（外部記憶装置）や、ドライブ装置に挿入した記録メディア（記憶媒体）を読み書き可能な状態にすること

#### FHS(Filesystem Hierarchy Standard)

ファイルは必ずディレクトリに入る
なので必ず/ディレクトリから始まる記述ができる

LinuxシステムはFHSという規格に基づいてディレクトリの領域が定められている
たとえば、一般ユーザ用プログラムはbinディレクトリであったり、システム管理用
プログラムはsbinディレクトリであったりなど


### ファイルの作成方法

* パーティションの作成
  fdiskコマンド

* ファイルシステムの作成
  mkfsコマンド

* マウント
  mountコマンド  


**多くのシステム管理用コマンドはrootユーザで実行する必要がある**

一般ユーザが管理用コマンドを実行するには、suコマンドなどのの実行が必要

~~~
$ su -
パスワード：00000000
#
~~~
これでrootユーザに切り替わる

## ディスクのパーティション

分割されたパーティションの情報を調べたり、パーティションを作成、削除するには
**fdisk**コマンドを使う

#### パーティションを分割する理由

* システムとデータのバックアップ頻度を差別化
* 障害発生時の影響範囲を狭める
* ファイルアクセスの速度向上

#### fdisk [オプション] [デバイスファイル]

ディスクの構造を表示
ディスクをパーテーション分割

オプション|意味
-|-
-l|デバイスのパーテーション情報を表示


### パーティションの分割

ハードディスクにはSATAとSASの２つのインタフェース（周辺機器を接続するためのハードウェア）規格が広く使われている
い１つのパーティションとして使うか２〜４つまでのパーティションに分割可能
基本パーティションもしくは拡張パーティションとなっていて、拡張の中には論理パーティションを複数作れる


たとえば
* 基本４つ
* 基本３つ+拡張１つ（この中に論理２つ）

論理は基本と同じくファイルシステムを作成して、ファイルやディレクトリを保管可能
拡張は論理を保管する役割なので、ファイルシステムを作成できない


## ハードディスクを増設して利用可能にする

新しくハードディスクにはデータ用とメモリの代わりにプログラムを置く領域(スワップ領域)の２つを作成する
利用するためにはfdiskコマンドを使いパーティションを２つに分割する

※すでに使用しているハードディスクのパーティションを操作すると、元のデータが消えるので、
指定サイズや分割数の誤りがあった場合は、変更の保存をせずに終了しなければならない


## ハードディスクを利用するまでの手順

1.増設前のデバイス構成の確認
2.ハードディスクの増設
3.増設後のデバイス構成の確認
4.パーティション情報の確認
5.パーティションの作成
6.パーティションの種類の変更
7.パーティション情報の保存
8.再起動（警告が表示されて、必要な場合）
9.ファイルシステムの作成
10.マウント
11.スワップパーティションの作成
12.スワップの追加
13.自動マウントの設定


## ファイルシステム

ディレクトリやファイル情報•データをディスクのどこに保存してあるか管理するための仕組み
ファイル名やファイルの作成時間、所有権限の情報などを管理

**ファイルシステムはオペレーティングシステムによって利用されるファイルシステムが異なる**

FS名|内容|最大サイズ|最大ファイルサイズ
-|-|-|-
ext2|Berkeley Fast File Systemを参考にした16ビット構造|16TB|2TB
ext3|ext2にジャーナル機能孵化と機能拡張|2~32TB|16GB~2TB
ext4|ジャーナリングファイルシステム。ファイルの断片化防止など拡張機能によりパフォーマンスが向上|1ER|16TB

## マウント

ハードディスクやCD-ROMを利用するには、存在しているディレクトリにマウントする必要がある
マウントするために利用するディレクトリを**マウントポイント**という


### マウントコマンド

#### mount -t タイプ -o オプション デバイスファイル マウントポイント

ハードディスクやリムーバルメディアをマウントする

オプション|意味
-|-
-t タイプ|ファイルシステムのext3やwindowsのmsdos、CDとDVDのiso9660
-o オプション|読み書きのrwや読み取り専用のroなど
デバイスファイル|ファイルシステムをアクセスするためのデバイスファイル
マウントポイント|マウントするディレクトリ


### アンマウントコマンド

#### unmount マウントポイント

ハードディスクやリムーバブルメディアをアンマウントする

## スワップ領域の作成

### スワップファイルシステムの作成

#### mkswap デバイスファイル

スワップするためのパーティション確保とファイルシステムの作成は、インストール時や新しくハードディスクを増設するときに実行する

オプション|意味
-|-
-c|不良な部分を探して利用しない
デバイスファイル|ファイルシステムをアクセスするためのデバイスファイル

### スワップの領域作成と利用

#### swapon [デバイスファイル]

作成したスワップ領域はコマンド実行により有効化

オプション|意味
-|-
-e|現在利用しているスワップ領域を表示

#### swapoff [デバイスファイル]
利用中のスワップ領域を無効化する

オプション|意味
-|-
-v|指定したスワップを無効化
-aオプション|すべてのスワップを無効化

## 自動マウント

インストール時に作成したパーティションは設定を記述することで起動時に自動マウントされる

#### mount -a
デバイスをマウントする

オプション|意味
-|-
-a|/etc/fstabファイルに指定されたswap以外のパーティションをマウント


## iノード

ext3などファイルシステムはファイルやディレクトリに対してiノード番号を振る
iノード領域にはファイルがディスク状にある位置やアクセス権限情報が確保される

#### df -i
ファイルシステムの情報を表示

オプション|意味
-|-
-i|iノード情報の表示

iノード番号の確認はlsコマンドに-iオプションをつけて実行する

## ハードリンクとシンボリックリンク

リンク機能とはファイルをコピー、移動したりせず別のディレクトリにあるように扱うことができる
つまりよく使うファイルを自分のホームディレクトリに置いてあるように使える


### ハードリンク
ファイルの実体を直接指ししめして共有
ハードリンクはiノード番号を共有することで実現しており、別のファイルシステムには作成できない

### シンボリックリンク

元ファイルが保管されている位置を示す擬似的なファイルを作成
元ファイルを消すとシンボリックリンクからのアクセスがエラーとなる

#### ln 元ファイル名 リンク名

オプション|意味
-|-
-s|シンボリックリンクを作成。-sオプションをつけない場合はハードリンクを作成


## ディスクを管理するコマンド

### ファイルシステムのチェックと修復

#### fsck デバイス名
ファイルシステムのチェックと修正をする


### ジャーナリング機能

ジャーナル情報があるファイルシステム
ext3など

ジャーナル情報があれば、修復が素早くできる

### ディレクトリ使用量の確認

#### du [ディレクトリ]
ディレクトリ使用量を調べる

#### du [ファイル] 
ファイルのサイズを調べる




オプション|意味
-|-
-s|指定ファイルや指定ディレクトリの統計を表示する



>参考書籍

>>『Linux標準教科書 v3.0.2』 LPI-Japan 2019年