104.3 レッスン 1
Certificate: |
LPIC-1 |
---|---|
Version: |
5.0 |
Topic: |
104 デバイス、Linuxファイルシステム、ファイルシステム階層標準 |
Objective: |
104.3 ファイルシステムのマウントとアンマウントを制御する |
Lesson: |
1 of 1 |
はじめに
ここまでのレッスンで、ディスクをパーティションに分割する方法と、ファイルシステムを作成して保守する方法を学びました。このレッスンでファイルシステムを マウント する方法を学べば、Linuxでファイルシステムにアクセスできるようになります。
マウントするということは、システムのディレクトリツリーの特定の枝(マウントポイント)に、別のデバイス上のファイルシステムを接ぎ木(アタッチ)するということです。ファイルシステムをマウントする方法は、手動の方法にせよ自動の方法にせよ、いろいろあります。このレッスンでその方法を学習します。
ファイルシステムのマウントとアンマウント
ファイルシステムを手動でマウントするコマンドは mount
で、次のように実行します。
mount -t TYPE DEVICE MOUNTPOINT
それぞれの項目について説明します。
TYPE
-
マウントされるファイルシステムのタイプ(例:ext4, btrfs, exfat)
DEVICE
-
ファイルシステムが収められたデバイス名(例:
/dev/sdb1
) MOUNTPOINT
-
ファイルシステムがマウントされる場所。空のディレクトリでなくても構いませんが、ディレクトリは既に存在していなくてはなりません。別のファイルシステムがマウントされている間、そのディレクトリ内に元からあったファイルやディレクトリにはアクセスできなくなります。
例えば、USBフラッシュドライブ /dev/sdb1
にあるexFATファイルシステムを、現在のユーザーのホームディレクトリ直下の flash
という名前のディレクトリにマウントするには、次のコマンドを実行します。
# mount -t exfat /dev/sdb1 ~/flash/
Tip
|
Bashでは、 |
このようにしてマウントすると、USBドライブのファイルシステムの内容が ~/flash
ディレクトリ以下に現れて、アクセスできるようになります。
$ ls -lh ~/flash/ total 469M -rwxrwxrwx 1 root root 454M jul 19 09:49 lineage-16.0-20190711-MOD-quark.zip -rwxrwxrwx 1 root root 16M jul 19 09:44 twrp-3.2.3-mod_4-quark.img
マウントされているファイルシステムの一覧表示
引数なしで mount
を実行すると、現在システムにマウントされているすべてのファイルシステムを一覧表示します。システムにアタッチされたディスクだけでなく、様々な目的でメモリ上に作成されるランタイムファイルシステムがたくさんあるので、この一覧表示は長くなります。次のように、-t
オプションに続けてファイルシステムのタイプを指定すると、そのタイプのファイルシステムだけを表示するように出力結果をフィルタリングできます。
# mount -t ext4 /dev/sda1 on / type ext4 (rw,noatime,errors=remount-ro)
,
(カンマ)で区切って複数のタイプを指定することもできます。
# mount -t ext4,fuseblk /dev/sda1 on / type ext4 (rw,noatime,errors=remount-ro) /dev/sdb1 on /home/carol/flash type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096) [DT_8GB]
出力の表示は以下のフォーマットです。
SOURCE on TARGET type TYPE OPTIONS
SOURCE
はデバイス名で、TARGET
はマウントされている場所(マウントポイント)です。TYPE
はファイルシステムのタイプで、OPTIONS
はマウント時に mount
コマンドに渡されたオプションです。
その他のオプション
mount
コマンドのオプションは、-t
以外にもたくさんあります。利用頻度が高いものを紹介します。
-a
-
/etc/fstab
に記載されているすべてのファイルシステムをマウントします(詳しくは後述)。 -o
または--options
-
カンマ区切りのマウントオプションを指定します。これにより、ファイルシステムのマウント方法を詳細に指定します(詳しくは後述)。
-r
または-ro
-
ファイルシステムを読み取り専用でマウントします。
-w
または-rw
-
ファイルシステムを書き込み可能でマウントします。
ファイルシステムをアンマウントするには、umount
コマンドに続けて、デバイス名ないしマウントポイントのいずれかを指定します。先ほど示した、/dev/sdb1
をホームディレクトリ直下の flash
ディレクトリにマウントした例では、以下に示すどちらのコマンドもそのUSBドライブをアンマウントします。
# umount /dev/sdb1 # umount ~/flash
umount
のオプションを紹介します。
-a
-
マウントされているすべてのファイルシステム(通常は
/etc/mtab
に記載されています)をアンマウントします。 -f
-
ファイルシステムを強制的にアンマウントします。ネットワークの問題で到達不能になったリモートファイルシステムをアンマウントする場合などに使用します。
-r
-
ファイルシステムをアンマウントできない場合に、読み取り専用にします。
ファイルを開いているためにアンマウントできない場合の対処法
ファイルシステムをアンマウントするときに、target is busy(ビジー状態です)
というエラーメッセージが表示されることがあります。ファイルシステム内のいずれかのファイルを開いているか、いずれかのディレトリをカレントディレクトリとして動作しているプロセスがある場合にこのエラーが発生します。しかし、開いているファイルがどこにあり、どのプログラムがそのファイルを開いているのか、すぐにはわからないこともあります。
そのような場合には、lsof
コマンドにデバイス名を指定して実行すれば、開いているファイルとそのファイルを開いているプロセスの一覧を確認できます。以下に例を示します。
# umount /dev/sdb1 umount: /media/carol/External_Drive: target is busy. # lsof /dev/sdb1 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME evince 3135 carol 16r REG 8,17 21881768 5195 /media/carol/External_Drive/Documents/E-Books/MagPi40.pdf
COMMAND
はファイルを開いているプログラム名で、PID
はそのプロセスIDです。NAME
は開いているファイル名ないしディレクトリ名です。上の例では、MagPi40.pdf
という名前のファイルが evince
(PDFビューア)によって開かれていることがわかります。evince
を終了すると、このファイルシステムをアウンマウントできるようになるはずです。
Note
|
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs Output information may be incomplete.
|
マウントポイント
ファイルシステムのマウントは、どこにでもできるのですが、慣習に従うことをお勧めします。
伝統的には、/mnt
以下にすべての外部デバイスをマウントしていました。CD-ROMドライブ(/mnt/cdrom
)やフロッピーディスク(/mnt/floppy
)のように、一般的なデバイスのためのディレクトリがあらかじめ用意されていたのです。
最近では、/media
が、リムーバブルメディア(外付けハードディスク、USBフラッシュドライブ、メモリーカードなど)をシステムに接続するデフォルトのマウントポイントになっています。
現在のほとんどのLinuxディストリビューションでは、リムーバブルデバイスを接続すると自動的に /media/USER/LABEL
以下にマウントされるようになっています。USER
はユーザー名で、LABEL
はデバイスを識別するボリューム名(ラベル)です。例えば、FlashDrive
というラベルのUSBフラッシュドライブをユーザー john
が接続すると、/media/john/FlashDrive/
以下にマウントされます。(デスクトップ環境によっては挙動が異なることがあります)。
手動 でファイルシステムをマウントする際は、伝統に従って /mnt
以下にマウントするとよいでしょう。
起動時にファイルシステムをマウントする
/etc/fstab
ファイルにはファイルシステムのマウント情報が記載されており、これに基づいて起動時にファイルシステムのマウントが行われます。/etc/fstab
は、ファイルシステムのマウント情報を以下に示す6つのフィールドの順番で各行に記載したテキストファイルです。
FILESYSTEM MOUNTPOINT TYPE OPTIONS DUMP PASS
それぞれの項目について説明します。
FILESYSTEM
-
デバイスファイル名です。デバイスファイル名ではなく、UUIDまたはボリューム名(ラベル)での指定も可能です(次節で詳しく説明します)。
MOUNTPOINT
-
ファイルシステムがどこにマウントされるかを示します。
TYPE
-
ファイルシステムのタイプです。
OPTIONS
-
mount
コマンドに渡されるマウントオプションです。 DUMP
-
ext2/3/4ファイルシステムを
dump
コマンドによるバックアップの対象とするかどうかを示します。通常は0(バックアップの対象としない)です。(訳注:現在、dump
コマンドはほとんど使われませんから、デフォルトで0となっていることがほとんどです。記入していない場合は0と見なされます。) PASS
-
起動時のファイルシステムチェックの順序を示します。0だと起動時のファイルシステムチェックの対象になりません。(訳注:ルートファイルシステムは1,その他のファイルシステムでは0ないし2を指定するのが慣例ですが、昔のように起動時に必ずfsckを実行する必要がほぼ無くなっていますので、すべて0でも構いません。記入していない場合は0と見なされます。)
例えば、最初のディスクの最初のパーティション(/dev/sda1
)について、次のように記載します。
/dev/sda1 / ext4 noatime,errors
OPTIONS
のマウントオプションは、カンマ区切りのパラメータのリストになっています。一般的なパラメ―タもあれば、ファイルシステムに固有のパラメータもあります。一般的なパラメータには次のようなものがあります。
atime
およびnoatime
-
atime
を指定すると、ファイルにアクセスするたびに最終アクセス日時(Access Time)が更新されます。noatime
を指定すると、ファイルにアクセスしても最終アクセス日時を更新しません(アクセス速度が向上します)。どちらを指定しても、(ls
などで表示される)更新日時(Modify Time)は影響をうけず、ファイルへの書き込みが行われるたびに更新されます。(訳注:デフォルトがどちらであるかは、ディストリビューションによって異なります。) auto
およびnoauto
-
mount -a
コマンドで自動的にマウントされるか(auto
)、されないか(noauto
)を指定します。(訳注:システム起動時に自動的にマウントしたいファイルシステムにauto
を指定します。) defaults
-
default
を指定すると、rw
、suid
、dev
、exec
、auto
、nouser
、async
を指定したことになります。 dev
およびnodev
-
ファイルシステムにあるデバイスファイルが利用できるか(
dev
)、できないか(nodev
)を指定します。(訳注:nodev
を指定したファイルシステムでは、デバイスファイルが存在しても機能しません。セキュリティ上、(/devディレクトリがある)ルートファイルシステム以外では、nodev
を指定するとよいでしょう。) exec
およびnoexec
-
ファイルシステム内のバイナリファイルを実行できるか(
exec
)、できないか(noexec
)を指定します。(訳注:セキュリティ上、必要がない限りnoexec
を指定するとよいでしょう。) user
およびnouser
-
一般ユーザーがファイルシステムをマウントできるか(
user
)できないか(nouser
)を指定します。(訳注:user
を指定すると、自動的にnodev
、noexec
、nosuid
が指定されます。) group
-
デバイスファイルの所有グループに属しているメンバーが、ファイルシステムをマウントできるようにします。(訳注: 自動的に
nosuid
とnodev
が指定されます。) owner
-
デバイスファイルの所有者が、ファイルシステムをマウントできるようにします。(訳注: 自動的に
nosuid
とnodev
が指定されます。) suid
およびnosuid
-
SUIDビットとSGIDビットを有効にするか(
suid
)、しないか(nosuid
)を指定します(訳注:SUIDとSGIDについてはトピック104.5で解説します。セキュリティ上、必要がない限りnosuid
を指定するとよいでしょう。) ro
およびrw
-
ファイルシステムを読み取り専用でマウントするか(
ro
)、書き込み可能でマウントするか(rw
)を指定します。 remount
-
すでにマウントされているファイルシステムを再マウントします。
/etc/fstab
では用いず、mount -o
コマンドで使用します。例えば、すでにマウントされているパーティション/dev/sdb1
を読み取り専用で再マウントするなら、mount -o remount,ro /dev/sdb1
というコマンドを実行します。再マウントする際には、ファイルシステムのタイプを指定する必要はなく、デバイス名かマウントポイントのどちらかを指定します。 sync
およびasync
-
ファイルシステムの入出力を同期で行うか(
sync
)、非同期で行うか(async
)を指定します。通常はasync
がデフォルトです。フラッシュドライブやメモリーカードのように書き込み回数の上限があるメディアでsync
を指定すると、そのデバイスの寿命を縮めるおそれがあります。
UUIDとボリューム名の使用
マウントする際に、デバイス名を直接指定すると問題を招くことがあります。システムに接続するタイミング等によって、デバイスに割り当てられるデバイス名が変わることがあるからです。例えば、今は /dev/sdb1
に割り当てられているUSBフラッシュドライブが、違うポートに差し込まれたり、別のUSBフラッシュドライブの後に接続したりすると、/dev/sdc1
に割り当てられるかもしれません。
デバイス名の代わりにボリューム名(ラベル)またはUUID(Universally Unique Identifier)を指定すれば、こうした問題を回避できます。どちらもファイルシステムの作成時に設定でき、手動で変更しない限り変化することはありません。
lsblk
コマンドでディスクデバイスの情報を調べると、ボリューム名とUUIDを知ることができます。-f
オプションに続けてデバイス名を指定します。
$ lsblk -f /dev/sda1 NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT sda1 ext4 6e2c12e3-472d-4bac-a257-c49ac07f3761 64,9G 33% /
各列の意味は次のとおりです。
NAME
-
ディスクデバイス名です。
FSTYPE
-
ファイルシステムのタイプです。
LABEL
-
ファイルシステムのボリューム名です。
UUID
-
ファイルシステムのUUIDです。
FSAVAIL
-
ファイルシステムの空き容量です。
FSUSE%
-
ファイルシステムの使用率です。
MOUNTPOINT
-
ファイルシステムがどこにマウントされているか(マウントポイント)です。
/etc/fstab
では、UUID=
オプションに続けてUUIDを指定するか、LABEL=
オプションに続けてボリューム名を指定すれば、デバイスを指定できます。つまり、
/dev/sda1 / ext4 noatime,errors
の代わりに
UUID=6e2c12e3-472d-4bac-a257-c49ac07f3761 / ext4 noatime,errors
や
LABEL=homedisk /home ext4 defaults
のような指定ができます。
mount
コマンドでも同様に、デバイス名の代わりにUUIDまたはボリューム名でデバイスを指定できます。例えば、UUIDが 56C11DCC5D2E1334
の外部NTFSディスクを /mnt/external
にマウントするなら、次のコマンドを実行します。
$ mount -t ntfs UUID=56C11DCC5D2E1334 /mnt/external
Systemdを使用したマウント
Systemd は、多くのLinuxディストリビューションで最初に実行されるプロセス(initプロセス)で、他のプロセスを生成し、各種サービスを起動します。Systemd は、ファイルシステムのマウント(自動マウント)の管理にも利用できます。
そのためには、マウントユニット という設定ファイルを作成します。マウントするボリュームごとにマウントユニットを作成して、/etc/systemd/system/
に配置します。
マウントユニットは、サフィックスが .mount
のテキストファイルです。基本的な形式は次のとおりです。
[Unit] Description= [Mount] What= Where= Type= Options= [Install] WantedBy=
Description=
-
Mounts the backup disk
のようなマウントユニットの説明です。 What=
-
マウント対象のデバイスを指定します。通常は
/dev/disk/by-uuid/VOL_UUID
形式(VOL_UUID
の部分はそのボリュームのUUID)で指定しますが、デバイス名やボリューム名でも指定できます。 Where=
-
マウントポイントのフルパスです。
Type=
-
ファイルシステムのタイプです。
Options=
-
mount
コマンドや/etc/fstab
と同じマウントオプションです。 WantedBy=
-
依存関係の管理です。マウントユニットでは、
multi-user.target
を指定することが多いでしょう。通常のマルチユーザー環境でシステムを起動する際に、このマウントユニットが処理されます。
先ほどの外部NTFSディスクをマウントする例であれば、次のように記載します。
[Unit] Description=External data disk [Mount] What=/dev/disk/by-uuid/56C11DCC5D2E1334 Where=/mnt/external Type=ntfs Options=defaults [Install] WantedBy=multi-user.target
マウントユニットのファイル名をマウントポイントと同じ名前にしないと正常に動作しません。この例では、マウントポイントは /mnt/external
ですから、マウントユニットのファイル名は mnt-external.mount
にします。
そして、systemctl
コマンドでsystemdをリロードしてから、このマウントユニットを起動します。
# systemctl daemon-reload # systemctl start mnt-external.mount
これで外部ディスクが /mnt/external
にマウントされて利用できるようになります。以下のように systemctl status mnt-external.mount
コマンドを実行すると、マウント状態を確認できます。
# systemctl status mnt-external.mount ● mnt-external.mount - External data disk Loaded: loaded (/etc/systemd/system/mnt-external.mount; disabled; vendor pres Active: active (mounted) since Mon 2019-08-19 22:27:02 -03; 14s ago Where: /mnt/external What: /dev/sdb1 Tasks: 0 (limit: 4915) Memory: 128.0K CGroup: /system.slice/mnt-external.mount ago 19 22:27:02 pop-os systemd[1]: Mounting External data disk... ago 19 22:27:02 pop-os systemd[1]: Mounted External data disk.
systemctl start mnt-external.mount
は、そのマウントユニットを1回だけ処理するコマンドです。次回の起動時にも有効にしたければ、以下のように、先ほど実行したコマンドの start
の部分を enable
にして実行します。
# systemctl enable mnt-external.mount
マウントユニットの自動マウント
マウントポイントにアクセスしたときに自動マウントするように設定できます。ユニットを記述した .mount
ファイルに加えて、以下の形式の .automount
ファイルを作成します。
[Unit] Description= [Automount] Where= [Install] WantedBy=multi-user.target
マウントユニットと同様に、Description=
にはそのファイルの説明を書き、Where=
にはマウントポイントを記載します。先ほどの例を続けると、.automount
ファイルは以下のような記載になります。
[Unit] Description=Automount for the external data disk [Automount] Where=/mnt/external [Install] WantedBy=multi-user.target
マウントポイントと同じファイル名(この例では mnt-external.automount
)で保存し、systemdをリロードしてから、オートマウントユニットを起動します。
# systemctl daemon-reload # systemctl start mnt-external.automount
/mnt/external
ディレクトリにアクセスすると、マウントユニットで指定したディスクが自動的にマウントされます。以下のコマンドを実行すれば、起動時に上記の自動マウント設定を有効にできます。
# systemctl enable mnt-external.automount
演習
-
mount
コマンドで、/dev/sdc1
のext4
ファイルシステムを、/mnt/external
に、読み取り専用で、noatime
およびasync
オプションを指定して、マウントしてください。 -
/dev/sdd2
のファイルシステムをアンマウントしようとしたら、target is busy
というエラーメッセージが表示されました。そのファイルシステムのどのファイルがどのプロセスによって開かれているかを示すコマンドを実行してください。 -
/etc/fstab
に/dev/sdb1 /data ext4 noatime,noauto,async
というエントリがあります。mount -a
コマンドを実行したときに、このファイルシステムはマウントされるでしょうか? 理由とともに答えてください。 -
/dev/sdb1
のファイルシステムのUUIDを表示するコマンドを実行してください。 -
mount
コマンドで、/mnt/data
にマウントされている、UUIDが6e2c12e3-472d-4bac-a257-c49ac07f3761
のexFATファイルシステムを、読み取り専用で再マウントしてください。 -
現在マウントされている
ext3
とntfs
ファイルシステムを一覧表示するコマンドを実行してください。
発展演習
-
/etc/fstab
に/dev/sdc1 /backup ext4 noatime,nouser,async
というエントリがあります。一般ユーザーがmount /backup
コマンドを実行してこのファイルシステムをマウントできるでしょうか? 理由とともに答えてください。 -
ネットワーク接続が失われたために、
/mnt/server
にマウントされているリモートファイルシステムに到達できなくなりました。このリモートファイルシステムを強制的にアウンマウントする(それができなければ読み取り専用でマウントする)コマンドを実行してください。 -
Backup
というボリューム名を付け、defaultsオプションとバイナリの実行を禁止する設定で、btrfsを/mnt/backup
にマウントするエントリを、/etc/fstab
ファイルに記述してください。 -
次に示すsystemdのマウントユニットがあります。
[Unit] Description=External data disk [Mount] What=/dev/disk/by-uuid/56C11DCC5D2E1334 Where=/mnt/external Type=ntfs Options=defaults [Install] WantedBy=multi-user.target
これと同等の
/etc/fstab
エントリを記述してください。 -
systemdで利用できるように、前の問題で示したマウントユニットを、適切なファイル名で適切な場所に配置してください。
まとめ
このレッスンでは、手動あるいは自動で、ファイルシステムをマウントしアンマウントする方法を説明しました。以下のコマンド、ディレクトリ、ファイル、指定方法を説明しました。
-
mount
(デバイスをマウントするコマンド) -
umount
(デバイスをアンマウントするコマンド) -
lsof
(ファイルシステムやファイルないしディレクトリにアクセスしているプロセスを一覧表示するコマンド) -
/mnt
および/media
(一般的なマウントポイントとなるディレクトリ) -
/etc/fstab
(ファイルシステムのマウント情報を記載したテキストファイル) -
lsblk
(ファイルシステムのタイプとUUIDなどを一覧表示するコマンド) -
UUIDまたはボリューム名を指定してファイルシステムをマウントする方法
-
systemdのマウントユニットを利用してファイルシステムをマウントする方法
-
systemdのマウントユニットを利用してファイルシステムを自動マウントする方法
演習の解答
-
mount
コマンドで、/dev/sdc1
のext4
ファイルシステムを、/mnt/external
に、読み取り専用で、noatime
およびasync
オプションを指定して、マウントしてください。# mount -t ext4 -o noatime,async,ro /dev/sdc1 /mnt/external
-
/dev/sdd2
のファイルシステムをアンマウントしようとしたら、target is busy
というエラーメッセージが表示されました。そのファイルシステムのどのファイルがどのプロセスによって開かれているかを示すコマンドを実行してください。次のように、
lsof
コマンドにデバイス名を指定して実行します。$ lsof /dev/sdd2
-
/etc/fstab
に/dev/sdb1 /data ext4 noatime,noauto,async
というエントリがあります。mount -a
コマンドを実行したときに、このファイルシステムはマウントされるでしょうか? 理由とともに答えてください。マウントされません。
mount -a
コマンドでマウントされないようにするnoauto
オプションが指定されているからです。 -
/dev/sdb1
のファイルシステムのUUIDを表示するコマンドを実行してください。次のように、
lsblk -f
に続けてデバイス名を指定して実行します。$ lsblk -f /dev/sdb1
-
mount
コマンドで、/mnt/data
にマウントされている、UUIDが6e2c12e3-472d-4bac-a257-c49ac07f3761
のexFATファイルシステムを、読み取り専用で再マウントしてください。ファイルシステムがマウントされているので、ファイルシステムのタイプやUUIDのことは気にする必要がありません。次のように、
remount
オプションとro
オプションを指定し、マウントポイントを指定します。# mount -o remount,ro /mnt/data
-
現在マウントされている
ext3
とntfs
ファイルシステムを一覧表示するコマンドを実行してください。次のように、
mount -t
に続けて、ファイルシステムのタイプをカンマ区切りで指定します。# mount -t ext3,ntfs
発展演習の解答
-
/etc/fstab
に/dev/sdc1 /backup ext4 noatime,nouser,async
というエントリがあります。一般ユーザーがmount /backup
コマンドを実行してこのファイルシステムをマウントできるでしょうか? 理由とともに答えてください。マウントできません。
nouser
オプションが指定されているので、一般ユーザーはこのファイルシステムをマウントできません。 -
ネットワーク接続が失われたために、
/mnt/server
にマウントされているリモートファイルシステムに到達できなくなりました。このリモートファイルシステムを強制的にアウンマウントする(それができなければ読み取り専用でマウントする)コマンドを実行してください。-f
と-r
オプションを指定してumount
コマンドを実行します。つまり、umount -f -r /mnt/server
を実行します。umount -fr /mnt/server
とオプションを一括指定して実行しても構いません。 -
Backup
というボリューム名を付け、defaultsオプションとバイナリの実行を禁止する設定で、btrfsを/mnt/backup
にマウントするエントリを、/etc/fstab
ファイルに記述してください。LABEL=Backup /mnt/backup btrfs defaults,noexec
と記述します。 -
次に示すsystemdのマウントユニットがあります。
[Unit] Description=External data disk [Mount] What=/dev/disk/by-uuid/56C11DCC5D2E1334 Where=/mnt/external Type=ntfs Options=defaults [Install] WantedBy=multi-user.target
これと同等の
/etc/fstab
エントリを記述してください。UUID=56C11DCC5D2E1334 /mnt/external ntfs defaults
と記述します。 -
systemdで利用できるように、前の問題で示したマウントユニットを、適切なファイル名で適切な場所に配置してください。
マウントユニットのファイル名はマウントポイントと同じにしなければならないので、
mnt-external.mount
という名前で、/etc/systemd/system
に配置します。