Skip to content

Latest commit

 

History

History
252 lines (248 loc) · 14.5 KB

203-filesystem-and-devices.md

File metadata and controls

252 lines (248 loc) · 14.5 KB

ファイルシステムとデバイス

Linuxファイルシステムの操作と保守

  • ファイルシステム
    • 記憶装置にファイルを保存して管理する仕組み
    • ルートファイルシステム
      • ルート以下のディレクトリに他のファイルシステムをマウントすることで複数のファイルシステムからなるディレクトリ構造を作ることができる
    • VFS
      • Virtual File System
      • Linuxで異なるファイルシステムの違いを吸収するためにおm地居られる仕組み
  • ハードディスクを利用するための手順
    • fdiskでパーティションを切る(基本パーティション、拡張パーティションを作成)
    • mkfsでファイルシステムをフォーマットし、ファイルシステムを作る
    • mountで作ったファイルシステムをマウント
  • 主なファイルシステムの種類
    • ext2
      • Linuxで標準的に使われる。ジャーナリング機能をもたない。Second Extended Filesystem
      • tune2fsコマンドを使ってext3に変換できる
    • ext3
      • ext2にジャーナリング機能を加えたもの
      • btrfs-convertコマンドでbtrfsに変換できる
    • ext4
      • ext3の後継で、大容量のファイルシステムをサポート
      • Linuxで最も標準的に使われている
      • RHEL6, Ubuntuのルートファイルシステムタイプ
    • xfs
      • シリコングラフィックス社により開発された高性能なファイルシステム
      • ジャーナリング昨日あり
      • RHEL7及びその派生OS(CentOS, Oracle Linuxなど)のルートファイルシステムタイプ
    • btrfs
      • B-tree file system
      • Linux向けの新しいファイルシステムで、サブボリューム(subvolume)を構成しスナップショットなどの機能を持つ
      • 従来のファイルシステム+LVM。データの破損も検出、破棄、修復が可能
      • ZFSを参考にして開発された
      • コマンド
        • mkfs.btrfs btrfsを作成
        • btrs-convert ext3からbtrfsに変換できる
        • btrfs filesystem show ファイルシステムの情報を表示
        • btrfs subvolume snapshot スナップショットを作成
    • ZFS
      • OracleのSolarisで使用
      • btrfsが参考としたファイルシステム
    • nfs
      • ネットワークファイルシステム。ネットワークを介したリモートのファイルにアクセス
    • iso9660
      • CDROMで使われる
    • FAT/VFAT
      • フラッシュメモリで利用
    • ntfs
      • 近年のwindowsで利用されえいるファイルシステム
    • tmpfs
      • メモリ上に配置(RAMディスク)
    • swap
      • 物理メモリのスワップ先
  • ファイルシステムの情報
    • /etc/fstab
      • ファイルシステムのマウントの設定が書かれているファイル
      • fstabに設定されていると、mountコマンドでデバイスファイルまたはマウントポイントのみの指定でマウントすることができる
      • 書式は、デバイス、マウント先、種類、マウントオプション、dumpフラグ、fsckフラグ
      • デバイス
        • デバイスファイル、ラベル、UUID
        • ラベルやUUIDを指定する場合は、LABEL=/boot, UUID=hoge のように指定する。ラベルやUUIDはblkidコマンドで確認できる
      • マウントオプション
        • defaults デフォルト設定
          • async, auto, exec, nouser, rw
        • exec バイナリの実行を許可
        • user 一般ユーザでマウント可、マウントしたユーザのみアンマウント可
        • users 一般ユーザでマウント可、誰でもアンマウント可
        • nouser 一般ユーザによるマウントを禁止。管理者権限のみでマウント可
        • uid マウントしたファイルシステム上のファイルの所有者を指定する
    • /etc/mtab
      • 現在のマウント状況を確認するファイル
      • 設定ファイルではないので編集はできない
      • /proc/mountsにも同じ情報がある
    • /proc/filesytems
      • カーネルが利用可能なファイルシステムの一覧が書かれているファイル
    • blkid
      • block identification
      • デバイスのラベル、UUID、ファイルシステムの種類などを表示するコマンド
      • /dev/disk/by-uuid でもUUIDを確認できる
  • ext2/ext3ファイルシステムの構造
    • ブロック単位で管理されており、ブロックには、データブロック、iノードブロック、スーパーブロックがある
    • スーパーブロックは、ファイルシステム全般のメタ情報が格納されている。冗長化されていて同一の内容がファイルシステムに複数存在する
    • iノードブロックは、ファイルのメタ情報を保持している
    • ブロックグループでまとめられている
  • マウント、アンマウント
    • デバイスとその上に構築されているファイルシステムをOSに認識させ、指定のディレクトリに割当、そのディレクトリ以下のパスでファイルシステム内にアクセスできるようになる
    • mountコマンド
      • mount [オプション] [デバイス] [マウント先]
      • オプション指定なしで、現在マウントされているファイルシステムの一覧を表示
      • -a, —all すべてのファイルシステムをマウント。noautoオプションが指定されているものは除く
      • -o, —options マウントオプションを指定
      • -t, —types ファイルシステムの種類を指定
    • unmountコマンド
      • -a /etc/mtab にあるファイルシステムをすべてアンマウント
      • -t 指定したファイルシステムを対象
    • fuserコマンド
      • file user。fileを使っているuserを調べる
      • ファイルやソケットを使用しているプロセスを特定する
  • sync
    • ディスクバッファ領域にあるデータをディスクに書き込む
  • スワップ領域
    • 物理メモリを超えたデータを退避するためのハードディスク上の領域
    • スワップ領域の有効化手順
      • スワップ領域として使いたいサイズのファイルを作成する
      • mkswapコマンドで、作成したファイルをスワップ領域として初期化する
      • swaponコマンドで、作成したファイルをスワップ領域として有効化する
    • mkswap
      • スワップ領域を作成、初期化
    • dd
      • dataset definition
      • データをブロック単位でコピーするコマンド
      • マスターブートレコードのバックアップ
      • if= 入力ファイル(デバイス)を指定
      • of= 出力ファイル(デバイス)を指定
    • swapon
      • スワップ領域を勇往
    • swapon -s, swapon --summary
      • システムで有効になっているスワップ領域の利用状況を調べるコマンド
      • /proc/swaps にも同様の情報が書かれている
  • パーティション
    • ハードディスクの領域を分割
    • パーティション分割のメリット
      • ファイルのバックアップやシステムのアップデータが必要な場合に便利
      • 障害に強い
      • HDDを有効活用できる
    • パーティション分割のデメリット
      • 見積もりミスによってパーティションの使用率に偏りが発生する(かもしれない)
    • MBR形式とGPT形式がある。MBR形式は、基本パーティションと拡張パーティションがあり、基本パーティションは4つまで作成可能、それ以上分割するには拡張パーティションに割り当てて論理パーティションにする
    • fdisk
      • format disk
      • パーティションの操作操作を行うコマンド
  • SMART
    • ハードディスクの問題を発見するための自己診断機能
    • Self-Monitoring, Analysis and Reporting Technology System
    • smartdデーモンで定期的に監視、smartctlコマンドで監視内容を確認

