システム起動時に自動的にドライブをマウントする

Ubuntu Desktop環境構築 Part 25

公開日: 2022-01-28
更新日: 2022-08-06

実行環境

実行環境

項目  
マシン HP ENVY TE01-0xxx
OS ubuntu 20.04 LTS Focal Fossa
CPU Intel Core i7-9700 CPU 3.00 GHz
RAM 32.0 GB
GPU NVIDIA GeForce RTX 2060 SUPER
1
2
3
4
5
6
7
8
% lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.3 LTS
Release:        20.04
Codename:       focal
% uname -srvmpio
Linux 5.13.0-27-generic #29~20.04.1-Ubuntu SMP Fri Jan 14 00:32:30 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Table of Contents

1. やりたいこと

  • ST2000DM008 BarraCudaシリーズ 2TB 3.5インチ SATA 7200rpm をUbuntu 起動時にマウントしたい

2. マウントとは?

マウントとは, ハードディスクやUSBメモリなどドライブを利用するための仕組みです(= ドライブはマウントしないと使えない). Linuxプログラム目線でいうと, ファイルシステムの管理というトピックの中の命令(ファイルシステムの結合命令)としてマウントがあります. ですのでまずマウントコマンドを説明する前に ファイルシステムとはなにかというところから説明します.

ファイルシステムとは?

ファイルシステムとは, 「ファイル」というインターフェースをユーザーやアプリケーションに提供する仕組みのことです. ファイルシステムのおかげで以下のことがユーザーはできます:

  • 記憶装置の種類の違いや記憶装置にデータがどのように記録されているか意識することなく, データをファイルという 仮想的な容器に格納したり取り出す
  • ファイルをディレクトリにまとめる(=ファイルの管理性の向上)
  • ファイルをアクセス権で保護する(=セキュリティ確保)

ファイルシステム同士の互換性

利用できるファイルシステムはOSによって違います. Linuxが扱うことができるファイルシステム種類例は以下です:

ファイルシステム 説明
ext4 Linuxの標準的なファイルシステム
ext3に比べてストレージサイズが大きく進化
4Kブロックサイズが標準
ext3 ext4の古いバージョン
NTFS Windowsのファイルシステム
XFS RHELやCentOSのデフォルト
VFAT SDカードやフラッシュメモリで使われるファイルシステム

ファイルシステムの異なるWindows, Mac, Linuxなどは, 基本的にそのままではお互いのファイルを利用することはできません. ファイルをやり取りするためには, 専用のアプリケーションを使うか, 互換性のあるファイルフォーマットを使用します.

なぜ一つのOSで異なるファイルシステムが共存できるのか?

parted -lコマンドを使ってパーティション情報を見てみると, 自分の環境ではext4, fat32, ntfsといった ファイルシステムが確認できます. ファイルシステムの種類が違えば, メタデータの構造が違うので, 根本的にファイルに対するアクセス方法は 違うはずなのですが, 普通にファイルアクセスはできます.

これはLinuxカーネルが「仮想ファイルシステム(VFS)」という多種類のファイルシステムについて共通インターフェイスを提供してくれているからです.

デバイスファイル

Linuxでは, HDDやSSD, USBメモリといったデバイス(=ドライバ)に対応するデバイスファイルが用意されています. デバイスファイルは各種ハードウェアの入出力を扱うための特殊ファイルです. ファイルシステムによってデバイスデータがデバイスファイルとして管理され, そのためデバイス操作(データの入出力)が普通のファイル操作 と同じ感覚で実行できるようになっています.

Linux ではデバイスファイルは /dev ディレクトリに存在します.

/dev/sda 1番目に認識されたSATA/USBドライブ
/dev/sda1 /dev/sdaに作られた1番目のパーティション
/dev/sdb 2番目に認識されたSATA/USBドライブ
/dev/sdc 3番目に認識されたSATA/USBドライブ
/dev/sr0 1番目に認識されたDVD/BDドライブ

mountコマンド

mountは, HDDやUSBメモリ, DVD-ROMなどのフォーマット済みの領域(ファイルシステム)を指定したディレクトリ(= mount point)と 一時的に結び付けてアクセスできるようにするコマンドです.

1
mount -t <filesyetem type> <device file path> <mount point>

主要オプション

