Ubuntuで追加のHDDを認識して自動マウントする方法(内臓・外付け対応)

サーバ

Ubuntu に追加したハードディスクを認識させて自動マウントするまでを解説します。

手順としてはざっくり以下の通り。

  1. ディスク構成の確認
  2. マウント状況の確認
  3. パーティション構成の確認(省略可)
  4. パーティション作成
  5. ext4でフォーマット
  6. 手動マウント
  7. 自動マウント設定

パーティションの作成やフォーマットなどはディスクの状況によりますので、必要ない場合もありますが、ここでは全行程を解説していきます。

なお、内臓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です。

fdisk ではループバックデバイス(/dev/loop*)などの情報も一覧で表示されるため、環境によっては大量のメッセージが表示される場合があります。

物理的に正しく接続されていれば fdisk の項目に表示されます。(外付・内臓どちらでも)

マウント状況の確認

上記で追加したい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が一覧にないので未マウントということになります。

df

ディスクの空き容量を調べる(現在マウントされているファイルシステムごとに)

-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 というパーティションがあるのが分かります。

lsblk

ブロックデバイスを一覧表示する

-f : ファイルシステムを表示する

パーティション作成

追加したいディスクの情報は得られたので、パーティションを再作成していきます。ディスクによってはパーティションが区切られていない場合もありますが、その場合はパーティション削除の部分を省略して新規作成して下さい。

パーティションの(再)作成には色々なコマンドが使えますが、ここでは【 fdisk 】を使用します。fdisk のオプションに対象のディスク(ここでは /dev/sda)を指定して実行します。

fdisk実行後【 m 】コマンドでヘルプが表示されますので、目を通しておくと良いです。

fdisk は【 w 】で変更が保存されるまでの変更はキャッシュ領域に保持されます。保存しなければいくらでもやり直せますので、色々と試してみて下さい。

$ 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を認識させる方法は以上です。

最後までお読みいただきありがとうございました。

コメント

タイトルとURLをコピーしました