ファイルシステム総合スレ その19
良いところ・・・
・fsck不要、マウントが成功すればファイルシステムはclean(ということになっている)
・スナップショット、サブボリューム機能
・Copy on Writeのファイルコピー
・透過的圧縮
・ファイルシステムの機能としての複数デバイス機能(JBODっぽいやつ、RAIDなど)。ただしRAIDはRAID5など未完成。
・send/receive機能
他の~~ファイルシステムだってその機能はあるだろ!というのもあるけど、別にBtrfsだけの機能という話ではないので・・・ 俺は xfs 使ってるから助かる
実際に恩恵を受けるのはあとだろうが シングルディスクだとXFSにするかBtrfsにするか迷う Btrfsは凄い高機能な割にリソース食わないのが結構嬉しい btrfsはファイル内容のcheck summingがあるので安心感ある。 ZFSでZVOL使うのとBtrfsで.imgファイル作って使うのに特質すべき差ってある?
>>495
これが出来たら良いのに Btrfs の色々な機能を使っている人は、インストール時点では/に一通りをインストールしてから、新規のパーティションのフォーマットをBtrfsで適切なフラグ付けて、mount オプションも適切なフラグ付けてってされていますか?
その後、/var の中身を移動させるとか。
インストーラの時の設定のみで良いのか疑問です。 昔xfsでCoWを有効にした時には
ディストリのインストーラーのソースコードを弄ってフラグ変更したな
再フォーマットでID変わると不具合出る事があるからその方が安全だと判断した >>501
ありがとう
パッチ当てなくても良いのか、後で試してみる >>502
Arch Linuxをbtrfsオンリーで使っている。
他のディストリ事情は分からないけど、btrfs自体は圧縮やCoWのOFF/ONは後でディレクトリとファイル単位でできるし、subvolumeも後でpoolからいくつでも切り出せる。
一部のmount optionもsubvolume単位で変えられる。
自分の場合、partitionを分ける理由はsubvolumeで変えられないoption(autodefragとか)を使いたいときぐらい。
使い方次第だけど、分けたくなったら後でsubvolumeを切り出したりresizeすればいいかと。
/varとかはrsyncで適当に移動しているけどArchは動いている。
1byteの差も許せない場合はlivecdとbtrfs send/recvを使うのかな。やったことないけど。 これは生きてるんかな
https://github.com/bianster/mysqlfs
mysqlfs
MySQLfs is Linux userspace filesystem which stores data in a MySQL database. It uses FUSE to interface with the kernel. >>505
btrfsのマウントオプションは今のところ
最初にマウントされた時点のオプションが
同じファイルシステムからの後のマウントにも一律に適用されるのであって
例外はほとんどない(それこそsubvol指定ぐらいである)はずなんだけど
「サブボリューム単位で変えられるオプション」って逆に一体どういった物のことなんです?
上記の理由で圧縮周りもCoW無効もサブボリュームトップのディレクトリにプロパティを適用する事でしか
いちファイルシステムに混在で運用出来ないって認識なんですが……
ttps://btrfs.readthedocs.io/en/latest/btrfs-man5.html#mount-options >>507
あ!申し訳ない。。btrfs WiKi FAQ を見直したら確かにsubvol以外はまだ Planned だった。。訂正します。
ただ、圧縮とCoWはsubvolではなくディレクトリ、ファイル単位にできている。
https://wiki.archlinux.jp/index.php/Btrfs#CoW_.E3.81.AE.E7.84.A1.E5.8A.B9.E5.8C.96
chattr +C で CoW無効、chattr +c 圧縮有効かな。確認は lsattrやcompsizeで。
空ファイル以外はファイル作成後の変更は効かないかも。。
btrfsはopenSUSEが標準でrootfs対応していてsubvolumeやsnapshotも色々考えられているようなので、VMなどに入れて参考にするのも良いかと。 >>508
chattr で CoW 無効にしても swap file にしようとすると結構ボロボロだった経験が…
今はマシになったかな? >>509
swapfile、どうなんですかね。。
btrfs使い始めた頃はswapfile無く、ずっとswap partition切っているので分からず。。
使っている方の情報知りたいですね。 CoW のおかげでファイルコピーが早く終わるシチュエーションが思いつかない ファイルコピーがCoWってのはBtrfsの1つの側面に過ぎなくて、
Btrfsの重要なところは、既存ファイルの上書き保存であっても、(chattrで無効化してなければ)常にCoWがなされるってところなんだ。
つまり、既存ファイルの上書きでも、ブロックが上書きされるんじゃなく、新しいデータが別のブロックに書き込まれてから、
当該ファイルがそのブロックを参照するようにメタデータが変更される。
だから何だと言われると困るが・・・ cpでreflink使うと巨大ファイルのコピーでもすぐ終わるのが便利。raw imageの簡易バックアップとか。
reflinkはCoWの副産物の認識。
変更箇所が少なければ容量の節約にもなってるはず。。 CoWなのに上書きはそのまましちゃうファイルシステムなんて存在するの? いまのカーネルはスワップファイルとその物理領域をロックして直接アクセスするので性能はスワップパーティションと変わらない
そのときcowは発生しない ZFSですが、ashift、recordsize、volblocksizeなど重要パラメータがいくつもあるようで、最適設定が分からずにいます。
詳しい方のアドバイス頂きたく(できれば仕組みや考え方も。。)
用途:ホームサーバ(NFS、KVM)
H/W:CPU:Xeon E3-1220 V2 RAM:16GB SSD:CT1000MX500 x2 HDD:ST8000DM004 x2
ホストOS: Debian 11 bullseye (OpenZFS)
KVMゲスト: Linux、OpenMediaVault、Windows10
この用途だと、SSDとHDDのashift=12(4K)、データ倉庫のrecordsize=1M、VM用zvolのvolblocksize=16K かなと考えているのですが。 5.20でXFSがIOuringを使うようになるみたい
btrfsも対応中で近いうちに使えるようになる >>516
> HDD:ST8000DM004 x2
私だったらの話ですがこのドライブ(SMR)をZFSで使うのは割と勇気が要ります
事例リサーチの上でご決断を
ashiftは12で良いでしょう
recordsize や zvolブロックサイズについてはより詳しい人をお待ち下さい >>518
ありがとうございます。
SMRは確かに遅いけど、現状自分の使い方だとbtrfsであまり気にならないので、ZFSでもいけるかなと。
さすがにWin10 VMは難があると思うのでSSDへの配置も考えてます。 >>519
私もだいぶ前バラクーダ2TBでZFSを試した事があり
その時S.M.A.R.Tのなんだかの値がやたら増えたんです
(なんてやつだったかは忘れてしまいました)
「ZFSをSMRドライブで使うとデータロストするかもよ」みたいな記事もある様で
怯えた私はCMRドライブを手に入れバラクーダはテレビ録画用(FSはXFS)に回してしまいました ZFSの暗号化ですが、ZILやl2arc使う場合特に注意する点あります?
attach先poolの暗号化が適用される、であってますかね? OpenZFSでdRAID使っている方います?
安定性や性能、使い勝手はどうなのか参考にさせて頂きたく。 このところautofsとかいうのにハマりつつある
車輪の再発明?別にfstabや手動マウントでじゅうぶん?
いやー面白いじゃん マウントしてないのにcpコマンド打ったりしたときに自動マウントされて通ったりするの そういえばそんな仕組みもありましたね。
ftpのマウントとかと組み合わせると案外便利なのかもしれませんね。 幾多のNASやFTPやクラウドストレージをマウントしていてもサービス再起動するだけで一括アンマウント
mountコマンドやfuseで使えるものならなんでも動的マウントが可能
WANストレージを多用する人には有用 かもね なおautofsはローカルストレージにも使える
fstabでnoauto指定したマウントポイントにアクセスするまではマウントしないという使い方
例えばバックアップ用やマル秘ファイル満載のHDD、使うまではオフラインにしておくなんて事が可能
多少の電気代とコマンド叩くカロリー節約にはなる > fstabでnoauto指定したマウントポイントにアクセスするまではマウントしないという使い方
これLinuxでは結構手こずるわ
FreeBSDなら当該行頭の#を消すだけ 外付けのデータがこっそり壊れてる可能性がある、
というのを極力避けるためにwindows捨ててlinux(btrfs)使う価値ある?
そもそもそんな破損の仕方はそれほど起こらない? OSやファイルシステムのせいにする以前に
ヘタったストレージはさっさと交換して廃棄しちまえ、とだけ
付け加えるとしたら消えたら困る様なデータの保管先が中古ドライブだったらもってのほか > ヘタったストレージはさっさと交換して廃棄しちまえ、とだけ
定期的に新しいHDDに移してはいるんやけどね
10TBとかのデータをまったくの欠け無しにどんどん世代交代してくなんて可能なんかと不思議でさ
保存中に気づかない欠けが発生したりしないもんかと
その点ファイルシステムがハッシュチェックしてくれたら少なくとも気づくことはできるかなと思った
zfsやらbtrfsやらを使ってる人でその宇陰でデータ破損に気づけたという経験をした人はここにいる? クレクレ君が張り付いてんなら俺は何も情報出さんよ
普段どんな構成で運用してて現在どんな状態か等を「正直に」カミングアウトすれば別かもしれんが ファイルシステムの機能以前にそんなに完全性を気にするなら普通はベリファイなりハッシュチェックなりかけるので… Oracle Linux 9 は btrfs サポートするのかー、と今調べた。
RHEL 9 も次では btrfs 復活させないのだろうか。 情報出さんよと煽れば情報貰えると思ってる
クレクレ君が張り付いてるな 欠けるってなんだ
ディスクのチェックすり抜ける破損なんてあるか? > 情報出さんよと煽れば情報貰えると思ってる
>>536か?
あの短い文章で気持ち悪さを醸し出せるって大した才能だよ >>538
Oracle Linuxは普通に8でもbtrfs使えるので・・・
そりゃ自分のところで作ってるんだから当たり前である もうsolarisぶん投げたんだからzfs移植してくれればいいのに >>540
> 欠けるってなんだ
> ディスクのチェックすり抜ける破損なんてあるか?
RAID スクラビングでググれ
H/w RAID 製品だとデフォなんで結構あるんじゃね? >>544
そういうのはあるけど
質問者のいうファイルシステムを変えたからって回避できる問題ではないよね oracle にはzfsをGPL化して解放して欲しい。
もう面倒見る気ないでしょ。 変更しないデータは iso ファイルで固めた後にパリティアーカイブコマンド
(par2 コマンドとか MultiPar(Windows) とか) でパリティ付けてるわ。
誤り訂正符号なんでパリティをギガ単位でつけておけばギガ単位でデータロスト
しても修復できるんでお勧め。 arch の XFS のドキュメント見てたら、カーネル5以降で使えるようになった機能への記載もあって良かったよ。
CoWはよくわからんが。
https://wiki.archlinux.jp/index.php/XFS RHELがbtrfs捨てたんだからbtrfsはもうダメって雰囲気から、未だにbtrfs採用しないとかRHELは遅れてんなみたいな雰囲気にまで変わったのは何気にすげーわ RHELというかRed Hatには早くファイルシステムレベルの透過圧縮を実現して欲しい。
アプリ側で圧縮展開なんて面倒すぎてやってられん。。 >>550
どのオペレーションの事言ってるの?
圧縮するとパフォーマンスに影響あるから、理解して使わないとダメだと思うのだけど。 確かに適用先は気をつける必要があるね。
自分の場合はサービスアプリの大量のJSONログ。zstdならAWS EBS節約にかなり効果ある。
通常のOS領域でも、lz4ならパフォーマンス上がるという報告もあるし。 Redhatはbtrfs捨てた代わりにstratisとかいうの開発してただろう
使ってる人いるのか知らんけど ここからのリンクでRAID5,6 でbtrfsは、まだ問題抱えている気はする。
パーソナルユースでRAID5,6 使う人は多くないから問題ないのかな。
https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices
CoW はDBのファイルシステムに向かないという話もあったと思う。
そんな事を気にし始めるとext4いいね、って一周するんだけど。 直っているねかも
Btrfs RAID 5/6 Sub-Page Support Readied For Linux 5.19
https://www.phoronix.com/news/Btrfs-RAID5-RAID6-Subpage RHはxfsに梶切っていた認識。
btrfsは開発facebookメインで圧縮もfb自身が実環境で使ってる記事あった気がする。
世界最大級のサービスで使われてるのは強みかな。 >>554
これってデータベースが更新頻度の高い巨大なバイナリだからって意味だよね?
cowの利点は活かせないけど特段デメリットも無い気がする EXT 4に比べるとパフォーマンスが落ちるぐらいかな RHはxfsに舵を切ったんじゃなくてファイルシステムからは撤退でしょ
EMCやNetAppと違って利益に直結しないbtrfsにお金かけられないよ btrfsはファイル毎にCoW切れるからDBも行けるよ。まぁ本気でやるなら専用パーティション切れってのは確かだけど レッドハットはXFSに行ったけどfedoraはbtrfsなんだよな? デスクトップだけね
fedoraサーバーはbtrfsではなかったはず Fedora Server で btrfs インストール時に選べるよ。
ただ LVM との組み合わせではリストに出てこないから、利用できないと思われているかも。 RedHatは社内にBtrfs詳しい人がいないから採用予定はないってさ
ここで言う詳しいは客からのバグ報告を基にBtrfs側に修正パッチ投げられるレベルの話ね それでいうと、RedHatはじゃぁ、「サポート」しているパッケージ、ソフトウェアは全部、その「詳しい」人が社内にいるのか・・・と思ってしまうのだが、そうなのか?
まぁあれだけのサポート料とるからには、そうなのかもだが。 >>564
結構のカバー率でいるよ
XはカバーしきれないからWayland作ったし
PulseAudioも外から触れないからPipeWireを作った
RedHatはサポート出来ないなら代替プロジェクトを自前で立ち上げるくらい本気でやってる そんな話を聞くと Red Hat 好きになってしまうじゃないか。 PodmanってRHなのか。ひょっとしてkubernetesと相性良かったり他に無い連携機能あったりするのかな >>565
pulseaudio外から触れないってどういう意味? Podmanはkubernetesと直接の関係はないけど、buildahがOpenShiftと関係ある。
OpenShiftのコンテナのサポートはbuildahやDeploymentConfigなどのRH製で作ったもの以外は断られる場合がある、となってたはず。
実際は柔軟だと思うけど。 外部のボランティアが動かないせいで苦情を放置する訳にもいかないからね
特に複数ソフトウェアの相性によるバグは相手のせいにし合って永久に解決しないから
両方RHで管理してしまうのが一番手っ取り早い dockerが将来性や互換性や内部のゴタゴタで揉めてたころ、redhatがコンテナ実行環境を掻っ攫おうとしたけどdockerがなんか復活して失敗したプロジェクトだろpodman それにしても最近のBtrfsの安定感は凄い。
Fedoraユーザーだから透過圧縮を有効にして数年使っているけど
全く不具合発生しなかった。
コミュニティでも不具合報告がないしデスクトップ用途なら実用レベルに達した気がする。 カーネル4.xx時代には普通に使ってぶっ壊れた経験がある RAID5と6だけは一向に進まんな。まぁ、使わないけど…… mostly OK: safe for general use, there are some known problems that do not affect majority of users
これとか、英語オモシロって読んだけど。 ZFSにLinuxとFreeBSDの独立したデータセットをつくってマルチブートしてるんだが
Linux使用後にFreeBSDを使うには一旦FBSDインストールメディアでimportする必要がある
この手間さえ無ければZFSになんの不満も無いんだよなあ あとZFSはストレージプールからのデバイスの削除ができない。デバイスを誤って追加した場合でも、削除はできない。
btrfsは一応削除できる。削除しようとしているデバイス上のデータを他のデバイスに移動させる時間がかかるけど。
デバイスの削除ってあまり使われない機能なん? 単純なストライピング(RAID0)の場合なら zfs remove でできるけど 正確には zpool remove ストレージプール ブロックデバイス ZFSで、別のマシンで同じpool名で使ってたディスクを同じマシンに付けた場合、どうやってimportするんでしょうか? ちょっと質問文が紛らわしいので私なりに整理
マシン1にてtankというpool名でimportしていたZFSパーティション or ZFSアレイがあるとする
↓
マシン1をshutdownし、プールtankとして使用しているストレージをマシン2へ接続する
↓
稼働しているマシン2にてプール名はそのままにtankをimportしたい
こういう事なら実施命令は簡単
# zpool import -f tank 説明不足ですみません。
disk1: マシン1で tank として使用中
disk2: マシン2で tank として使用中
の状態で、
disk2 をマシン2から取り外し、マシン1に取り付け、importする方法、の意図でした。
目的はdisk2のtankからのデータのサルベージです。 こちらは仮想ストレージで構成を再現したものです
現在の構成はおおよそこんな感じという事ですかな
tps://i.imgur.com/lqqmoNP.png
ブロックデバイスの状態・予定サルベージ先ストレージ等不明かつ当方に時間の余裕が無い為
申し訳ございませんが実際のサルベージ手順は他の方のご回答をお待ち下さい あ、違うな
マシンが2つあってzpool(非RAID)も2つあり、どちらもpool名がtankという事か
tank(disk2)の状態を提示し回答をお待ち下さいませ 状態の信憑性を高める為に、状態提示は端末エミュレータのスクショ貼りがおすすめです ありがとうございます。
調べたところ、zpool import poolname newname でいけそうな感じでした。
仮想環境で試してみようと思います。 物理環境があってサルベージが目的なのに仮想環境で試すとはこれ如何に 物理には同じ名前のプールがあるから物理でやる前に試すってことじゃないかな?