\r\n\r\n

Linuxターミナルからストレージデバイスをマウント、アンマウントする方法

linuxやunix系OS(macosなど)のファイルシステムは、ターミナルを使用してインストール、アンインストール、再インストールが可能です。必要なものがすべて揃った、強力で多彩なツールがここに...。

LinuxやUnix系OS(macOSなど)のファイルシステムは、ターミナルを使用してインストール、アンインストール、再インストールが可能です。必要なものがすべて揃った、強力で多彩なツールがここにあります。

リナックスファイルシステム

Linux、macOS、その他のUnix系OSのファイルシステムは、Windowsのようにストレージデバイスに個別のボリューム識別子を使用しません。Windowsでは、各ボリュームにC:やD:などのドライブ番号を割り当て、各ボリュームのファイルシステムはそのドライブ番号の下にあるディレクトリツリーとなります。

Linuxでは、ファイルシステムは多機能なディレクトリツリーである。マウントされたストレージデバイスは、そのファイルシステムをツリーに接ぎ木して、まとまったファイルシステムの構成要素のように見せているのである。新しくマウントされたファイルシステムには、マウントされたディレクトリからアクセスすることができます。このディレクトリは、そのファイルシステムのマウントポイントと呼ばれます。

多くのファイルシステムは、ブート時に自動的に、または実行時にコンピュータに接続されたストレージボリュームとして動的にマウントされます。慎重なシステム管理者は、システムへの接続を制御するために、ランタイムの自動マウントをオフにすることができます。

つまり、実行時に接続されたストレージデバイスは自動的にマウントされない可能性があり、手動でマウントする必要があります。ファイルシステムを手動でマウントすると、そのファイルシステムがどこにあるか、例えばマウントポイントがどこか、ファイルシステムが読み取り専用か読み取り書き込み可能か、などを決めることができます。

mount、umount、remountコマンドは、必要であろうとなかろうと、Linuxシステムのこの重要な側面を制御することができます。

mountでファイルシステムに問い合わせる

マウントには多くのオプションがありますが、コンピュータにマウントされているすべてのファイルシステムを一覧表示するには、オプションは全く必要ありません。mountと入力してエンターキーを押すだけです。

mount を実行すると、接続されているすべてのファイルシステムがターミナルウィンドウにリストアップされます。

大量のデータから欲しいものを探し出すのは大変です。

t(type) オプションは、報告するファイルシステムの種類を mount に伝えます。

mount -t tmpfs mount -t ext4

例えば、mount に tmpfs ファイルシステムのみをリストアップするように依頼すると、より管理しやすい出力が得られます。

tmpfsファイルシステムは、一見、通常のマウントされたファイルシステムのように見えますが、実は揮発性メモリに格納されています。tmpは、デバイス上の一時的なストレージであり、永続的なストレージではありません。

このとき、対象となるファイルタイプをtmpfsパラメータに置き換える必要があります。

また、ext4ファイルシステムを一覧表示するコマンドを発行しました。このテスト用コンピュータには、sdaデバイス(通常はプライマリハードディスク)に最初にインストールされるext4ファイルシステムと、ファイルシステムツリーのルートである/が存在します。

その他の指標では

  • rw: ファイルシステムが読み取りおよび書き込み可能であること。
  • relatime: カーネルは、ファイルのアクセスと変更のメタデータを記録するために最適化されたスキームを使用します。
  • errors=remount-o:十分に深刻なエラーが検出された場合、ファイルシステムは診断ができるように読み取り専用モードで再読み込みされます。

関連:Linuxのファイルシステムはどれを使うべき?

dfでファイルシステムを照会する

dfコマンドは、どのファイルシステムがインストールされているか、そのマウントポイントがどこにあるかを表示するためにも使用できます。

パラメータなしのdfでは、マウントと同じように情報過多の問題が発生します。例えば、ubuntulinuxでは、snapコマンドでインストールしたアプリケーションごとにsquashfsという疑似ファイルシステムが用意されている。誰がこれを見たいんだ?

dfがこれらや他のファイルシステムタイプを強制的に無視するには、-x (除外) オプションを使用します。

df -x squashfs

ファイルシステムの名前、容量、使用領域と空き領域、マウントポイントなどを簡単に確認することができます。

関連:Linux端末からディスクの空き容量やディスク使用量を確認する方法

fstabにあるすべてのファイルシステムを再インストールします。

ブート時にマウントされるすべてのファイルシステムは、/etcにあるファイルシステムテーブルであるfstabというファイルにエントリを持っています。

mount を使って、fstab にリストされているすべてのファイルシステムを強制的に「リフレッシュ」し、再読み込みすることができます。通常の作業環境では、この必要はありません。複数のファイルシステムで問題がある場合は、それなりの問題があります。

