Ubuntu に追加したハードディスクを認識させて自動マウントするまでを解説します。
手順としてはざっくり以下の通り。
- ディスク構成の確認
- マウント状況の確認
- パーティション構成の確認(省略可)
- パーティション作成
- ext4でフォーマット
- 手動マウント
- 自動マウント設定
パーティションの作成やフォーマットなどはディスクの状況によりますので、必要ない場合もありますが、ここでは全行程を解説していきます。
なお、内臓HDDでも外付けHDDでも手順は変わりません。
ディスク構成の確認
現在のディスク構成を確認するには、「fdisk」コマンドを使用します。-l オプションでディスクの情報を一覧表示できます。
※ここでは、2TBのHDDを増設した前提で解説していきます。対象ディスクの情報のみ抽出したのが以下の表示。
$ sudo fdisk -l
・・・(中略)
ディスク /dev/sda: 1.82 TiB, 2000398934016 バイト, 3907029168 セクタ
Disk model: TOSHIBA ********
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: A0B*****-****-****-****-************
デバイス 開始位置 最後から セクタ サイズ タイプ
/dev/sda1 34 32767 32734 16M Microsoft 予約領域
パーティション 1 は物理セクタの境界で始まっていません。
この【 fdisk -l 】 の情報により、対象のHDDは /dev/sda として認識されており、パーティションが1つあって /dev/sda1 となっていることが分かります。
以降の説明は /dev/sda が新たなデバイスであると仮定して進めていきます。
※「物理セクタの境界で始まっていない」のメッセージは、後にパーティションを作り直すので無視してOKです。
マウント状況の確認
上記で追加したいHDDが /dev/sda であることが分かりました。
次に行いたいのは、マウント状況の確認です。これには【 df 】コマンドを使用します。
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
tmpfs 2013116 1224 2011892 1% /run
/dev/nvme0n1p2 31227904 233399 30994505 1% /
tmpfs 2013116 1 2013115 1% /dev/shm
tmpfs 2013116 3 2013113 1% /run/lock
efivarfs 0 0 0 - /sys/firmware/efi/efivars
/dev/nvme0n1p1 0 0 0 - /boot/efi
tmpfs 402623 84 402539 1% /run/user/127
tmpfs 402623 75 402548 1% /run/user/1000
この Filesystem の列に、目的の /dev/sda があればマウント済み、なければ未マウントです。上記の場合は/dev/sdaが一覧にないので未マウントということになります。
ディスクの空き容量を調べる(現在マウントされているファイルシステムごとに)
-i : ブロック使用量の代わりにiノード情報を表示する
パーティション構成の確認(省略可)
fdisk で必要な情報は得られているので省略可能ですが、パーティション構成をツリー状で確認したい場合は【 lsblk 】コマンドを使用する方法もあります。
lsblk コマンドはルート権限もいらず、視覚的にも優れているので便利です。また、【 -f 】オプションをつけることによってファイルシステムの情報も表示されますので、フォーマットするかどうかの判断材料となります。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 4K 1 loop /snap/bare/5
・・・(中略)
sda 8:0 0 1.8T 0 disk
└─sda1 8:1 0 16M 0 part
sda に sda1 というパーティションがあるのが分かります。
ブロックデバイスを一覧表示する
-f : ファイルシステムを表示する
パーティション作成
追加したいディスクの情報は得られたので、パーティションを再作成していきます。ディスクによってはパーティションが区切られていない場合もありますが、その場合はパーティション削除の部分を省略して新規作成して下さい。
パーティションの(再)作成には色々なコマンドが使えますが、ここでは【 fdisk 】を使用します。fdisk のオプションに対象のディスク(ここでは /dev/sda)を指定して実行します。
fdisk実行後【 m 】コマンドでヘルプが表示されますので、目を通しておくと良いです。
$ sudo fdisk /dev/sda
[sudo] sophy のパスワード:
fdisk (util-linux 2.37.2) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。
パーティション情報確認
【 p 】まずはパーティション情報を表示します。
コマンド (m でヘルプ): p
ディスク /dev/sda: 1.82 TiB, 2000398934016 バイト, 3907029168 セクタ
Disk model: TOSHIBA MQ04ABD2
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: A0B*****-****-****-****-************
デバイス 開始位置 最後から セクタ サイズ タイプ
/dev/sda1 34 32767 32734 16M Microsoft 予約領域
パーティション 1 は物理セクタの境界で始まっていません。
既存パーティション削除
【 d 】パーティションがある場合には削除します。複数のパーティションがある場合には全て削除します。
コマンド (m でヘルプ): d
パーティション 1 を選択
パーティション 1 を削除しました。
パーティション作成
【 n 】パーティションを再作成します。
全ての領域を1つのパーティションに割り振る場合、質問には全て規定値で答えていけばOKです。複数のパーティションが必要な場合は、適宜選択していって下さい。
コマンド (m でヘルプ): n
パーティション番号 (1-128, 既定値 1): 1
最初のセクタ (34-3907029134, 既定値 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-3907029134, 既定値 3907029134):
新しいパーティション 1 をタイプ Linux filesystem、サイズ 1.8 TiB で作成しました。
※ここで「物理セクタの境界で始まっていない」のメッセージは出なくなっています。
パーティション情報保存
【 w 】パーティションの情報を保存して終了します。
コマンド (m でヘルプ): w
パーティション情報が変更されました。
ioctl() を呼び出してパーティション情報を再読み込みします。
ディスクを同期しています。
これで /dev/sda には新しいパーティションが1つ作成されました。前述の fdisk や lsblk などで確認しておきましょう。
ext4でフォーマット
作成したパーティションを ext4 でフォーマットします。CentOSであれば xfs でも良いかと思いますが、Ubuntuの場合は現在のLinuxにおける主流なファイルシステムであるext4が最適です。
フォーマットには【 mkfs 】コマンドを使用します。
$ sudo mkfs.ext4 /dev/sda1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 488378385 4k blocks and 122101760 inodes
Filesystem UUID: 7d30494a-cb70-4983-91f4-21b68d1babaa
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848
Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done
手動マウント
ここまできたらいよいよマウントです。マウントが成功すればUbuntuでファイルの入出力が可能になります。
マウントポイント作成
まずはマウントポイントとなるディレクトリを作成します。作成済みの場合は省略して下さい。
ここでは /mnt/hdd1 というディレクトリをマウントポイントとして使います。
$ sudo mkdir /mnt/hdd1
マウント
マウントには【 mount 】コマンドを使用します。
$ sudo mount /dev/sda1 /mnt/hdd1
マウントできない場合にはエラーメッセージが表示されますので、そのメッセージに従って適宜対処します。
自動マウント設定
無事にマウントできることが確認できたら自動マウントの設定を行います。このままでは再起動時にマウントが解除されてしまいますので、起動時に自動的にマウントするように設定を行います。
設定に使うのは【 fstab 】というファイルです。/etc/fstab に存在し、vi や nano などで編集します。
デフォルトファイル(fstab)バックアップ
設定ファイルを変更する場合、デフォルトのファイルをバックアップしておくとすぐに元に戻せるので安心です。
$ sudo cp /etc/fstab /etc/fstab.default
fstab 編集
fstab を編集します。デバイス名、マウントポイント、ファイルシステム、マウントオプション、dumpの可否、起動時fsckチェックの可否の順番で記載します。
$ sudo nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/nvme0n1p2 during installation
UUID=44******-****-****-****-************ / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/nvme0n1p1 during installation
UUID=****-**** /boot/efi vfat umask=**** 0 1
/swapfile none swap sw 0 0
# hdd1
/dev/sda1 /mnt/hdd1 ext4 defaults 0 0
最下行に自動マウントしたいディスクの情報を追記します。# で始まる行はコメントですが、記載しておいた方が分かりやすいです。
UUIDでの記載
fstabの形式でデバイス名の部分(上記だと/dev/sda1)はディスクのUUIDでも可能です。UUIDを使用する場合は以下の形式で記載します。
UUID=7d3*****-****-****-****-************ /mnt/sd ext4 defaults 0 0
UUIDを確認するには【 blkid 】コマンドが便利です。
$ sudo blkid /dev/sda1
/dev/sda1: UUID="7d3*****-****-****-****-************" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="a71*****-****-****-****-************"
まとめ
UbuntuでHDDを認識させる方法は以上です。
最後までお読みいただきありがとうございました。

コメント