元の質問

元の質問

元の質問

だから新しいBTRFSプールのサブボリュームを/home。運命に任せてコレクションを作り直しました。

後で組み込まれた「Baobob」ディスク使用ユーティリティを実行しました。/mnt/wd予想よりも多くを明らかにします。もう少し注意深く見ました。 (/mnt/wd/home/$USER/multimedia移動後に置いたファイルではありません)「失われた」ファイルはすべて残ります(BTRFSシステムのルートディレクトリにはラベルがあります)。~/multimediawd

振り返ると、~/multimedia古いファイルは消えましたが、新しいファイルはまだ残ります。


ファイル間の共通点の喪失

最初に失われたファイルには1つの共通点があります。新しいドライブにコピーする前に、欠落していないファイルはとしてインストールされたext4パーティションにありました/home。すべての操作は、としてインストールされたntfs古いドライブのパーティションで行われ、/media/$USER/dataシンボリックリンクはを指します/home/$USER。デュアルブートに対応するためのものでしたが、使用を中止しました。すべてを新しいボリュームにコピーする場合(rsync関連する場合は使用)、すべてのファイルを分割してシンボリックリンクを作成する代わりにサブボリュームに入れます(両方のディレクトリが完了したら、あるディレクトリの内容をmv別のディレクトリにコピーしました)。rsync私はこの結果を決定する前にサブディレクトリに少し触れましたが、結局私が見つけることができる最高のディレクトリを得ました。/homeこれは新しいサブボリュームです。その後、/homeソースパーティションと一致するビューが表示され、マージされたバージョンと一致するビューが表示さ/homeれます。/mnt/wd/home


初期構成/状態

fstab現在私の状態は次のとおりです。

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/nvme0n1p5 during installation
UUID=699ad207-3b40-4caa-9926-503830121327 /               ext4    errors=remount-ro 0       1
# BTRFS pool
UUID=24f6bbb6-cccb-4f12-808c-195f18b19e05   /home   btrfs   defaults,autodefrag,subvol=home 0   2
UUID=24f6bbb6-cccb-4f12-808c-195f18b19e05   /mnt/app_drive  btrfs   defaults,autodefrag,subvol=applications 0   2
UUID=24f6bbb6-cccb-4f12-808c-195f18b19e05   /mnt/snapshots  btrfs   defaults,autodefrag,subvol=snapshots    0   2
# Swap file
/swapfile1 none swap sw 0 0

/mnt/wdまた、BTRFSボリュームのルートディレクトリもマウントしましたsudo mount UUID=24f6bbb6-cccb-4f12-808c-195f18b19e05 /mnt/wd

sudo btrfs subvolume list .すべてのサブボリューム(またはルート)のインストール場所で実行します。

ID 638 gen 4492 top level 5 path home
ID 639 gen 4433 top level 5 path applications
ID 640 gen 4404 top level 5 path snapshots
ID 800 gen 4402 top level 640 path snapshots/home_2017-07-06

ただしls ./$USER/multimedia(およびその他の欠落ディレクトリ)は、で/home実行中または実行中に全く異なる内容を表示します/mnt/wd/home

qwertystop@dt /home $ ls $USER/multimedia
pics  unprepared
qwertystop@dt /home $ cd /mnt/wd/home
qwertystop@dt /mnt/wd/home $ ls $USER/multimedia
3d  ml_resource  music  osu!  phone-ready  pics  Unprepared  vids

ここで何が起こっているのか、それとも2つを調整する方法を知っている人はいますか?アイデアは、あるファイルから別のファイルにすべてをコピーすることです。ただし、これはまだ可能な限り最善の方法ですべての新しいファイルに対してこれを行う必要があることを意味します。


さらなる実験

スナップ写真

スナップショットを作成しようとしています。スナップショットの作成にどのマウントポイントを使用しても、どこに配置しても、常に試したバージョンではなく、見つかったバージョンと/mnt/wd/home一致します/home