sudoを使用する必要があるので、パスワードの入力を求められます。

sudo mount -a

確かに、正常に動作するパソコンでは、これは少し違和感がありますね。

ただし、ファイルシステムに問題があるパソコンでは、再読み込みでクリアできる場合があります。そうならない場合は、少なくとも画面とシステムログに診断メッセージが表示され、問題の原因を突き止めることができます。

関連:Linuxのfstabファイルとその動作について教えてください。

isoイメージのインストール

ISOイメージは簡単にマウントすることができ、ファイルシステムの一部としてその内容にアクセスすることができます。

これはどのようなISOイメージにも対応します。この例では、たまたま非常に小さなカーネル linuxiso を使用しています。(GUI付きの小さなLinuxディストリビューションで、18MB!これより大きな.mp3ファイルをお持ちの方もいらっしゃるでしょう)。

ISOイメージと同じディレクトリで、以下のコマンドを実行します。 読み込むISOファイルの名前を置き換えてください。

sudo mount -t iso9660 -o loop TinyCore-current.iso /mnt

sudoを使用する必要があるため、パスワードの入力が必要です。

t (タイプ) オプションは、マウントするファイルシステムの種類を指定します。ISOファイルなので、iso9660の型指定子を付与しています。

o (opti***)フラグは、マウントに追加の引数を渡すために使用されます。

ISOイメージに添付されたループデバイスファイルを使って強制的にマウントするためにloopを使用します。ループデバイスファイルは、ファイル(ISOイメージなど)をストレージデバイスのようにマウントして処理できるようにするものです。

デバイスファイルは、接続されたデバイスが通常のファイルシステムのファイルのように見えるように、インターフェースとして使用される特別なファイルです。これは、Linuxのすべてのものの一部であり、ファイル設計の思想でもあります。

デバイスファイルには、さまざまな種類があります。以前、このテストマシンにマウントされた唯一のext4ファイルシステムが/のsdaという名前であることに気づいた例を見ました。

より正確には、ext4ファイルシステムは、/dev/sdaデバイスファイルを介してファイルシステムに接続されたストレージデバイス上にあり、/にインストールされています。

もちろん、ISOイメージの名前を提供する必要があり、ファイルシステムをマウントする場所をmountに知らせる必要がありました。私たちは/mntを選びました。

ターミナルウィンドウに、ISOイメージは常に読み取り専用でインストールされることを示すプロンプトが表示されます。

イソの画像を見る

これで、ISO イメージがマウントされたので、ファイルシステムの他の部分と同じように、ISO イメージのディレクトリを操作できるようになりました。ISOイメージに含まれるファイルを列挙してみましょう。mntにマウントされていることを記憶しています。

ls /mnt ls /mnt/cde/

isoイメージのアンインストール

マウントされたファイルシステムをアンマウントするには、umountコマンドを使用します。u "と "m "の間に "n "がないことに注意してください - コマンドはumountでunmountではありません"

umountにどのファイルシステムをアンマウントするのか伝える必要があり、そのためにファイルシステムのマウントポイントを提供します。

sudo umount /mnt

No news is good news.報告することがなければ、すべてうまくいくのです。

ローディングポイントの作成

独自のマウントポイントを作成し、使用することができます。isomntという名前のものを作成し、そこにISOイメージをマウントすることにします。マウントポイントは単なるディレクトリです。そこで、mkdirを使って新しいマウントポイントを作ることができます。

sudo mkdir /media/dave/isomnt

これで、先ほどと同じコマンド形式でISOイメージをマウントできるようになりました。今回は/mntではなく、/media/dave/isomnt/:にマウントします。

sudo mount -r -t iso9660 -o loop TinyCore-current.iso /media/dave/isomnt/

これで、新しいマウントポイントからマウントされたファイルシステムにアクセスできるようになりました。

ls /media/dave/isomnt/cde/optional

でも、この道はどんどん長くなっていくから、すぐに飽きる。

バインディングロード点

マウントポイントは他のディレクトリにバインドすることができ、マウントされたファイルシステムは、元のマウントポイントまたはバインドされたディレクトリを介してアクセスすることができます。

これは成功例です。ホームディレクトリにisoというディレクトリを作成することにします。そして、ISO image/media/dave/isomntのマウントポイントをホームディレクトリの新しいISOディレクトリにバインドすることにします。

元のマウントポイント /media/dave/isomnt と新しい ISO ディレクトリを経由して ISO イメージにアクセスすることができます。B(バインド)オプションは、マウントポイント名とバインド先のディレクトリ名を要求します。

mkdir iso sudo mount -B /media/dave/isomnt/ iso ls iso ls /media/dave/isomnt cd iso ls cd cde

バインディングにumountを使用する

