Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第3回 GNU/Linux勉強会
Search
Hiroto Sasagawa
July 09, 2023
Programming
0
490
第3回 GNU/Linux勉強会
Hiroto Sasagawa
July 09, 2023
Tweet
Share
More Decks by Hiroto Sasagawa
See All by Hiroto Sasagawa
IP Anycastとリバースプロキシ
nagutabby
0
420
HSTSについて調べた
nagutabby
0
390
第1回 AWS勉強会
nagutabby
0
520
第1回 GNU/Linux勉強会
nagutabby
0
510
第2回 GNU/Linux勉強会
nagutabby
0
440
DNSを標的とする攻撃
nagutabby
0
450
EC2とCloudWatchで始める高対話型ハニーポット運用
nagutabby
0
520
Other Decks in Programming
See All in Programming
コードジェネレーターで 効率的な開発をする / Efficient development with code generators
linyows
0
100
Better Code Design in PHP
afilina
0
190
PEPCは何を変えようとしていたのか
ken7253
3
330
ABEMA iOS 大規模プロジェクトにおける段階的な技術刷新 / ABEMA iOS Technology Upgrade
akkyie
1
270
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
21
4.5k
推しメソッドsource_locationのしくみを探る - はじめてRubyのコードを読んでみた
nobu09
2
370
Learning Kotlin with detekt
inouehi
1
230
FrontendUp_新規事業で_Remixを採用した理由と対策.pdf
rymizuki
0
100
オレを救った Cline を紹介する
codehex
16
15k
15分で学ぶDuckDBの可愛い使い方 DuckDBの最近の更新
notrogue
3
880
Your Architecture as a Crime Scene:Forensic Analysis @bastacon 2025 in Frankfurt
manfredsteyer
PRO
0
130
Swift Testingのモチベを上げたい
stoticdev
2
230
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
What's in a price? How to price your products and services
michaelherold
244
12k
It's Worth the Effort
3n
184
28k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
GitHub's CSS Performance
jonrohan
1030
460k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Site-Speed That Sticks
csswizardry
4
420
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Designing for Performance
lara
605
68k
Transcript
第3回 GNU/Linux 勉強会 ディレクトリ構造、ファイルシステム 2022/8/10 笹川 尋翔
ディレクトリとファイルシステム • “ディレクトリ”という機能はファイルシステムによって 提供されている • ファイルシステムが実装されていないオブジェクトストレージ などは階層構造を持たない • 現在のLinuxはext4というファイルシステムがデフォルト
ディレクトリ構造 • treeコマンドでファイルやディレクトリ をツリーで表⽰ • -d: ディレクトリのみを表⽰ • -L: 最⼤の深さを指定
• ⽔⾊はシンボリックリンク • tmpは特殊なディレクトリ(後述)
/usr - ユーザ間で共通のプログラム - • 複数のユーザが共通して利⽤するプログラムが配置される • usr/include: C⾔語のヘッダファイル(glibc) •
/usr/bin, /usr/sbin: バイナリファイル(後述) • /usr/lib: ライブラリ
/usr/bin, /usr/sbin - バイナリファイル - • bin(binary)ファイル(コマンド)が配置される • /usr/binや/usr/sbinはデフォルトで環境変数PATHに 設定されている
• /usr/bin: ⼀般ユーザ⽤のコマンドを配置 • /usr/sbin: 管理者⽤のコマンドを配置
/boot - カーネル, GRUB - • OSを起動するために必要なファイルなどが 配置される • カーネルイメージ,
起動の際に使われる設定ファイルなど • /bootディレクトリを削除してしまうとLinuxが起動しなくなる • GRUB(GRand Unified Bootloader)の設定ファイルが 格納されている • /boot/grub/grub.cfg
/dev - デバイスファイル - • キーボード⌨やマウス🖱などと接続する際に使⽤される ファイル(デバイスファイル)が配置される • /dev/sd[a-z][数字]: HDD
• /dev/sda1: 1番⽬にロードされたHDDの1番⽬のパーティション • /dev/sdb1: 2番⽬にロードされたHDDの1番⽬のパーティション • dev/tty[数字]: 制御端末 • それぞれの端末で⼊出⼒を実現するための特殊ファイル
/etc - 設定ファイル - • システムの様々な設定ファイルが配置される • NGINX(/etc/nginx/nginx.conf), cron(/etc/cron.d) •
/etc/passwd: パスワード以外のユーザ情報 • どのユーザでも閲覧できる • /etc/shadow: 暗号化されたパスワードなどのユーザ情報 • 管理者のみが閲覧できる
/home - ホームディレクトリ - • それぞれのユーザのホームディレクトリが配置される • ただし、rootユーザのホームディレクトリは含まれない • rootユーザのホームディレクトリは/root
• ⼀般ユーザはrootユーザのホームディレクトリにはアクセス できない
/opt - サードパーティのソフトウェア - • デフォルトのシステムにはインストールされない、 サードパーティのソフトウェアが配置される • 実際には、サードパーティのソフトウェアのほとんどは /usr/local/binなどに配置されるため、あまり使われない
/tmp - ⼀時的なファイル - • ⼀時的なファイルが配置される • 全てのユーザが読み書きできる • /tmpにあるファイルやディレクトリはシステムを再起動すると
全て削除される • スティッキービットが付与されている
スティッキービット • スティッキービットが付いたディレクトリの特徴 • オーナー(所有者)と管理者のみが削除できる • 全てのユーザが読み書きできる • lsコマンドの-lオプションを⽤いて確認できる
スティッキービット • スティッキービットを付与するにはchmodを使う • 通常のパーミッションに1000を加算した値を指定する
/var - 動的なファイル - • ログやキャッシュなどの動的なファイルが配置される • /var/log: ログファイル •
/var/cache: キャッシュファイル
ファイルシステム • ストレージを管理するための機能 • 階層構造やファイルを⽤いてデータを読み書きできる • ファイルを通じてシステムのリソースにアクセスできる • /devにあるデバイスファイルが代表的な例 •
Linuxで採⽤されている有名なファイルシステム • ext(ext1), ext2, ext3, ext4, Btrfs, FAT32
ext(extended file system) • 1992年に公開された、Linux向けのファイルシステム • 16ビットのシステムに対応 • ファイルサイズの上限は64MB •
ファイル名の上限は14⽂字
ext2 • 1993年に公開された、ext1の後継のファイルシステム • ファイルサイズの上限は4TB • ボリュームサイズの上限は16TB • ファイル名の上限は255⽂字
ext3 • 2001年に公開された、ext2の後継のファイルシステム • ファイルサイズ、ボリュームサイズ、ファイル名の上限などの 基本的な仕様は同じ • ジャーナリングファイルシステム
ジャーナリングファイルシステム • ジャーナリング • “ジャーナル”という更新内容を定期的に記録する技術 • 障害が発⽣した際に、ジャーナルを元にシステムを復旧できる • 起動を⾼速化できる •
ジャーナリングファイルシステム • ジャーナリング機能を備えたファイルシステム • ジャーナリングを利⽤してメタデータの整合性を取ることで、 ファイルシステム全体のデータを保護できる
ext4 • 2008年に公開された、ext3の後継のファイルシステム • 現在、Linuxで標準的に利⽤されている • ファイルサイズの上限は16TB • ボリュームサイズの上限は1EB(1000PB) •
ジャーナリングファイルシステム
Btrfs(B-tree file system, バターエフエス) • 2007年にOracleがGPLライセンスで公開 • フォールトトレランスに重点を置いて開発 • 耐障害性が⾼い
• メタデータを⾃動的に複製することで⾼い耐障害性を実現 • B⽊に格納することから名称が付けられた • ファイルサイズの上限は16EiB
FAT32(File Allocation Table 32) • EFIシステムパーティションでよく⽤いられる • 他のファイルシステム(FAT12, FAT16)で EFIシステムパーティションを作成することもできるが、
UEFIの仕様ではFAT32を使って作成することが推奨されている
EFIシステムパーティション • ブートローダやデバイスドライバなどを格納する パーティション • Linuxをインストールする際に必要となるパーティションの1つ • Linuxの場合は1GBの領域を確保していれば⼗分