-t --types マウントするファイルシステムの種類を指定する(「,」区切りで複数指定可能、「~以外」としたい場合はnoを付ける、autoで自動判定 ※3)
-r --read-only 読み込み専用でマウントする(「-o ro」相当)
-w --rw、`–read-write 読み書き可能な状態でマウントする(デフォルト)
-f --fake 実際にはマウントしない(実行内容を確認したいときに使用)

マウントを削除したい場合

1
umount <mount point>

アンマウントが実行されたかどうかは, lsコマンドで内容を参照できるかどうかで確認できます. なお, アンマウントできるのは, そのディレクトリが使用されていない状態のときだけで, ディレクトリを参照している プロセスがある場合は アンマウントできません.

3. mountコマンド:実践編

デバイスファイルの確認

parted -lコマンドですべてのブロックデバイスのパーティション情報を表示することができます(fdisk -lでも可能).

1
2
3
4
5
6
7
8
9
10
% sudo parted -l 
Model: ATA ST2000DM008-2FR1 (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name                  Flags
 1      1049kB  2000GB  2000GB  ntfs         Basic data partition  msftdata
(略)

一時的なマウントの実行

1
2
% mkdir mnt/share_01 ###mount pointの作成
% sudo mount /dev/sda1 mnt/share_01  

システム起動時のマウント設定

システム起動時にマウントを実行したい場合は. 設定を/etc/fstabに記載します. 記載すべき内容は以下,

1
<file system> <mount point>   <type>  <options>       <dump>  <pass>
<file system> デバイスファイル名(PATH), UUIDのいずれかを指定
<mount point> マウントポイント
<type> ファイルシステムの種類
<options> マウント時のオプション, 複数指定する場合はカンマ(,)で区切って指定
<dump> バックアップコマンドdumpの対象とするか否かの設定
0または無記述の場合はdump不要のファイルシステムであると見なされる
<pass> システム起動時にfsckチェック(ファイルシステム整合性確認)を行うか否かの指定

デバイスのUUIDの確認

デバイスファイルは別のディスクに置き換わる可能性があるので今回はUUIDベースで設定したいと思います. UUIDの確認はblkidコマンドを用います.

1
% blkid /dev/sda1

今回の設定例

1
UUID=hogehoge /mnt/share_01 auto nosuid,nodev,nofail,x-gvfs-show 0 0

番外編: GUIでの設定

GNOME DisksとはUbuntuのストレージ管理ツールです. GUIでの設定内容を/etc/fstabに保存してくれるので便利です. 起動コマンドは以下,

1
% sudo gnome-disks

Appenidx

HDD?SSDとは?

ハードディスクドライブ (Hard Disk Drive, 略して HDD) は磁気を用いてデータを記録する装置です.HDD の内部には金属製の円板が何枚か入っており,ヘッドと呼ばれる装置で磁気を書き込むようになっています.円板の上にたくさんの小さい磁石が並んでいて,この磁石の向きでデータを記憶しています.HDD の中でデータを記憶する円板の 1 枚 1 枚をプラッタといいます.HDD の記憶容量を増やすにはプラッタの枚数を増やす方法と 1 プラッタあたりの記憶容量を増やす方法があり,この両方を進めることで HDD の容量増加が図られてきました.

ソリッドステートドライブ (Solid State Drive, 略して SSD) は可動部を持たないドライブという意味で,フラッシュメモリなどの装置を使ってデータを記録します. HDD に比べて優れた点の 1 つは,HDD のヘッドのような動くパーツを持たないということです.したがって物理的な衝撃に対して SSD は HDD よりも優れています.また SSD は一般に HDD よりデータ読み書きの速度が速いとされています.

どのようにデータを記録しているかのイメージは以下のYoutube videoがおすすめ.

2種類のデバイス: 「キャラクター型」と「ブロック型」

Linuxではデバイスを主に「キャラクター型」と「ブロック型」の2種類に分類します.

キャラクター型

  • シリアル回線や端末のようにデータを1 byteずつ入出力するタイプのデバイス.
  • データは基本的にバッファーされない

ブロック型

  • ハードディスクのように固定長のデータ(ブロック)単位に入出力するタイプのデバイス
  • データは基本的にバッファーされる

Refereneces

参考書籍

オンラインマテリアル



Share Buttons
Share on:

Feature Tags
Leave a Comment
(注意:GitHub Accountが必要となります)