株式会社リゾーム 技術部 システム開発 第2グループの土井です。 「Linux標準教科書」読書会の第11回レポートです。第10回目のレポートはこちらです。 tech.rhizome-e.com
読書会の題材
前回に引き続きLinux標準教科書を題材としています。
11回目レポート
今回は「第12章 ファイル管理」で、参加者は6人でした。
それぞれの意見交換
Linux のファイル管理
- ルートディレクトリ直下の各ディレクトリがそれぞれ何用のディレクトリなのか曖昧なまま使っていた
- 業務でよく使うディレクトリはhome, 設定の変更のetcとログ調査目的のvar
- 昔のサーバはetcではなく、optに設定ファイルを置いている事があり、どこに設定ファイルがあるか分からない事があった
- 改めて考えると、ディレクトリで階層構造でファイルを保管できるというのは便利
- 大学時代研究でラズパイを操作するにあたって設定やログが/usr/etcや/var/logにあるのは調べたことがあったがFHSで定められているということは知らなかった
- FHS(File Hierarchy Standard)
ディスクのパーティション
- パーティションの作成等はしたことがない
- パーティション分割したことはない
- パーティションについてはそもそも知識がなかった
- 実際に構成だったりを考える部分が特に難しそう
- GPTという管理方式だとパーティションが4つまでの制約とかもないみたい
- 拡張、論理があるのはMBRという管理方式
- GPTに対応しているコマンドもある。gdiskコマンド
- 既に利用しているハードディスクのパーティション操作等、注意すべき点がいくつかあるため覚えておく
- 業務でハードディスクを増設したり、パーティションを作成したり、というのはあまりないかなあ
- パーティションの一覧の見方(fdisk -l)とかは、覚えておくとトラブル時に役に立つかもしれない
- MBR・GPTの両方に対応した、パーティション操作のコマンドとして、partedというのもある
- 意識してパーティション分けたことなかった
- パーティション分けるとアクセス速度が上昇するのは、検索スコープが分かれるからなのかな
ファイルシステム
- ファイルシステムを作成したことがない
- df -Tでファイルシステムも表示される
- dfコマンドはディスクの使用状況を確認する時によく使う
- dfコマンドはディレクトリを指定することもできる
- ファイルシステムごとのディスクの使用量は、df -h でよく確認する
- ubuntuのファイルシステムを確認するとext4だった
- ext3もしくはext4が多く利用されている
- Windowsで利用できるファイルシステムについてはいくつか聞き覚えがあった
- 普段意識していない部分の話で特にジャーナリング機能の部分はなるほどとなった
- ジャーナリング機能というのは初耳
- 読んでもよくわからなかったけど、これで実行コマンドを記録指定あるから、途中で強制的に終了されてもコマンドを見て書き込みを終了できる(書き込み中のファイルをなかったことにできる)ってことかな
マウント
- mount,unmountコマンドは使ったことがない
- マウントの単語自体はDockerとかでも出てくる
- EC2にS3のマウントする時に使ったかな、他はDockerでホストのディレクトリをマウントするとかで出てくる
- マウントするために利用するディレクトリをマウントポイントと呼ぶことを初めて知った
- AWSのハンズオンでマウントを行った記憶がある(復習しようと思った)
- OS起動時にマウントするには、/etc/fstabファイルを編集する
- WindowsだとSSDとかHDDがC:とかD:とかE:とかにマウントされて使えるようになるよね
- マウントを意識したことないからこれもLinuxならではって感じなんだろうか
スワップ領域の作成
- パーティションをスワップ領域として使うのにスワップファイルシステムを作る必要があることを初めて知った
- スワップ領域の有効・無効化用のコマンドがあるのはわかりやすい
- メモリのメトリクス監視でスワップ領域が表示されるが、どういう仕組みかは分かっていなかった(利用していないメモリ上のデータを一時退避する場所)
- メモリサイズと同じサイズでハードディスクのパーティション領域を作る
- スワップファイルシステムをパーティションに作成し、スワップ領域として利用する
- パーティション領域は mkswap コマンドで作り swapon コマンドで有効にし swapoff コマンドで無効にできる
- スワップについてイマイチわかっていなかったため勉強になった
- 実際に作成したことはこれまでなかった
- スワップ領域は作成した後に swapon コマンドを実行しなければ有効化されないという部分は意識しておきたい
自動マウント
- /etc/fstab ファイルに記述しておけば自動マウントされるのは知らなかった
- mount コマンドで /etc/fstab の設定で自動マウントする
- fstabはfile systems tableの略
- /etc/fstab にある設定ファイルに自動マウントの設定を書ける
- S3を自動マウントする時にfstabを設定した記憶がある
- やや記述が面倒な印象を持った
- 自動でできることを知っていないと、この設定を書き換えようとはならないため今後覚えておきたい
CD/DVD/USB メモリ (リムーバブルメディア) の利用
- リムーバブルメディアを使う場合はマウントする必要がある
- mount コマンドでディレクトリを指定して手動でマウントする必要がある
- メディアを取り出す前に umount でアンマウントする必要がある
- Windowsだと、自動的に○○ドライブに割り当てられるが、Linuxだと手動でマウントする必要がある
- Windowsでは意識しない部分だったため、なるほどと思った
- ラズパイでリムーバブルメディアを接続するときそういえばマウントって単語が出てきた気がする
i ノード
- ファイルやディレクトリごとにiノード番号を割り振られる
- そのためiノードの容量が足りなくなると新規にファイルを作成できなくなる
- ディスクに空きがあっても、iノード領域に空きが必要
- ファイルを作成する際はデータ領域の空き容量だけではなく、iノード領域の大きさも意識する必要がある
- ファイルシステムにファイルを作成する際にiノード領域が足りないと作成できないことは注意していきたい
- ファイルシステムを作成した時にiノード領域が確保される
- ファイルシステムには、データ領域の他にファイルごとの場所やアクセス権限などを管理するiノードと呼ばれる領域がある
- df -i で確認可能
- df -i でファイルシステムの情報を参照できる
- 手元の環境で確認すると、gunzipコマンド・gzipコマンド・zcatコマンドのiノード番号は異なっていた
- ディストリビューションによって異なるのだろうか
ハードリンクとシンボリックリンク
- 直接参照しているか、パスで参照しているか
- postgresql関連のエラーでさわった記憶がある
- シンボリックリンクはよく使うが、ハードリンクという仕組みがあることを知った
- ln コマンドでリンクを作成する
- -s オプションをつけるとシンボリックリンク、つけなければハードリンクを作成する
- ハードリンク、シンボリックリンク共に初めて聞いた
- ショートカットはファイル(.lnk)として扱うためエディタに直接貼り付けると開けないが、シンボリックリンクではそれが可能
- ハードリンクは使ったことがあったがシンボリックリンクはそもそも知らなかった
- ハードリンク
- 元ファイルを削除してもハードリンクが残っていれば消えないのか
- ファイルの実体(iノード番号)を共有する
- iノード番号で同じファイルの実態を参照する必要があるので、同一のパーティション内である必要がある
- 通常のファイルの新規作成はハードリンクを1つ作るのと同義
- 元ファイルが削除されてもハードリンクされたファイルが実行できる
- フォルダのリンクは作成不可
- シンボリックリンク
ディスクを管理するコマンド
- アンマウントした状態でfsckコマンドを実行するほうが安全
- fsckはfile system check, file system consistency checkの略
- fsck デバイス名 のコマンドでそのデバイスのファイルシステムのチェックと修復ができる
- ジャーナリング機能をもつファイルシステムだと、修復作業が素早く行える
- fsckコマンドで修正する場合、修正対象のパーティションはマウント解除してから行う
- fsckコマンドを使う場面はおそらく焦っていると思うので、問題を増やさないためにもチェックするパーティションがアンマウントされている状態であるかのチェックを行うようにしたい
- duはdisk usedの略
- duコマンドで細かいディレクトリ使用量が見える。df -h で全体を調べて深堀りする時に使えそう
- df コマンドでハードディスク全体、du コマンドでフォルダの使用量やファイルのサイズを確認できる
- df -hでファイルシステムごとの空き容量を確認して、du -sh /* で各ディレクトリのファイルサイズを確認したりするのはよくやる
まとめ
「第12章 ファイル管理」の内容は知識として知らない部分も非常に多く勉強になりました。気を付けないといけないポイント(スワップ領域は作成した後に swapon コマンドを実行しなければ有効化されない、ファイルシステムにファイルを作成する際にiノード領域が足りないと作成できないetc)は実際にLinx系のシステムを取り扱う際には気を付けていきたいと思います。
「Linux標準教科書」読書会は今回で終了となりましたが、今後の読書会にも参加していきたいと思います。