重要なポイント
- Linux および Unix 系オペレーティング システムのファイル システムは、ターミナルを使用してマウント、アンマウント、再マウントできます。
- Linux のファイル システムはオールインワンのディレクトリ ツリーであり、マウントされたストレージ デバイスはファイル システムの不可欠な部分として表示されます。
- mount および umount コマンドを使用すると、ユーザーはシステムへの接続を制御し、マウント ポイントや読み取り/書き込み権限などのファイル システムに関する決定を行うことができます。
Linux および macOS などの Unix 系オペレーティング システムのファイル システムは、ターミナルを使用してマウント、アンマウント、再マウントできます。これは強力で多用途のツールです。知っておくべきことはすべてここにあります。
Linux ファイル システム
Linux、macOS、およびその他の Unix 系オペレーティング システム のファイル システムは、Windows のようにストレージ デバイスに個別のボリューム識別子を使用しません。 Windows は各ボリュームに C: や D: などのドライブ文字を割り当てます。各ボリュームのファイル システムは、そのドライブ文字の下にあるディレクトリのツリーです。
Linux では、ファイル システムはオールインワンのディレクトリ ツリーです。マウントされたストレージ デバイスのファイル システムはそのツリーに移植されているため、1 つの結合したファイル システムの不可欠な部分であるように見えます。新しくマウントされたファイル システムは、マウント先のディレクトリを介してアクセスできるようになります。そのディレクトリは、そのファイル システムのマウント ポイントと呼ばれます。
多くのファイル システムは、起動時または実行時にコンピュータに接続されるストレージ ボリュームとしてオンザフライで自動マウントされます。慎重なシステム管理者は、ランタイムの自動マウント機能をオフにして、システムへの接続を制御できるようにすることができます。
つまり、実行時に接続されたストレージ デバイスは自動マウントされず、手動でマウントする必要がある可能性があります。ファイル システムを手動でマウントすると、マウント ポイントをどこにするか、ファイル システムを読み取り専用にするか読み取り/書き込みにするかなど、そのファイル システムについて決定できます。
必然か選択によるかにかかわらず、
mount
、
umount
、および
remount
コマンドを使用すると、Linux システムのこの重要な側面を制御できるようになります。
マウントを使用してファイル システムを問い合わせる
Mount には
非常に多くのオプション
がありますが、コンピュータにマウントされているすべてのファイル システムを一覧表示するのにオプションはまったく必要ありません。
mount
と入力して Enter キーを押すだけです。
mount
、接続されているすべてのファイル システムをターミナル ウィンドウに一覧表示します。
大量のデータの中から探しているものを見つけ出すのは難しい場合があります。
関心のあるファイル システムのみをリストするよう
mount
に依頼することで、出力を絞り込むことができます。
-t
(タイプ) オプションは、レポートするファイル システムのタイプを
mount
指示します。
マウント -t tmpfs
マウント -t ext4
例として、
tmpfs
ファイル システムのみをリストするように
mount
依頼しました。はるかに管理しやすい出力が得られます。
tmpfs
ファイル システムは、通常のマウントされたファイル システムであるかのように見えますが、実際には永続ストレージ デバイスではなく、揮発性メモリ (tmp は一時の略) に保存されます。
tmpfs
パラメータを、関心のあるファイル タイプに置き換えることができます。
ext4
ファイル システムを一覧表示するコマンドも発行しました。このテスト コンピューターには、単一の
ext4
ファイル システムがあり、デバイス
sda
(最初にマウントされたストレージ デバイス (通常はメイン ハード ドライブ)) 上にあり、ファイル システム ツリーのルートである
/
にマウントされています。
他の指標は次のことを意味します。
- rw: ファイル システムは読み取りおよび書き込み可能です。
- relatime: カーネルは、ファイル アクセスと変更メタデータを記録するために最適化されたスキームを使用しています。
- errors=remount -o: 十分に重大なエラーが検出された場合、ファイル システムは読み取り専用モードで再マウントされ、診断が可能になります。
df を使用してファイル システムを問い合わせる
df
コマンドを使用
して、どのファイル システムがマウントされているか、およびそのマウント ポイントがどこにあるかを表示する
こともできます。
パラメーターを指定せずに
df
使用すると、
mount
と同じ情報過負荷の問題が発生します。一例として、Ubuntu Linux では、
snap
コマンドを使用してインストールされたアプリケーションごとに
squashfs
疑似ファイル システムが作成されます。誰がそれらすべてを見たいと思うでしょうか?
df
それらを強制的に無視させるには、または他のファイル システム タイプを無視するには、
-x
(除外) オプションを使用します。
df -x スカッシュfs
ファイル システムの名前、その容量、使用済み領域と空き領域、およびマウント ポイントを簡単に確認できます。
fstab でのすべてのファイル システムの再マウント
ブート時にマウントされるすべてのファイル システムには、
fstab
というファイル内にエントリがあります。これは
/etc
内にあるファイル システム テーブルです。
mount
使用すると、強制的に「リフレッシュ」し、
fstab
にリストされているすべてのファイル システムを再マウントできます。通常の動作条件では、これは必要ありません。複数のファイル システムに問題がある場合、これが真価を発揮します。
sudo
を使用する必要があるため、パスワードの入力を求められます。
sudo マウント -a
確かに、正しく動作しているコンピュータでは、少々圧倒されます。
ただし、ファイル システムに問題があるコンピュータでは、再マウントによって問題が解決される場合があります。それが起こらない場合でも、少なくとも画面とシステム ログに診断メッセージが表示され、問題の原因を見つけることができます。
ISO イメージのマウント
ISO イメージをマウントするのは簡単なので、ファイル システムの一部としてその内容にアクセスできます。
これはどの ISO イメージでも機能します。この例では、サイズが小さくてダウンロードが簡単なので、 たまたま Tiny Core Linux ISO を使用しています。 (GUI を備えた小さな Linux ディストリビューションで、18 MB です。おそらくそれより大きな .mp3 ファイルがあるでしょう。)
ISO イメージと同じディレクトリで、次のコマンドを実行します。マウントする ISO ファイルの名前に置き換えます。
sudo mount -t iso9660 -o ループ TinyCore-current.iso /mnt
sudo
を使用する必要があるため、パスワードを入力する必要があります。
-t
(タイプ) オプションは、マウントするファイル システムのタイプを
mount
指示します。これは ISO ファイルであるため、
iso9660
タイプ指定子が提供されます。
-o
(オプション) フラグは、追加のパラメータを
mount
に渡すために使用されます。パラメータは
loop
です。
ISO イメージに接続するためにループ デバイス ファイルを使用するために
loop
mount
強制的にマウントしています。ループ デバイス ファイルを使用すると、ファイル (ISO イメージなど) をマウントし、ストレージ デバイスであるかのように扱うことができます。
デバイス ファイルは、接続されたデバイスが通常のファイル システム ファイルであるかのように見えるようにするためのインターフェイスとして使用される特別なファイルです。これは 、Linux におけるすべてのファイル 設計哲学の一部です。
デバイス ファイルにはさまざまな種類があります。以前に、このテスト マシン上の唯一の
ext4
ファイル システムが
/
にマウントされており、
sda
と呼ばれていることに注目したときに確認しました。
より正確に言うと、その
ext4
ファイル システムは
/dev/sda
デバイス ファイルを介してファイル システムに接続されたストレージ デバイス上にあり、そのストレージ デバイス上のファイル システムは
/
にマウントされています。
もちろん ISO イメージの名前を指定する必要があり、ファイル システムをマウントする場所を
mount
に知らせる必要があります。
/mnt
を選択しました。
ISOイメージがマウントされます。 ISO イメージは常に読み取り専用モードでマウントされるという注意事項がターミナル ウィンドウに表示されます。
ISO イメージの探索
これでマウントされたので、ファイル システムの他の部分と同じ方法で ISO イメージ内のディレクトリを移動できます。 ISO イメージ内のファイルをリストしてみましょう。
/mnt
remember にマウントされます。
ls /mnt
ls /mnt/cde/
ISO イメージのアンマウント
マウントされたファイル システムをアンマウントするには、
umount
コマンドを使用します。 「u」と「m」の間に「n」がないことに注意してください。コマンドは「
umount
」ではなく、umount です。
どのファイルシステムをアンマウントするかを
umount
指示する必要があります。これを行うには、ファイル システムのマウント ポイントを指定します。
sudo umount /mnt
ニュースがないのは良いニュースです。何も報告がなければ、すべてはうまくいきました。
マウントポイントの作成
独自のマウント ポイントを作成して使用できます。
isomnt
という名前のファイルを作成し、そこに ISO イメージをマウントします。マウント ポイントは単なるディレクトリです。したがって、
mkdir
を使用して新しいマウント ポイントを作成できます。
sudo mkdir /media/dave/isomnt
これで、以前と同じコマンド形式を使用して ISO イメージをマウントできるようになります。今回は
/mnt
にマウントせず、
/media/dave/isomnt/
にマウントします。
sudo mount -r -t iso9660 -o ループ TinyCore-current.iso /media/dave/isomnt/
これで、新しいマウント ポイントからマウントされたファイル システムにアクセスできるようになりました。
ls /media/dave/isomnt/cde/オプション
しかし、その道のりは非常に長くなっています。それはすぐに面倒になってしまいます。それについて何かをしましょう。
マウントポイントのバインド
マウント ポイントを別のディレクトリにバインドできます。マウントされたファイル システムには、元のマウント ポイントまたはそれにバインドされているディレクトリを通じてアクセスできます。
これが実際に動作した例です。ホーム ディレクトリに
iso
というディレクトリを作成します。次に、ISO イメージ
/media/dave/isomnt
のマウント ポイントをホーム ディレクトリ内の新しい
iso
ディレクトリにバインドします。
元のマウント ポイント
/media/dave/isomnt
と新しい
iso
ディレクトリを介して ISO イメージにアクセスできるようになります。
-B
(バインド) オプションには、マウント ポイントの名前と、それをバインドするディレクトリの名前が必要です。
mkdir iso
sudo mount -B /media/dave/isomnt/iso
lsiso
ls /media/dave/isomnt
CD ISO
ls
CD CD
バインドでの umount の使用
マウント ポイントが別のディレクトリにバインドされているファイル システムは、そのマウント ポイントとバインド ポイントからアンマウントする必要があります。
ファイル システムを元のマウント ポイントからアンマウントしても、バインドされたディレクトリからファイル システムにアクセスできます。ファイル システムもそのディレクトリからアンマウントする必要があります。
sudo umount /media/dave/isomnt
lsiso
sudo umount ISO
lsiso
フロッピーディスクのマウント
フロッピー ドライブ (フロッピー ディスクが入ったもの) は記憶装置です。つまり、物理デバイスへの接続には sd (ストレージ デバイスの) デバイス ファイルが使用されます。次の空き SD デバイス ファイルがどれであるかを確認する必要があります。これを行うには、
df
の出力を
grep
にパイプし、「sd」を含むエントリを検索します。
DF | grep /dev/sd
このコンピュータでは、単一の sd デバイス ファイルが使用されています。これは
/dev/sda
です。次に発行される SD デバイス ファイルは
/dev/sdb
になります。つまり、フロッピー ドライブをコンピュータに接続すると、Linux は
/dev/sdb
を使用してフロッピー ドライブに接続します。
/dev/sdb
に接続されているフロッピー ドライブ内のフロッピー ディスク上のファイル システムを
/mnt
マウント ポイントにマウントするように
mount
指示します。
フロッピー ディスクをフロッピー ドライブに挿入し、フロッピー ドライブをコンピュータの USB ポートに接続します。次のコマンドを発行します。
sudo マウント /dev/sdb /mnt
ファイルシステムラベル
mount
で
-l
(ラベル) オプションを使用すると、ファイル システムにどのようなラベルが付けられているか (存在する場合) を確認できます。ラベルは任意の名前にすぎません。機能的な目的はありません。
-t
(type) オプションを使用して、
vfat
ファイル システムのみについてレポートするように
mount
依頼しています。
マウント -l -t vfat
ラベルはリストの最後に角かっこで囲まれています。このフロッピー ドライブのラベルは NORTUN です。
/mnt
マウント ポイントを介してフロッピー ドライブにアクセスできます。
cd /mnt
ls
ls -l AMATCH.C
フロッピーには C 言語の ソース コード ファイルが含まれています。あるファイルの日付スタンプは、そのファイルが最後に変更されたのが 1992 年 10 月であることを示しています。おそらく、多くの読者よりも古いファイルです。 (言うまでもなくNORTUNというレーベルの意味は時の流れの中で失われています。)
grep
コマンドを介してパイプされた
df
を繰り返して sd デバイス ファイルをリストすると、それらが 2 つあることがわかります。
DF | grep /dev/sd
フロッピー ドライブは予想どおり
/dev/sdb
にマウントされていると表示されます。ドライブのフロッピー ディスク上のファイル システムは
/mnt
にマウントされます。
フロッピーをアンマウントするには、
umount
使用し、パラメータとしてデバイス ファイルを渡します。
sudo umount /dev/sdb
umount Lazy オプション
あなた (または別のユーザー) がそのファイル システムを使用している場合、それをアンマウントしようとするとどうなりますか?アンマウントは失敗します。
sudo umount /dev/sdb
ユーザーの現在の作業ディレクトリがアンマウントしようとしているファイル システム内にあるため、失敗しました。 Linux は、あなたが座っているブランチを見送ることを許さないほど賢いのです。
これを解決するには、
-l
(lazy) オプションを使用します。これにより、
umount
ファイル システムが安全にアンマウントできるようになるまで待機します。
sudo umount -l /dev/sdb
ls
CD〜
ls /mnt
umount
コマンドが発行されても、ファイル システムはマウントされたままなので、ユーザーは通常どおりファイルを一覧表示できます。
ユーザーがディレクトリをホーム ディレクトリに変更するとすぐに、フロッピー ファイル システムは解放され、アンマウントされます。
/mnt
内のファイルをリストしようとしても結果は得られません。
Samba 共有のマウント
Samba は、Linux および Unix 系オペレーティング システムと Windows オペレーティング システム間でネットワーク共有に相互にアクセスできるようにする 一連のソフトウェア サービス です。
Samba のセットアップについては、この記事の範囲外です。ただし、利用可能になった Samba 共有へのアクセスが承認されている場合は、この方法で Linux に Samba 共有をマウントできます。
テスト マシンと同じネットワークに接続されている Raspberry Pi には Samba 共有があります。 Samba に「share」という名前を付けた Backup というディレクトリです。 SSH 接続を確立して、共有ディレクトリの内容を見てみましょう。共有ディレクトリは、Pi にマウントされた USB スティック上にあります。
ユーザー名は
pi
、Raspberry Pi のネットワーク名は
marineville.local
です。
ssh pi@marineville.local
ls /media/pi/USB64/バックアップ
出口
ユーザーが
SSH
コマンドを発行すると、Raspberry Pi パスワードの入力を求められます。
ユーザーはパスワードを入力し、認証されます。 Raspberry Pi に接続されているため、ターミナル ウィンドウのプロンプトが
pi@marineville
に変わります。
/media/pi/USB64/Backup
にある共有ディレクトリの内容がリストされます。内容は 2 つのディレクトリで、1 つは
dave
、もう 1 つは
pat
です。これで、Samba 共有をマウントすると何が起こるかがわかりました。
exit
と入力して Raspberry Pi から切断すると、プロンプトが
dave@
に戻ります。
Samba を使用するには、
cifs-utils
パッケージをインストールする必要があります。
Ubuntu または別の Debian ベースのディストリビューションを使用している場合は、
apt-get
使用してこのパッケージをシステムにインストールします。他の Linux ディストリビューションでは、代わりに Linux ディストリビューションのパッケージ管理ツールを使用してください。
sudo apt-get install cifs-utils
インストールが完了したら、次のようなコマンドを使用して共有をマウントし、状況に応じて IP アドレス、共有名、マウント ポイント (すでに存在している必要があります) を変更します。
sudo mount -t cifs -o credentials=/etc/samba/creds,uid=1000,gid=1000 //192.168.4.13/share /media/dave/NAS
そのコマンドの各部分を分解してみましょう。
- -t cifs: ファイル システム タイプは cifs です。
-
-o credentials=/etc/samba/creds,uid=1000,gid=1000: オプション パラメーターは、Raspberry Pi ユーザーのユーザー名とパスワードが含まれる安全な
credsというファイルへのパスです。ファイル システムのルートの所有者とグループを設定するために使用されるユーザー ID (UID) とグループ ID (GID)。 -
//192.168.4.13/share: Samba 共有があるデバイスのネットワーク上の場所、および共有ディレクトリの Samba 名。共有のルートは
Backupというディレクトリですが、その Samba 共有名はshareに設定されています。 - /media/dave/NAS: マウント ポイントの名前。事前にマウント ポイントを作成する必要があります。
/media/dave/NAS
のマウント ポイントにアクセスすることで、ネットワークを介して Raspberry Pi 上の共有ディレクトリにアクセスします。 Raspberry Pi には、
dave
と
pat
という 2 つのフォルダーがあることがわかります。
cd /メディア/デイブ/NAS
ファイルシステムの作成とマウント
dd
コマンドを使用してイメージ ファイルを作成し、次に
mkfs
を使用してその中にファイル システムを作成できます。その後、そのファイル システムをマウントできるようになります。これは、
mount
を練習して実験する良い方法です。
if
(入力ファイル) オプションを使用して
/dev/zero
からのゼロ値のストリームを入力ファイルとして使用するように
dd
に指示します。
of
(出力ファイル) は
geek_fs
という新しいファイルです。
bs
(ブロック サイズ) オプションを使用して、1 MB のブロック サイズを要求しています。
count
オプションを使用して、出力ファイルに 20 ブロックを含めるよう
dd
に指示します。
dd if=/dev/zero of./geek_fs bs=1M count=20
これにより、イメージ ファイルが作成されます。ゼロ値のみが含まれます。
mkfs
コマンドを使用して、
geek_fs
ファイル内に作業ファイル システムを作成できます。
-t
(タイプ) オプションを使用すると、ファイル システムのタイプを選択できます。
ext4
システムを作成しています。
mkfs -t ext4 ./geek_fs
ファイル システムを動作させるために必要なのはこれだけです。
これを
/media/dave/geek
にマウントし、
chown
を使用して所有者とグループの所有権を設定し、アクセスを許可しましょう。
sudo マウント ./geek_fs /media/dave/geek
sudo chown dave:users /media/dave/geek
効果ありますか?新しいファイルシステムに変更し、ファイルをコピーして確認してみましょう。
cd /メディア/デイブ/オタク
cp /etc/fstab 。
ls -l
ディレクトリを新しいファイル システムに変更することができ、
/etc/fstab
ファイルのコピーも正常に作成できました。効いてるよ!
mount
を使用してマウントされたファイル システムをリストし、
-t
(type) オプションを使用してその出力を
ext4
ファイル システムに制限すると、マウントされた
ext4
ファイル システムが 2 つあることがわかります。
マウント -t ext4
ファイルシステムの再マウント
ファイル システムを再マウントするには、
-o remount
オプションを使用します。これは通常、ファイル システムを読み取り専用 (テスト) 状態から読み取り/書き込み (実稼働) 状態に変更するために行われます。
フロッピードライブを再度マウントしましょう。今回は、
-r
(読み取り専用) フラグを使用します。次に、
grep
を介してパイプ
mount
、フロッピー ファイル システムの詳細を確認します。
sudo マウント -r /dev/sdb /mnt
マウント | grep /mnt
ご覧のとおり、強調表示された
ro
、ファイル システムが読み取り専用でマウントされていることを示します。
-o remount
オプションを
rw
(読み取り/書き込み) フラグとともに使用すると、1 つのコマンドでファイル システムをアンマウントし、新しい設定で再マウントできます。
sudo mount -o remount,rw /mnt
grep
を介して
mount
のパイプ処理を繰り返すと、
ro
rw
に置き換えられたことがわかります (強調表示)。ファイル システムは読み取り/書き込みモードになりました。
マウント | grep /mnt
ファイルシステムの移動(ではない)
以前は、1 つのコマンドでファイル システムをアンマウントし、別のマウント ポイントに再マウントできました。
mount
の
-M
(移動) オプションは、それを可能にするために特別に存在します。ただし、
systemd
に
移行した
Linux ディストリビューションでは動作しなくなりました。そしてそれはほとんどの有名人です。
ファイルシステムを
/mnt
から
./geek
に移動しようとすると失敗し、以下に示すエラー メッセージが表示されます。
./geek
を介してファイル システム内のファイルをリストしようとすると、結果が返されません。
sudo mount -M /mnt ./geek
ls ./オタク
回避策は、以前に元のマウント ポイントを新しいマウント ポイントにバインドするために使用した
-B
(バインド) オプションを使用することです。
sudo mount -B /mnt ./geek
ls ./オタク
元のマウント ポイントが解放されないことを除けば、実際の結果は同じになります。
最終観察
--make-private
オプションを使用すると、Linux の
systemd
バージョンで強制的に移動を実行することができました。このテクニックは 2 つの理由からここでは紹介しません。
- 予期しない動作が発生する可能性があります。
- これは永続的なものではなく、再起動するたびに繰り返す必要がありました。
Devuan Linux は
systemd
ではなく
SysV
init
を使用します。コンピューターに Devuan の最新バージョンがロードされ、テストされました。
-M
(移動) オプションは、そのシステムでは期待どおりに機能しました。
-M
(移動) オプションに関する
systemd
問題を除けば、
mount
と
umount
の使い方は簡単であることがわかります。これらは、システムが破損した場合に備えて、手動でファイル システムを元に戻す作業を開始する必要がある場合に役立つ優れたコマンドです。





