CentOS8に入門してみる(ファイルシステム基礎1)
普段サーバーサイドのエンジニアをやっていますが、インフラ周りの知識不足を感じることが多いのでLinuxのCentOS8に入門してみようと思います
環境はVirtualBox + Vagrantで構築していきます(前回、前々回で基本的なことを学習しました)
ちなみにVagrantfileには使いそうな物をインストールするshellを書いておこう、と思いprovisionに下記の記述を追加しましたが、vagrant up --provisionした際にすでにinstall済と表示されたのでいらなかったようです
config.vm.provision "shell", inline: <<-SHELL
sudo dnf -y upgrade
sudo dnf -y install bzip2
sudo dnf -y install tar
sudo dnf -y install vim
sudo dnf -y install bash-completion
SHELL
今回の学習テーマは「ファイルシステム」
今回はファイルシステムについて学習しますが、これはCentOS依存の知識少なめでLinuxの基礎知識中心といったものになると思います
Linuxの一般的なファイル構造
ルートディレクトリ(/)でtreeコマンドを実行してみました(treeコマンドは別途インストールしています)
各ディレクトリについては大体こんな感じらしいです
[vagrant@centuser /]$ tree -L 1
.
|-- bin -> usr/bin // 一般ユーザーが使えるコマンド
|-- boot // 起動に必要なファイル
|-- dev
|-- etc // システムの設定ファイル
|-- home // 一般ユーザーのホームディレクトリ
|-- lib -> usr/lib // ライブラリ
|-- lib64 -> usr/lib64
|-- media
|-- mnt
|-- opt
|-- proc // プロセス情報
|-- root // rootのホームディレクトリ
|-- run
|-- sbin -> usr/sbin // 管理者ユーザーが実行できるコマンド
|-- srv
|-- sys
|-- tmp // 一時的なファイル置き場
|-- usr
|-- vagrant_data
`-- var // ログなど書き換えが発生するファイル
20 directories, 0 files
ストレージ利用するために必要な工程
ストレージ利用準備としてパーティションとファイルシステムの作成が必要です
工程としては以下のようになります
①使用するストレージ(HDDだったりSSDだったり)のデバイスファイルが存在することを確認
②使用するストレージにパーティションを作成
③ファイルシステムを作成
④ファイルシステムのマウント
デバイスファイルについて
デバイスファイルはハードウェアのデバイスドライバへ命令を行う為のファイルです
デバイスファイルの主なものとして以下のものがあります
/dev/sda : 1番目のSATA/ USBドライブの為のデバイスファイル
/dev/sdb : 2番目のSATA/ USBドライブの為のデバイスファイル
/dev/sdc : 3番目のSATA/ USBドライブの為のデバイスファイル
/dev/sdd : 4番目のSATA/ USBドライブの為のデバイスファイル
/dev/sr0 : 1番目のDVD/BDドライブの為のデバイスファイル
/dev/sr1 : 2番目のDVD/BDドライブの為のデバイスファイル
/dev/st0 : 1番目の磁気テープドライブの為のデバイスファイル
/dev/st1 : 2番目の磁気テープドライブの為のデバイスファイル
(/dev/sda1とか/dev/sda2というデバイスファイルがあれば、それは/dev/sdaに作られた1番目、2番目パーティションのこと)
ファイルシステムについて
ファイルシステムとはファイル生成やディレクトリ格納、ファイルのアクセス権変更といった仕組みを提供するOSの仕組みのことです
主な種類については以下のものがあります
ext4 : Linuxの標準的なファイルシステム
XFS : 堅牢性が高く、CentOSやRHELのデフォルトのファイルシステム
NTFS : Windowsのファイルシステム
NFS : UNIX系OSでネットワーク共有を行う為のファイルシステム
CIFS : Windows OSでネットワーク共有を行う為のファイルシステム
tmpfs, devtmpfs : メモリに作成されるファイルシステム
パーティション作成コマンドfdisk&主なオプション
fdiskは対話式になっておりオプションは以下のものとなります
g : GPTラベルを作成 → クラスに登録できる容量2TB以上OK(こっちを選んでおけば大丈夫そう)
o : DOSラベルを作成(MBRラベルともいうらしい)→ クラスに登録できる容量2TB未満まで
a : ブート可能フラグ → MS-DOS、Windowsの標準ブートローダーに対してどのパーティションを起動すべきか示すフラグ
d : パーティションを削除する
l : パーティションタイプの一覧を表示
m : ヘルプ
n : 新しくパーティションを作成
p : パーティションテーブルを表示(このテーブルは起動するOSのあるパーティションの情報を持ってたりする。PCが起動されるとそのパーティションを見に行き、パーティション内のブートセクタにあるOS起動プログラムを起動しにいく)
t : パーティションタイプを変更する
q : 終了(ここら辺はvimと一緒ですね)
w : 変更して保存(ここら辺はvimと一緒ですね)
CentOSデフォルトファイルシステム「XFS」
特徴は以下のような感じです
最大8EB : TBが10の12乗、PBが10の15乗、EBは10の18乗
ジャーナリング機能 : ファイルシステムの操作をジャーナル=ログとして記録し、整合性チェックにかかる時間を短縮
エクステント方式 : エクステントと呼ばれる可変長の連続ブロック領域にデータを格納していく方式。大容量データを効率的に扱える
アロケーショングループ : ファイルシステム内をアロケーショングループという領域に分割管理
あとはファイルシステムをマウントしたままデフラグ(断片化の解消)できたり、ファイルシステムのサイズ変更を行えたりするらしいです
ファイルシステム作成コマンドmkfs&主なオプション
-t : 作成するファイルシステムタイプを設定する。xfs, ext4, fat, msdos etc
-V : 詳細を表示
パーティション作ってファイルシステム作ってマウントアンマウントとかしてみたかったんですけど、VirtualBox + Vagrantでちょっとうまくいかないので試行錯誤中です。。。
追記
パーティション作成行けました
VirtualBoxのGUIから設定からストレージを選択してコントローラーを追加し、そこに新しくディスクを追加します
その後にvagrant sshで接続すると今までは/dev/sdaだけだったデバイスファイルが/dev/sdbも増えていたので、そいつに対してfdiskで作成しました
[vagrant@centuser ~]$ sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xf48a6962.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-16777215, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-16777215, default 16777215): // 何GBとか指定できます
Created a new partition 1 of type 'Linux' and of size 8 GiB.
Command (m for help): w // 保存
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
[vagrant@centuser ~]$ sudo fdisk -l
Disk /dev/sda: 128 GiB, 137438953472 bytes, 268435456 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xda7190b8
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 268435455 266336256 127G 8e Linux LVM
Disk /dev/mapper/cl_centos8-root: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/cl_centos8-swap: 2.1 GiB, 2218786816 bytes, 4333568 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/cl_centos8-home: 75 GiB, 80455139328 bytes, 157138944 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdb: 8 GiB, 8589934592 bytes, 16777216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf48a6962
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 16777215 16775168 8G 83 Linux // できてます