Dropboxは、Linuxクライアントが将来ext4のみをサポートすると発表した。私は現在、btrfsパーティションでDropboxを問題なく使用しています。明らかにxattrサポートは必須です。 ext4とbtrfsはどちらもサポートしています。実際、私はbtrfsがサポートしていないext4機能を知りません。
Dropboxがどのようにファイルシステムを検出しようとしているかはわかりませんが、btrfsをext4のように偽装する方法はありますか?
答え1
おそらくカーネルを変更しないでください。それにもかかわらず、ファイルシステムがbtrfsではないと考えると、btrfsツールは動作を拒否する可能性があるため、これはおそらく良い考えではありません。
質問に回答しないと、Dropboxはそれをサポートしていませんか?それとも、プログラムが他のファイルシステムで実行されるのを積極的に防ぐのですか?後者の場合、ファイルシステムを検出する方法はいくつかありますが、すべて欺くことはできません。
答え2
この問題を解決する最も簡単な方法は、おそらくBtrfsファイルシステムにext4ループバックイメージを作成し、それを一時的な場所にマウントし、Dropboxと同期したファイルをそのファイルシステムに移動してから再マウントすることです。 Dropboxの同期。
これにより、Dropboxは正常に実行されますが、ファイルシステム全体を交換する必要はありません。ループバック画像などのスナップショットを撮ることができるという点で、Btrfsのいくつかの利点をまだ得ることができます。
答え3
btrfsからext4ファイルを作成し、画像を保存するディレクトリに移動する方法は次のとおりです。
truncate -s 100G dropbox.img
chown root:root dropbox.img
chmod 600 dropbox.img
mkfs.ext4 -j dropbox.img
mkdir /opt/dropbox
mount -t ext4 -o loop {path}/dropbox.img /opt/dropbox
chmod 777 /opt/dropbox
umount /opt/dropbox
今編集/etc/fstab
して追加してください。
{path}/dropbox.img /opt/dropbox ext4 loop 0 0
これで、mount -a
btrfsに永続的なext4ファイルシステムがあるようになります。
ファイルは通常のファイルではなくファイルシステムで「シンプロビジョニング」(スパースファイル)になるため、選択しませtruncate
んでした。これは、100GBがすぐに消費されず、時間の経過とともにDropboxが読み書きしてゆっくりとタイムアウトすることを意味します。fallocate
dropbox.img
答え4
はい、可能です。
そして、他の答えで提案したように、カーネルの修正は必要ありません。これは、Dropboxが好きではないext3ルートファイルシステムがあるときに使用するソリューションです。 Dropboxが使用しているファイルシステムを検出する方法は、/ etc / mtabファイルを使用することです。このファイルは現在インストールされているファイルシステムを追跡しますが、ほとんどの場合、他のUNIXシステムのレガシーです。特定の修正は、問題を起こすことなく安全に行うことができる。この場合、報告するファイルシステムの種類を変更してください。これらのコンテンツは Dropbox などのユーザー空間プログラムには便利ですが、通常の操作のためにカーネルには必要ありません。
まず、/ etc / mtabがプレーンテキストファイルであることを確認してください。多くの最新のLinuxシステムでは、これは/proc/self/mountsへの変更不可能なシンボリックリンクです。この場合、リンクをファイルのコピーに置き換えてください。
rm /etc/mtab
cp /proc/self/mounts /etc/mtab
その後、ファイルを変更してファイルの種類(3番目の列に表示されている)をext4に変更すると、Dropboxはそれを事実として認識します。
sed 's/\<btrfs\>/ext4/' /etc/mtab
これで何の苦情もなくDropboxを起動できます。このプロセスは起動するたびに繰り返される必要があるため、ログイン後に実行されるスクリプトに 's/<btrfs>/ext4/' /etc/mtab をすべて sed しました。
cat <<EOF >fix-mtab.sh
#!/bin/sh
sudo rm /etc/mtab
sudo cp /proc/self/mounts /etc/mtab
sudo sed 's/\<btrfs\>/ext4/' /etc/mtab
EOF
chmod +x fix-mtab.sh
./fix-mtab.sh