sudo btrfs subvolume snapshot /home /home/snapshot
sudo btrfs subvolume snapshot /mnt/wd/home /mnt/snapshots/snapshot
sudo btrfs subvolume snapshot /home /mnt/snapshots/snapshot

彼らはすべて同じです。これは内部の一貫性に役立ちますが、ファイルにアクセスしようとしたときに矛盾が持続する理由はわかりません。


fstab/インストール実験:

bootの後にBTRFSルートを使用する代わりに、fstabにBTRFSルートをマウントしようとしました/mnt/wd(行が行の前に配置されています)。/homemountfstab

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/nvme0n1p5 during installation
UUID=699ad207-3b40-4caa-9926-503830121327 /               ext4    errors=remount-ro 0       1
# BTRFS pool
UUID=24f6bbb6-cccb-4f12-808c-195f18b19e05   /mnt/wd   btrfs   defaults,autodefrag 0   2
UUID=24f6bbb6-cccb-4f12-808c-195f18b19e05   /home   btrfs   defaults,autodefrag,subvol=home 0   2
UUID=24f6bbb6-cccb-4f12-808c-195f18b19e05   /mnt/app_drive  btrfs   defaults,autodefrag,subvol=applications 0   2
UUID=24f6bbb6-cccb-4f12-808c-195f18b19e05   /mnt/snapshots  btrfs   defaults,autodefrag,subvol=snapshots    0   2
# Swap file
/swapfile1 none swap sw 0 0

これは何の違いも生じませんでした。

頑張りましたいいえ/homeデフォルトのサブボリュームを完全にマウントしますfstab(ラインコメント).その後、その行のコメントを削除してインストールしたとき、結果のインストール/homeドライブは/mnt/wd新しいファイルではなく古いファイルと一致しました。それでは、起動時に不安定になる可能性があると思いましたか?

「変更されていない」ファイルにはまだコメントの違いがあります。

ファイルシステムは、2つのバージョン間で別々に失われていないファイルを追跡し続けています。別に見てみると、tail .bash_history違うことがわかりました。

マウントポイントとサブボリュームの組み合わせに問題がありますか?

代わりにhomeサブボリュームをマウントし、後で再試行しました。以前のバージョンと一致します。サブボリュームのスナップショットを作成し、名前を付けてからマウントしました。/mnt/foo/foo/homehomenewhome/home新しいバージョンと一致します(古いファイルが見つからず、新しいファイルが表示されます)。

新しいバージョンにのみ存在するディレクトリの1つに新しいファイルを追加しました(まだnewhome)。再インストールhomeして/home再起動しました。ファイルがありません。再利用に変更しても、newhomeファイルはまだ存在します。別の順序で同じことを行い(バージョンに入れて確認homenewhome)、ファイルを別のディレクトリに入れます。結果は同じです。ファイルはそのファイルを含むサブボリュームにのみ存在し、最新バージョンにのみ存在します(インストールされている場合にのみ対応しますが、バージョンによって/home異なります)。これは/home、「マウントポイントにマウントされたサブボリューム」が何らかの理由で実際にマウントされたサブボリュームとは異なるものとして扱われるという最近の考えを排除します。

無関係なサブボリュームをインポートし、私のユーザー名のサブディレクトリを追加してからマウントしました/home。その結果、OSはまだ私のユーザー名/パスワードを認識していましたが、新しいユーザーであるかのように、そのボリュームとディレクトリにあるすべての構成ファイルを再生成しました。それいいえパーティションの「新しいバージョン」を使用してください/home

これで状況を整理できそうです。これは問題の解決や原因の特定には役立ちません。

長すぎます。

「home」というサブボリュームと派生したスナップショットは、実際には2つのサブボリュームです。そのうちの1つはマウントされている場合にのみ表示され、/homeもう1つは別の場所にマウントされている場合、またはBTRFSデバイスのルートボリュームプールのサブディレクトリとして表示されている場合にのみ表示されます。未知の理由から、2つのバージョンが最初にインストールされる直前のある時点で分岐したため、インストールされたバージョンには/home-ed/homeで上書きされた古いパーティションの内容が含まれていますが、他のバージョンにインストールされているバージョンはその場所のバージョンです。初期化後にファイルシステムを変更したため、ファイルシステムが含まれています(他のパーティションへの複数のシンボリックリンクを以前にリンクされたファイルに置き換えます)。/homersyncrsync