マウントポイントを他のディレクトリにバインドしているファイルシステムは、そのマウントポイントとバインドポイントをアンマウントする必要があります。

ファイルシステムを元のマウントポイントからアンマウントしても、そのバインドディレクトリからファイルシステムにアクセスすることは可能です。また、そのディレクトリからファイルシステムをアンマウントしておく必要があります。

sudo umount /media/dave/isomnt ls iso sudo umount iso ls iso

フロッピーディスクのインストール

フロッピーディスクドライブ(中にフロッピーディスクが入っている)は記憶装置の一つです。つまり、sd(for storage device)デバイスファイルは、物理デバイスに接続するために使用されることになります。次の無料のsdデバイスファイルがどれかを判断しなければならない。dfの出力をgrepでパイプし、"sd "を含むエントリーを探せばいいのです。

df | grep /dev/sd

このコンピュータでは、/dev/sdaというsdデバイスファイルが1つだけ使用されています。これは/dev/sdaである。 次にリリースされるsdデバイスファイルは/dev/sdbである。 つまり、フロッピードライブをコンピュータに接続するとき、Linuxは/dev/sdbを使ってフロッピードライブに接続することになる。

フロッピーディスクドライブのフロッピーディスクにファイルシステムをマウントするよう、/dev/sdbを/mntのマウントポイントにアタッチするよう、mountに指示することにします。

フロッピーディスク**をフロッピーディスクドライブに接続し、フロッピーディスクドライブをパソコンのUSBポートに接続します。 次のコマンドを実行します。

sudo mount /dev/sdb /mnt

ファイルシステムラベル

mount の -l (label) オプションで、ファイルシステムにどのようなラベルが貼られているか (もしあれば) を調べることができます。ラベルは恣意的な名前に過ぎない。機能的な使い道がないのです。

t (タイプ) オプションを使用して、vfat ファイルシステムのみを報告するよう mount に要求しています。

mount -l -t vfat

このフロッピードライブのラベルは「NORTUN」です。

フロッピーディスクドライブには、/mntマウントポイントを介してアクセスすることができます。

cd /mnt ls ls -l AMATCH.C

フロッピーディスクには、C言語のソースコード・ファイルが収録されています。あるファイルの日付スタンプを見ると、最終更新日は1992年10月となっている。おそらく、多くの読者よりも古いものだと思います。(もちろん、ノートンのレーベルとしての意義は、時の流れの中で失われていることは言うまでもない)。

grepコマンドでdfパイプを繰り返し、sdのデバイスファイルをリストアップすると、2つになっていることがわかります。

df | grep /dev/sd

フロッピーディスクドライブは/dev/sdbに予想通り表示され、ドライブ内のフロッピーのファイルシステムは/mntにマウントされています。

フロッピーをアンマウントするには、umountを使い、引数としてデバイスファイルを渡します。

sudo umount /dev/sdb

umount の怠慢なオプション

アンインストールしようとしたときに、あなた(または他のユーザー)がファイルシステムを使用していた場合はどうなりますか?アンインストールは失敗します。

sudo umount /dev/sdb

これは、アンマウントしようとしているファイルシステム上にユーザーの現在の作業ディレクトリがあるために失敗します。Linuxは賢いので、あなたが座っているブランチを切断させることはありません。

これを克服するには、-l (lazy)オプションを使用します。これは、ファイルシステムが安全にアンマウントできるようになるまで umount を待機させるものです。

sudo umount -l /dev/sdb ls cd ~ ls /mnt

umountコマンドを発行しても、ファイルシステムはマウントされており、ユーザーは通常通りファイルを一覧することができます。

mntにあるファイルをリストアップしようとしても、結果は得られません。

samba共有のインストール

Sambaは、LinuxやUnix系OS、Windows系OSの間で、ネットワーク共有への交換アクセスを可能にするソフトウェアサービス群です。

Sambaのセットアップは、この記事の範囲外です。しかし、提供されたSambaの共有にアクセスできるのであれば、Linuxでマウントする方法です。

テスト機と同じネットワークに接続されているRaspberry PiにSambaの共有があります。これはBackupというディレクトリで、Sambaを「share」と名付けています。共有ディレクトリは、PiにインストールされたUSBメモリにあります。

ユーザー名はpi、raspberry piのネットワーク名はmarineville.localです。

ssh [email protected] ls /media/pi/USB64/Backup exit

ユーザーはSSHコマンドを発行し、Raspberry Piのパスワードの入力を促されます。

パスワードを入力して認証されます。Raspberry Piに接続されているため、ターミナルウィンドウのプロンプトがMarineville piに変化しています。

それらは、/media/pi/USB64/Backupにある共有ディレクトリの内容をリストアップしています。内容は、daveとpatという2つのディレクトリにある。これで、Sambaの共有をインストールするときに何が起こるかわかった。

