Linux サーバーにUSBの①外付けHDDを取り付け、②「exFAT」フォーマットのディスクをマウント、③ファイルにアクセスする一連の方法を解説します。
本記事の読者層は以下の方を想定しています。
- UbuntuでexFATのマウント方法を知りたい方
- サーバー機の外付けのHDDをmacOS, Windowsユーザーのためにネットワーク共有したい方
Linuxで外付けHDDを取り付ける方法
Windows OSと異なり、Linuxの場合はUSB端子にUSB HDDを接続しただけではHDD/SSDの中身をLinuxから確認できません。それではどうしたら良いのでしょうか?
外付けUSB-HDDをLinuxマシンへ接続後、マウントと呼ばれる操作をして初めてHDDの中身をみることができます。
この際に「/mnt」ディレクトリを作成して、にHDDの情報をマウント操作でディレクトリにHDDの情報を接続して中身を確認します。
ここでは、Linuxのコンソール画面から外付けUSB-HDDの中身をLinux serverに認識・マウントさせる方法をもう少し詳しく解説します。
必要なLinux用コマンドは以下の3つです。
USB接続時の4つの手順
- マウントディレクトリを作成
- lsusb: 接続されているUSBリストを確認
- lsblk: 接続されたHDDのマウント情報を確認
- mount: 起動時に自動でマウントするのに使います。
コマンドを使って該当のUSB HDDを確定していきます。
ファイルシステムのマウント方法を確認
Ubuntuのフォーマット形式
最初にHDDのフォーマット構造を見て行きましょう。
Linuxでマウントできるフォーマット形式には以下のものがあります。
Linuxでマウントできるフォーマット
- NTFS (NT File System)
- FAT32 (File Allocation Table 32)
- eXFAT (Extended File Allocation Table)
- APFS (apple File System)
- XFS (eXtents File System)
これらは、「ファイルシステム」と呼ばれLinuxで対応可能です。以下にそれぞれの特徴と利用出来るディストリビューションもしくはOSを示します。
ファルシステム | 特徴 | ディストリビューション |
---|---|---|
EXT4,EXT3 | Linuxの伝統的なファイルシステム | Linux用 Ubuntu |
XFS | ハイエンドファイルシステム | Linux用 Red Hat Enterprise Linux |
BTRFS | 「スナップショット」、「コピーオンライト」などの機能を持つ多機能なファイルシステム | Linux用 |
NTFS | Windowsファイルシステム | Windows2000以降 |
exFAT, VFAT | 着脱式ドライブで利用されるファイルシステム | WindowsXP以降 mac対応 |
APFS | Mac専用 | macOS10.12以降 |
FAT32 | 最大32GBまで(最大4GB/File) | Windows98以降 mac対応 |
FAT16 | 最大4.3GBまで(最大2047MB/File) | Windows95以降 |
この中で、WindowsでもmacOSでもLinuxでも読み書きできる便利なeXFATのマウント方法を解説します。
exFATとは?
exFATは、大容量のデータをサポートするだけでなく、フラッシュメモリーや外部記憶装置など、異なるデバイス間でデータを共有するための効率的なファイルシステムとしても知られています。また、FAT32よりも効率的なディスク利用を可能にするため、小さなクラスターサイズを持っています。
USBデバイス接続の確認
サーバー機などのLinux環境であれば、より転送速度の速いUSB3.0の拡張ボードを機器に取り付けて置きます。
たとえば、PCI-USBなどがオススメです。
最近では、大抵のパソコンで、取り付けによりドライバーを改めてインストールせずとも認識できます。
取り付け後。ハードディスクをUSBコードでPC側と繋いでおくとよいでしょう。
STEP1 :外付けHDDが認識されているか確認
Ubuntu 18.04LTSの環境で以下確認して行きたいと思います。
①USBデバイスの一覧と詳細情報:lsusbコマンド
lsusbコマンド
lsusbコマンドを入力すると目的のハードディスク名「BUFFALO INC. (formerly MelCo., Inc.)」が現れていればOKです。
$lsusb
Bus 002 Device 004: ID 099a:6330 Zippy Technology Corp.
Bus 002 Device 003: ID 0000:0000
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 004: ID 0411:023f BUFFALO INC. (formerly MelCo., Inc.)
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
チェック✔
②HDDのパティション情報を確認:lsblkコマンド
lsblkコマンド
次に、Linuxの構造を見てみます。するとHDDの階層構造が見られます。
$lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 256.2G 0 disk
├─ sda1 8:1 0 243M 0 part
├─ sda2 8:2 0 1K 0 part
├─ sda5 8:5 0 232.7G 0 part
├─ Ibuki-root 252:0 0 230.7G 0 lvm
└─mqIbuki-swap_1 252:1 0 2G 0 lvm
sdb 8:16 0 238.5G 0 disk
├─sdb1 8:17 0 232.5G 0 part /
├─sdb2 8:18 0 1K 0 part
├─sdb5 8:21 0 6G 0 part [SWAP]
sdd 8:48 0 931.5G 0 disk
└─sdd1 8:49 0 931.5G 0 part
sr0 11:0 1 1024M 0 rom
ここでHDDの構造、すなわちパティション構造として以下3つが確認出来ます。
どうやら該当のハードディスクはsddのようです。
USB接続時のHDDの構造=パティション構造
- 「sda」
- 「sdb」
- 「sdd」
この構造がそれぞれ何に対応しているのか以下のコマンドで確認します。
チェック✔
③HDDのフォーマット情報を確認:blkidコマンド
blkidコマンド
$ sudo blkid
/dev/sda1: UUID="3cb3c6eb-a54d-489a-84a7-f2d3afbf4e3f" TYPE="ext2" PARTUUID="00087acc-01"
/dev/sda5: UUID="YRV4z2-5EB5-C20e-Ohl8-HULg-Gtyi-cVIVrZ" TYPE="LVM2_member" PARTUUID="00087acc-05"
/dev/sdb1: UUID="7fd76a18-33e7-49a6-984a-e1a8654f9c29" TYPE="ext4" PARTUUID="1b02c81d-01"
/dev/sdb5: UUID="42ac9a88-0895-4ad5-b234-a7607a5bd1ae" TYPE="swap" PARTUUID="1b02c81d-05"
/dev/mapper/Ibuki-root: UUID="f90ed5fc-bf24-41e8-a1d3-c24ec7849b6f" TYPE="ext4"
/dev/mapper/Ibuki-swap_1: UUID="70461492-fca0-4e04-b718-bfc8c8f1287b" TYPE="swap"
/dev/sdd1: LABEL="HD_User" UUID="4203-12D0" TYPE="exfat" PARTUUID="c6f1f053-01"
パティション構造の確認
- 「sda」: ext2+LVM2_number
- 「sdb」: ext4+swap
- 「sdd」:exfat (←該当ハードディスク)
UUID(Universally Unique Identifier)略
ここから該当の外付けディスクが「sdd」であることがわかったので、sddをマウントします。
STEP2:HDDをExfatフォーマットでマウント
ここまで終了したら実際にExfatでマウントしていきます。
マウントに際しては以下のFUSEモジュール (fuse-exfat) とユーティリティのセット (exfat-utils) を用います。
これはUnix 系システムにフル機能のexFATファイル システム実装を提供するものです。
https://github.com/relan/exfat
サポートされているオペレーティング システム:
- GNU/Linux
- Mac OS X 10.5以降
- FreeBSD
マウント(mount)コマンド
「mount」コマンドは、Linux環境で使われるシステムをアクセスできるようにしてくれます。
外付けHDDがexfatの場合、以下からExfat用マウントプログラムをダウンロードしておきます。
apt-get install exfat-fuse exfat-utils
事前にmkdirで「mnt/usb」にフォルダをつくっておいた後、以下のコマンドを入力します。
「sdd1」はlsblkコマンドで確認したパティション名です。
$sudo mount -w -t exfat-fuse -o umask=000 /dev/sdd1 /mnt/usb
FUSE exfat 1.2.3
外付けHDDがマウントできない場合の対応方法
仮にすでにマウントされているのであれば、以下のように「空じゃないよ~」といった記述が現れます。
FUSE exfat 1.2.3
fuse: mountpoint is not empty
fuse: if you are sure this is safe, use the 'nonempty' mount option
のよう標識がでる場合があります。このままでは認識しないため、
以下の「unmount」を利用して一度/mnt/usbディレクトリからマウントを解除します。
% sudo umount /mnt/usb
umount: /mnt/usb: target is busy
(In some cases useful info about processes that
use the device is found by lsof(8) or fuser(1).)
ここでbusyと出た場合、以下のコマンドでプロセスを確認します。
lsof /mnt/usb
このときにプロセスが走っているようであればKillコマンドでプロセスを終了させてから取り出しを再度行います。
OS起動時にマウントしておきたい場合
設定ファイル
/etc/fstab ファイルはディスクパーティションや様々なブロックデバイス、リモートファイルをどうやってファイルシステムにマウントするかを記述します。
中身は以下のように確認できます。
cat /etc/fstab
/dev/sda1 / xfs defaults 1 1
/dev/sdb /boot xfs defaults 1 2
設定ファイルの中身
- 1行目:デバイス名
- 2行目:マウントポイント
- 3行目:ファイルシステム (xfs, ext4などで設定しておく)
- 4行目:マウントポイント時のオプション
- 5行目:ファイルシステムをダンプする必要があるかないかの指定
接続したUSB外付けHDDのスピードチェック
マウントを行ってみたらUSBのスピードも念のために確認してみると良いです。
以下コマンドを記載いたします。
$ sudo hdparm -t /dev/sdc1
/dev/sdd1:
Timing buffered disk reads: 278 MB in 3.00 seconds = 92.61 MB/sec
更に、HDDを取り出す際には、unmountコマンドを利用して接続を解除します。
まとめ
HDDを取り付け後に、「mountコマンド」にてHDD Exfatとしてマウントし「\mnt」上で見れるようにしました。
次回の記事をご期待下さい。どうぞよろしくお願いいたします。
コメント