なぜこれが必要なのかわかりません。 「home」から派生していないサブボリュームがマウントされ、「home」のファイルがコピーされない場合、これは発生しないことを確認できます/home。ファイルの小さな部分を新しいサブボリュームにコピーすると、これが発生することを確認できます。それでは、スナップショットを撮るのではなく、すべてのファイルコピーをテストしてみましょうcp

これはうまく機能しますが、問題を指摘するのは難しい部分があります。新しいプライマリサブボリュームcp -a --reflink=always ./*から起動しようとすると、/home/qwertystop各ファイルに対して「クロスデバイスリンクが無効です」というエラーメッセージが表示されます。に関連する同じコマンドを実行すると、これは発生しません/mnt/wd/home/qwertystop問題は、あるマウント位置を別のマウント位置と別のデバイスに読み取るコンピュータによって引き起こされるか、または関連しているようです。私はこれが技術的に可能だと思います。これは、3 つの異なるデバイスで構成される BTRFS プールです。

レプリケートされたバージョンに切り替えたとき、最初は機能しているように見えましたが、少し試して/mnt/wd/homeみると、新しいサブボリュームに表示される重複エントリが以前のサブボリュームのものと同じであることがわかりました。

ベストアンサー1

私はこの問題に対処しましたが、これがなぜ問題なのか、元の不一致がどこから来たのかに関する質問ではありません。

ホームディレクトリを新しいサブボリュームにコピーしますが、/home/.ecryptfsはコピーしないとコピーは停止します。したがって、重複は.ecryptfsによって発生したようです。これがバグなのか、それとも私が知らないシステムの予想される動作なのかは不明です。

システムにインストールされている暗号化を無効にしました。

ecryptfs はスタックファイルシステムです。ログイン時に、つまりユーザーがデータを暗号化するために使用するパスワードを入力するときにインストールできます。 (または)は、findmntにインストールされているmountファイルシステムの種類を表示します。作成されたファイルはecryptfsで暗号化され、どこかに保存されます(btrfsなど)。これはecryptfs設定の1つにすぎません。これを構成する他の方法があります。ecryptfs/home/$USER/home/$USER//home/.ecryptfs/$USER/

私はそれを使用したことがないので、上記の説明に従わないでください。ここではコミュニティ提供のドキュメントを見つけることができます。

https://help.ubuntu.com/community/EncryptedHome#Encrypted_Home

これは、マウントされたbtrfsボリュームを使用してログインし、ホームディレクトリを調べると、にマウントされた/homeときに同じbtrfsボリュームのディレクトリ/home/$USERに表示されるものと比較して他のいくつかのファイルが表示される理由を説明します。$USER//mnt

「クロスデバイスリンクが無効です。」 /mnt/wd/home/qwertystop に関連する同じコマンドを実行すると、この問題は発生しません。問題は、あるマウント位置を別のマウント位置と別のデバイスに読み取るコンピュータによって引き起こされるか、または関連しているようです。

残念ながら、「機器間の接続」は間違った名前です。これは実際にファイルシステム間のリンクです。 btrfsファイルシステムからecryptfsファイルシステムにファイルをハードリンクまたは参照リンクすることはできません。その逆も同様です。

スナップショットを作成しようとしています。スナップショットの作成にどのマウントポイントを使用しても、どこに配置しても、常に/mnt/wd/homeのバージョンと一致します。

今、これがどのように起こるのかを見ることができるはずです。

警告:ログインしてecryptfsがインストールされている間にスナップショットを復元したり、バックアップストアを操作したりすることは非常に懸念されています。代わりに、rootユーザーを有効にしたり、暗号化されていないホームディレクトリを持つ特別な管理者ユーザーアカウントを作成したり、/homeスナップショットを復元する必要がある場合は、そのアカウントを使用できます。

おすすめ記事