【Linux】勉強用に仮想HDDを追加してファイルシステムを作成してみる
Linuxの超初心者なので、LPICを勉強の中です。その中で、「ファイルシステム」が出てきます。覚えるばかりで頭に入らなさそうなので、「実際に環境を作って体験すればもう少し覚えやすいのでは!」と思ったのです。(結局覚えることにはなるのですが…)
でもとにかく簡単に扱えるファイルシステムを作ってしまえば、もう少し勉強の幅が広がるはず。これを見ている皆さんに少しでも手助けできたら幸いです。また以下の説明では、誤った操作をするとデータの欠損する可能性があるため、あくまでも勉強用に作成することを想定しています。
前提条件
まず前提条件は以下の通りです。調べれば準備できるものが多いので、頑張って準備してください。
- Windows10のPCを使用する
- VirtualBoxをインストールする
- VirtualBoxでVMを作成し、「CentOS7」を入れる
- TeraTermをインストールし、3.で作成した環境に接続できるようにしておく
環境
VirtualBox:6.1.32
VMのOS:CentOS7
ファイルシステムを作成する
手順は以下の通りです。
では1つずつ説明していきます。
1.ストレージを追加する
VirtualBoxを起動し、VMを起動する前に設定を開きます。
「ストレージ」を選択し、一覧の中から「コントローラー:SATA」>「ハードディスクを追加」をクリックします。
「ハードディスクの選択」から「作成」をクリックします。
「ハードディスクのファイルタイプ」では「VDI」を選択して、「次へ」をクリックします。
「物理ハードディスクにあるストレージ」で「可変サイズ」を選択し、「次へ」をクリックします。
「ファイルの場所とサイズ」では、パスは変更せずにサイズを変更します。ストレージは必要ないので、実際は1GBもなくてよいです。設定後、「作成」をクリックします。
これで作成完了です。そしたら、VMを起動しましょう。まずは「ハードディスクの選択」で「選択」をクリックします。
設定で「OK」をクリックします。
「起動」をクリックします。
2.パーティションを追加する
ここからは、起動したVMにTeraTermで入り、コマンド操作を行います。以降の操作では、root権限が必要になるため、root権限でログインするようにしてください。
まず上記で追加されたハードディスクが何かを確認します。以下は例です。
[root@localhost ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 3月 10 19:12 /dev/sda
brw-rw----. 1 root disk 8, 1 3月 10 19:12 /dev/sda1
brw-rw----. 1 root disk 8, 2 3月 10 19:12 /dev/sda2
brw-rw----. 1 root disk 8, 16 3月 10 19:12 /dev/sdb
上記の例では、「/dev/sda」のハードディスクが初期で使用されており、パーティションとして「/dev/sda1」と「/dev/sda2」が追加されています。よって、今回追加されたのは「/dev/sdb」です。fdiskコマンドを使用して、このハードディスクにパーティションを追加していきます。
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
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
Building a new DOS disklabel with disk identifier 0x1098ecde.
コマンド (m でヘルプ):
コマンドを使用すると対話モードになります。まず、「p」を入力し、Enterキーを押します。これで現在のパーティションの状況を知ることができます。まだ何も追加していないため、「デバイス ブート~」の下には何も出力されません。
コマンド (m でヘルプ): p
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x1098ecde
デバイス ブート 始点 終点 ブロック Id システム
次に「n」を入力し、Enterキーを押します。これでパーティションの追加を行います。パーティション番号やセクタについて入力の必要がありますが、初期値(default)に記載されている値でよいです。用語の意味は以下です。
用語 意味 最初 sector パーティションで使用する領域の最初の位置 Last sector 使用する領域(キロ、メガ、ギガで指定可能)
コマンド (m でヘルプ): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
パーティション番号 (1-4, default 1): 1
最初 sector (2048-2097151, 初期値 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, 初期値 2097151): 2097151
Partition 1 of type Linux and of size 1023 MiB is set
これで追加できたか、最後に「p」を入力し、Enterキーを押します。すると、「デバイス ブート~」の下に新しく行が追加されたことを確認できます。デバイスの下に出力される内容は「デバイスファイル名」です(下記では、「/dev/sdb1」)。これは以降の操作に使用するのでコピーしておいてください。
コマンド (m でヘルプ): p
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x1098ecde
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 2048 2097151 1047552 83 Linux
これで終わりではなく、最後に「w」を入力し、Enterキーを押します。これで今までの設定を保存できます。
コマンド (m でヘルプ): w
パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。
3.ファイルシステムを追加する
ここまでは、ハードディスクでどの領域を使用するかを決めただけです。ここからはその領域をどのように使用するかを設定していきます。
mkfsコマンドを使用してファイルシステムの設定を行います。
[root@localhost ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 261888 blocks
13094 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: 0/8 done
Writing inode tables: 0/8 done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: 0/8 done
これで設定が完了しました。次にどのディレクトリでこのファイルシステムを使用するかを、mountコマンドを使用して指定します。
mount <デバイスファイル名> <マウント先>
[root@localhost ~]# mount /dev/sdb1 /mnt
これでマウント先で今回追加したハードディスクにデータを入れることができますが、最後にちゃんと使用できるかを確認するために、dfコマンドを使用して確認します。
df -h <デバイスファイル名>
[root@localhost ~]# df -h /dev/sdb1
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/sdb1 991M 2.6M 922M 1% /mnt
サイズやマウント先が表示されれば、問題なく追加ができました。お疲れ様でした!
試しにコマンドを打ってみる
ext4ファイルシステムに関して、いくつかコマンドを打って内容を見てみたいと思います。出力内容が長くなることがあるので、一部は省略します。
ここでは、ext2/ext3/ext4ファイルシステムで使用できる、tune2fsコマンドとdumpe2fsコマンドを打ってみました。
[root@localhost ~]# tune2fs -l /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: e8fd542a-01ed-4ab6-9d4d-d927d6692e33
Filesystem magic number: 0xEF53
・・・
[root@localhost ~]# dumpe2fs /dev/sdb1
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: e8fd542a-01ed-4ab6-9d4d-d927d6692e33
Filesystem magic number: 0xEF53
・・・
おー本で出ていた内容が出力されている!
参考文献
本内容は以下を参考にさせていただきました。
- VirtualBoxに作成した仮想マシンにインストールしたCentOS7でファイルシステムの空き容量を増やす
https://ts0818.hatenablog.com/entry/2015/12/19/154633 - 【ざっくり概要】Linuxファイルシステムの種類や作成方法まとめ!
https://eng-entrance.com/linux-make-filesystem#i-7