ファイルシステムの作成とオプションの構成

  • ファイルシステムを作成するコマンド(mkfs系)
    • mke2fs
      • ext2/ext3/ext4を作成するコマンド
      • mkfs.ext2もmkfsもない部的にはmke2fsが呼ばれている
      • デフォルトでext2ファイルシステムを作成
      • -j ext3として作成する
      • -t ファイルシステムの種類を指定
      • -b ブロックサイズをbyte単位で指定
      • -L ラベルを指定
      • -m root用予備領域を%単位で指定
    • mkfs.ext2, mkfs.ext3, mkfs.ext4
      • ex2,ex3,ex4のファイルシステムを作成するコマンド
    • mkfs.xfs
      • xfsを作成するコマンド
    • mkfs
      • いろいろなファイルシステムを作ることができる
      • 内部でmkfs.ext2などを呼んでいる
    • mkisofs
      • make iso filesystem
      • CD-ROMなどに使われるフォーマット ISO9660 のファイルシステムを作成するコマンド。mkfs系のコマンドとは異なる
      • -J Windows系拡張のJolietフォーマットで作成
      • -R Unix系拡張のRockRidgeフォーマットで作成
      • -udf DVDで用いられるUDFフォーマットで作成
  • ファイルシステムをチェックするコマンド(fsck系)
    • e2fsck
      • ext2/ext3/ext4のチェック
      • -b superblock スーパーブロックを使い復元
      • -c badblocks 不良ブロックのチェック
      • -p preen(Automatically repair) 自動的に不良ブロックを修復する
    • xfs_check
      • xfsのチェック
    • fsck
      • いろいろなファイルシステムをチェック
    • リブート後にファイルシステムのチェックを行わせるには、shutdown -r -F now
  • 作成済みファイルシステムに対するコマンド(ユーティリティコマンド)
    • tune2fs
      • ext2/ext3/ext4の設定を行う
      • tune ext2 filesystem
      • -j ext2をext3に変換
      • -l スーパーブロックの内容を出力
      • -L ラベルをつける
      • -m root用予備領域を%単位で指定
    • dumpe2fs
      • ext2/ext3/ext4の詳細を表示
      • スーパーブロックの内容を確認できる
    • e2label
      • ext2/ext3/ext4のラベルを操作
      • tune2fsの-Lオプションでラベルを付けることもできる
    • debugfs
      • ファイルシステムの対話的デバッグを行うコマンド
      • ext2/ext3/ext4が対象
    • xfs_admin
      • xfsの設定を行う
    • xfs_info
      • xfsの詳細情報を表示する
    • xfsdump
      • ファイルシステムのバックアップが可能
    • xfsrestore
      • バックアップからXFSファイルシステムの復元を行う
  • ジャーナリング
    • 実データをディスクに書き込む前にメタデータを書き込んでおくことで、不正な終了時の不整合を防ぐ機能
    • 手順
      • 書き込みが操作が発生
      • メタデータの更新内容をログに書き込む
      • データとメタデータをディスクに書き込む
      • ディスクへの書き込みが完了したら、該当のログを破棄する
  • オートマウント
    • CD-ROMやDVD-ROMなど必要なときだけ自動でマウントできる機能
    • automountデーモン
    • /etc/auto.master
      • オートマウントの設定ファイル。マスターマップと呼ばれる
      • ファイルのフィールドは左から順に、マウントベース、マップファイル、オプション
      • マウントベースは、マウントされるディレクトリ
      • 編集したらautofsの再起動、もしくは/etc/init.d/autofs reloadが必要
    • マップファイル
      • マウントベースごとの設定ファイル。個別のマウント設定を行単位で列挙
      • マップファイルは左から順に、マウントベース下のディレクトリ名 [マウントオプション] デバイスファイル名
  • ファイルシステムの暗号化
    • 手順
      • ブロックデバイスへの暗号化マッピングを作成する
      • 暗号化マッピングにファイルシステムを作成する
      • 暗号化ファイルシステムをマウントする
    • dm-crypt
      • device-mapper crypt
      • ブロックデバイスの暗号化方法のひとつ
      • デバイスマッパーは、物理デバイスと論理デバイスをマッピングする機能
      • cryptsetupコマンド
        • 暗号化デバイスを作成、管理する
        • create 暗号化マッピングを作成
        • remove 暗号化マッピングの削除
        • status 暗号化マッピングの状態表示
      • /dev/mapperディレクトリ配下にファイルシステムを作成
    • LUKS
      • Linux Unified Key Setup。ラックス
      • Linuxで標準的に使用される暗号化ファイルシステムの仕様
      • dm-cryptを用いて実装されている
      • 暗号化管理のためにパーティションごとに8つの鍵を持つことができる。KeySlotと呼ばれる
      • 使用手順
        • デバイスをLUKSパーティションとして初期化
        • LUKSパーティションを開く
        • 開いたLUKSパーティションにファイルシステムを作成する
        • 暗号化ファイルシステムをマウントする
    • LUKSを使用する場合のcryptsetupのコマンド
      • luksFormat デバイス名
        • 指定したデバイスをLUKS(暗号化)パーティションとして初期化
      • luksDump デバイス名
        • 指定したデバイスの暗号化の状態を表示
      • luksOpen デバイス名 名前
        • デバイスとLUKSパーティション名を指定し、LUKSパーティションを開く
      • luksClose 名前
        • LUKSパーティションを閉じる