Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第3回 GNU/Linux勉強会

第3回 GNU/Linux勉強会

Hiroto Sasagawa

July 09, 2023
Tweet

More Decks by Hiroto Sasagawa

Other Decks in Programming

Transcript

  1. 第3回 GNU/Linux 勉強会
    ディレクトリ構造、ファイルシステム
    2022/8/10 笹川 尋翔

    View Slide

  2. ディレクトリとファイルシステム
    • “ディレクトリ”という機能はファイルシステムによって
    提供されている
    • ファイルシステムが実装されていないオブジェクトストレージ
    などは階層構造を持たない
    • 現在のLinuxはext4というファイルシステムがデフォルト

    View Slide

  3. ディレクトリ構造
    • treeコマンドでファイルやディレクトリ
    をツリーで表⽰
    • -d: ディレクトリのみを表⽰
    • -L: 最⼤の深さを指定
    • ⽔⾊はシンボリックリンク
    • tmpは特殊なディレクトリ(後述)

    View Slide

  4. /usr - ユーザ間で共通のプログラム -
    • 複数のユーザが共通して利⽤するプログラムが配置される
    • usr/include: C⾔語のヘッダファイル(glibc)
    • /usr/bin, /usr/sbin: バイナリファイル(後述)
    • /usr/lib: ライブラリ

    View Slide

  5. /usr/bin, /usr/sbin - バイナリファイル -
    • bin(binary)ファイル(コマンド)が配置される
    • /usr/binや/usr/sbinはデフォルトで環境変数PATHに
    設定されている
    • /usr/bin: ⼀般ユーザ⽤のコマンドを配置
    • /usr/sbin: 管理者⽤のコマンドを配置

    View Slide

  6. /boot - カーネル, GRUB -
    • OSを起動するために必要なファイルなどが
    配置される
    • カーネルイメージ, 起動の際に使われる設定ファイルなど
    • /bootディレクトリを削除してしまうとLinuxが起動しなくなる
    • GRUB(GRand Unified Bootloader)の設定ファイルが
    格納されている
    • /boot/grub/grub.cfg

    View Slide

  7. /dev - デバイスファイル -
    • キーボード⌨やマウス🖱などと接続する際に使⽤される
    ファイル(デバイスファイル)が配置される
    • /dev/sd[a-z][数字]: HDD
    • /dev/sda1: 1番⽬にロードされたHDDの1番⽬のパーティション
    • /dev/sdb1: 2番⽬にロードされたHDDの1番⽬のパーティション
    • dev/tty[数字]: 制御端末
    • それぞれの端末で⼊出⼒を実現するための特殊ファイル

    View Slide

  8. /etc - 設定ファイル -
    • システムの様々な設定ファイルが配置される
    • NGINX(/etc/nginx/nginx.conf), cron(/etc/cron.d)
    • /etc/passwd: パスワード以外のユーザ情報
    • どのユーザでも閲覧できる
    • /etc/shadow: 暗号化されたパスワードなどのユーザ情報
    • 管理者のみが閲覧できる

    View Slide

  9. /home - ホームディレクトリ -
    • それぞれのユーザのホームディレクトリが配置される
    • ただし、rootユーザのホームディレクトリは含まれない
    • rootユーザのホームディレクトリは/root
    • ⼀般ユーザはrootユーザのホームディレクトリにはアクセス
    できない

    View Slide

  10. /opt - サードパーティのソフトウェア -
    • デフォルトのシステムにはインストールされない、
    サードパーティのソフトウェアが配置される
    • 実際には、サードパーティのソフトウェアのほとんどは
    /usr/local/binなどに配置されるため、あまり使われない

    View Slide

  11. /tmp - ⼀時的なファイル -
    • ⼀時的なファイルが配置される
    • 全てのユーザが読み書きできる
    • /tmpにあるファイルやディレクトリはシステムを再起動すると
    全て削除される
    • スティッキービットが付与されている

    View Slide

  12. スティッキービット
    • スティッキービットが付いたディレクトリの特徴
    • オーナー(所有者)と管理者のみが削除できる
    • 全てのユーザが読み書きできる
    • lsコマンドの-lオプションを⽤いて確認できる

    View Slide

  13. スティッキービット
    • スティッキービットを付与するにはchmodを使う
    • 通常のパーミッションに1000を加算した値を指定する

    View Slide

  14. /var - 動的なファイル -
    • ログやキャッシュなどの動的なファイルが配置される
    • /var/log: ログファイル
    • /var/cache: キャッシュファイル

    View Slide

  15. ファイルシステム
    • ストレージを管理するための機能
    • 階層構造やファイルを⽤いてデータを読み書きできる
    • ファイルを通じてシステムのリソースにアクセスできる
    • /devにあるデバイスファイルが代表的な例
    • Linuxで採⽤されている有名なファイルシステム
    • ext(ext1), ext2, ext3, ext4, Btrfs, FAT32

    View Slide

  16. ext(extended file system)
    • 1992年に公開された、Linux向けのファイルシステム
    • 16ビットのシステムに対応
    • ファイルサイズの上限は64MB
    • ファイル名の上限は14⽂字

    View Slide

  17. ext2
    • 1993年に公開された、ext1の後継のファイルシステム
    • ファイルサイズの上限は4TB
    • ボリュームサイズの上限は16TB
    • ファイル名の上限は255⽂字

    View Slide

  18. ext3
    • 2001年に公開された、ext2の後継のファイルシステム
    • ファイルサイズ、ボリュームサイズ、ファイル名の上限などの
    基本的な仕様は同じ
    • ジャーナリングファイルシステム

    View Slide

  19. ジャーナリングファイルシステム
    • ジャーナリング
    • “ジャーナル”という更新内容を定期的に記録する技術
    • 障害が発⽣した際に、ジャーナルを元にシステムを復旧できる
    • 起動を⾼速化できる
    • ジャーナリングファイルシステム
    • ジャーナリング機能を備えたファイルシステム
    • ジャーナリングを利⽤してメタデータの整合性を取ることで、
    ファイルシステム全体のデータを保護できる

    View Slide

  20. ext4
    • 2008年に公開された、ext3の後継のファイルシステム
    • 現在、Linuxで標準的に利⽤されている
    • ファイルサイズの上限は16TB
    • ボリュームサイズの上限は1EB(1000PB)
    • ジャーナリングファイルシステム

    View Slide

  21. Btrfs(B-tree file system, バターエフエス)
    • 2007年にOracleがGPLライセンスで公開
    • フォールトトレランスに重点を置いて開発
    • 耐障害性が⾼い
    • メタデータを⾃動的に複製することで⾼い耐障害性を実現
    • B⽊に格納することから名称が付けられた
    • ファイルサイズの上限は16EiB

    View Slide

  22. FAT32(File Allocation Table 32)
    • EFIシステムパーティションでよく⽤いられる
    • 他のファイルシステム(FAT12, FAT16)で
    EFIシステムパーティションを作成することもできるが、
    UEFIの仕様ではFAT32を使って作成することが推奨されている

    View Slide

  23. EFIシステムパーティション
    • ブートローダやデバイスドライバなどを格納する
    パーティション
    • Linuxをインストールする際に必要となるパーティションの1つ
    • Linuxの場合は1GBの領域を確保していれば⼗分

    View Slide