Raspberry Piとの接続を解除するためにexitと入力すると、プロンプトはDave @howtogeekに戻ります。

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

コマンドの各パーツを分解してみましょう。

  • -cifs: ファイルシステムの種類はcifsです。
  • -o credentials=/etc/samba/creds, uid=1000, gid=1000:opti*** パラメータは creds というファイルへのパスで、Raspberry Pi ユーザーのユーザー名とパスワード、ユーザー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 /media/dave/NAS

ファイルシステムの作成とマウント

ddコマンドでイメージファイルを作成し、その中にmkfsでファイルシステムを作成することができます。このファイルシステムをマウントすることができます。これはマウントの練習や実験に適しています。

ここでは、if (input file)オプションを使って、/dev/zeroからのゼロ値ストリームを入力ファイルとして使用するようにddに指示します。

の (出力ファイル) は geeku fs という新しいファイルである。

bs(ブロックサイズ)オプションを使って、1MBのブロックサイズを要求しています。

ここでは、countオプションを使って、ddに20ブロックを出力ファイルに含めるように指示しています。

dd if=/dev/zero of./geek_fs bs=1M count=20

ゼロ値のみを含む画像ファイルを作成してくれる。

mkfsコマンドを使用すると,geekkuのfsファイルに作業用のファイルシステムを作成することができます.ext4システムを作成しています。

mkfs -t ext4 ./geek_fs

これだけで、ファイルシステムが動作するようになります。

これを/media/dave/geekにマウントし、chownでオーナーとグループオーナーを設定し、アクセスを許可することにしましょう。

sudo mount ./geek_fs /media/dave/geek sudo chown dave:users /media/dave/geek

うまくいくか? 新しいファイルシステムに切り替えて、ファイルをコピーして表示してみましょう。

cd /media/dave/geek cp /etc/fstab . ls -l

新しいファイルシステムにディレクトリを変更し、/etc/fstabファイルのコピーに成功しました!うまくいきましたね。

マウントされたファイルシステムの一覧を表示する mount を使用し、-t (type) オプションを使用して出力を ext4 ファイルシステムに制限すると、現在マウントされた ext4 ファイルシステムが 2 つあることがわかります。

mount -t ext4

ファイルシステムの再インストール

ファイルシステムを読み込み専用(テスト用)の状態から読み書き可能(本番用)の状態にするために、-o reload オプションを使用してファイルシステムを再読み込みします。

もう一度、フロッピーディスクドライブを読み込んでみましょう。今回は、-r(読み取り専用)フラグを使用します。その後、grepでパイプマウントし、フロッピーファイルシステムの詳細を見ていきます。

sudo mount -r /dev/sdb /mnt mount | grep /mnt

ご覧のように、ハイライトされたroは、ファイルシステムが読み取り専用でロードされていることを示します。

rw (read/write) フラグ付きの -o remount オプションを使用すると、1つのコマンドでファイルシステムのアンマウントと新しい設定での再マウントが可能です。

sudo mount -o remount,rw /mnt

grep repeat mount によるパイプ表示 ro を rw (ハイライト) に変更しました。

mount | grep /mnt

(Not) モバイルファイルシステム

以前は、ファイルシステムをアンマウントし、別のマウントポイントに再マウントすることが、1つのコマンドで可能でした。

特にmountの-M(move)オプションは、これを可能にします。ただし、systemdに移行したLinuxディストリビューションには適用されなくなった。これは大御所のほとんどがそうです。

ファイルシステムを/mntから.NETに移動させようとした場合。/geekでは、失敗し、以下のようなエラーメッセージが表示されます。ファイルシステム上のファイルを一覧表示しようとしています。/geekは何も結果を返しません。

sudo mount -M /mnt ./geek ls ./geek

解決策としては、以前、元のロードポイントを新しいロードポイントにバインドするために使用した、-B(バインド)オプションを使用することです。

sudo mount -B /mnt ./geek ls ./geek

これは、元のマウントポイントが解放されないことを除けば、実際と同じ結果になります。

最終見解

makeprivateオプションを使用すると、systemd版のLinuxで強制的に移動します。ここでこの手法を紹介しない理由は2つあります。

  1. 予測不可能な動作をする可能性があります。
  2. 永続的ではないので、再起動のたびに繰り返す必要があります。

Devuan LinuxはsystemdではなくSysV initを使用しています。 コンピュータに最新版のDevuanを搭載してテストしました。このシステムでは、-M(move)オプションは期待通りに動作します。

systemd の -M (move) オプションの問題を除けば、mount と umount は非常に使いやすいと思うはずです。これらのコマンドは、破損したシステムに直面し、ファイルシステムを手動で縫い合わせる必要がある場合に非常に便利です。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