web-dev-qa-db-ja.com

umount / homeが機能しない

Linux mint 13で/ homeパーティションを/パーティションにマージしようとしています。/homeをアンマウントし、別の場所にマウントして、/パーティションの/ homeディレクトリに内容をコピーするように言われました。

試しましたが、/ homeをアンマウントできません。そうしようとすると、次のメッセージが表示されます。

umount: /home device is busy (which processes use this device can be possibly be found with lsof or fuser)

/ homeにコンテンツをコピーできるように、/ homeをアンマウントして別の場所(/ dev/sda2/mnt/home)にマウントするにはどうすればよいですか?

8
DutchArjo

umount:/ homeデバイスはビジーです

これは、あなた(または誰か)が現在/homeファイルシステムのファイルを使用していることを意味します。最も簡単な解決策は、すべての通常のユーザーがシステムからログアウトしてから、rootとして再度ログインすることです。

(ログインウィンドウアプリケーションの[セキュリティ]タブで、システムを[ローカルシステム管理者のログインを許可する]に設定する必要がある場合があります。)

それでもumountが文句を言う場合は、エラーメッセージが示すように、次の出力を確認してください。

lsof /home

そして、

fuser -mv /home

これらのコマンドは、どのプロセスが/homeファイルシステムで開いているファイルを持っているかを示すので、それらを閉じることができます。

現在の作業ディレクトリは/homeを使用して/homeを停止するため、ターミナル/コンソールをumount /homeで開いているような一見無害なものに注意してください。

11
John1024

Google Compute Engineでこの問題が発生しました。/homeを別のパーティションとしてセットアップしました。

この場合、rootとしてログインすることはできません。ユーザーとしてログインしてからrootに切り替える必要があるため、umount /homeを実行することはできませんでした。

私の解決策は、通常のユーザーとしてログインすることでした

ssh myuser@myvm

その後、私はルートに切り替えて、次のように自分のセッションを閉じました:

cd /
exec Sudo su

最初に、ホームフォルダーが使用中であると不平を言う場合に備えて、ルートフォルダーに移動しました。次に、execSudo suの前に追加して、現在のbashセッションをルートセッションに置き換えます

これで、問題なくumount /homeできました。

3
santiago arizti

エラーメッセージはlsofまたはfuserを実行して、どのプロセスが/home、 試してみてください:

$ fuser -v /home/
                     USER        PID ACCESS COMMAND
/home:               root     kernel mount /home

lsofを使用すると、出力が長くなる可能性があります。

あなたのための簡単な解決策は、/etc/fstab マウントする /homeを別のパーティションに。このようなもの:

/dev/sdb3    /home    ext4    defaults,noatime    0 2

必ずコメントするか、古いエントリを削除し、再起動して変更を確認してください。

2
cuonglm

別の考えは、レスキューディスクを使用して再起動し、ルートシェルを取得し、すべてのパーティションをマウントしてから、古いデータのcp -rを新しい場所に実行してから、同期を実行してすべてのパーティションをアンマウントして再起動することです。ところで、/ etc/fstabテーブルを変更して、マウントされたルートパーティション(レスキュー/ etc/fstabではありません)で望みどおりの方法にすることもできます。

その後再起動すると、すべて正常です。

1
mdpc

Linux mint 13で/ homeパーティションを/パーティションにマージしようとしています。/homeをアンマウントし、別の場所にマウントして、/パーティションの/ homeディレクトリに内容をコピーするように言われました。

ホームディレクトリを新しいフォルダに移動できます。

usermod -m -d /new_home/your_username your_username

すべてのユーザーに対してこれを行う必要があります。その後、問題なく/ homeをアンマウントできます。

1
favadi

それは解決されました。正しく記録されなかったと思います。起動画面のセキュリティ設定でrootログインが有効になると、/ sda5をアンマウントすることができました。/sda5を/ mnt/homeにマウントし、そこから

cp -va /mnt/home/* /home

サイズ変更およびその他すべてを行い、/ homeを/パーティションに配置します。

サイズを変更するには、gparted cdromからブートする必要がありました。

現在は正常に機能しています。

1
DutchArjo

確かに、ホームディレクトリのファイルを使用しているいくつかのプロセスがあります。たとえば、すべてのプロセスはおそらく作業ディレクトリとしてそれを持っています。セッションマネージャが~/.xsession-errorsなどにログを記録している可能性があります。

すでに移動を行っている場合

ホームディレクトリを別のファイルシステムに移動すると、ファイルがコピーされ、古いファイルが削除されます。しかし、実行中のプロセスを新しいファイルに切り替えることはできません(そうする機能がない限り)。

ログアウトしてから再度ログインする必要があります。ここでログインすると、プロセスは新しいホームディレクトリを使用します。

fuser /homeまたはlsof /homeを実行することで、どのプロセスが古いホームディレクトリ(またはホームファイルシステムの他の何か)をまだ使用しているかを確認できます。これらのプロセスを強制終了すると、/homeをアンマウントできるようになります。 fuser -k /homeを使用して、すべてを殺すことができます(これを行う前に、彼らが何であるかを注意深くチェックしてください!)。

移動を行うためのより良い方法

理想的には、ログインしていないときにホームディレクトリを移動する必要があります。実行中のプロセスがデータを保存(たとえば、現在のセッションを保存)したり、すでに開いているファイルを使用したりする可能性があるためです。テキストコンソールにログインして移動できます(Ctrl+Alt+F1)そしてrootとしてログインします(rootパスワードが設定されていることを確認してください)。 /homeの内容を新しいディレクトリに移動し、空のファイルシステムをアンマウントしてディレクトリを移動します。

mkdir /home.new
mv /home/* /home.new/
umount /home
rmdir /home.new
mv /home.new /home

または、/homeマウントを移動することもできます。

mkdir /home.old
mount --move /home /home.old
mv /home.old/* /home/
umount /home.old
rmdir /home.old