Logo GH

ファイル・システムと同期

概要

ファイルシステムは、整合性、パフォーマンス、および操作のバランスです。同期は、コンシステンシモデルと競合解決に関するものであり、単なる「コピーファイル」ではありません。"要件(p95レイテンシ、RPO/RTO、ロードタイプ)から始め、ファイルシステムとプロトコルを選択し、ログとロックを構成し、SLOを設定し、スナップショット/バージョン管理を自動化し、正しい同期ツールを使用します。

ロード用のファイルシステムの選択

ユニバーサルLinux FS

ext4は安定した仕事場です。オプション:'noatime、 nodiratime、 discard(慎重に)、data=ordered'。VMドライブ、共有ディレクトリ、CIアーティファクトに適しています。
XFS-大きなファイル/並列性(メディアコンテンツ、ログ、DWH)に強い。オプション:'noatime、 inode64';大きなファイルの場合は'reflink=1'(クローン)を設定する価値があります。
ZFS-CoW、 integrity check、スナップショット/レプリカ'send/recv'、 ARC/L2ARC、同期のためのZIL/SLOG。バックアップ、NAS、完全性の要件を備えたベースプールに最適です。
Btrfs-CoW、スナップショット/圧縮/ユーザー空間のRAID;dev/testおよびedgeの下でよい、チューニングなしでOLTPのために注意して下さい。

Windows/クロスプラットフォーム

NTFS-中小企業のために信頼できるACL、 ADS;パフォーマンスのための'DisableLastAccess'。
exFAT-リムーバブルメディア、権利とログなし(生産用ではありません)。

信頼性と速度に影響を与える設定

ログと障壁:'data=ordered'(デフォルトではext4)-バランス;'data=journal'-より安全だが遅い。書き込み障壁が有効になっていること(またはBBU/PLPを備えたコントローラ)を確認します。
fsync/sync:クリティカルスレッド(logs/transactions)は'fsync()'を明示的に呼び出す必要があります。そうでなければ事故の場合の損失は可能です。
atime: 'relatime'/'noatime'は書き込み圧力を低減します。
POSIX ACLとセキュリティラベルが必要な場合、xattr/ACL-Enable。
ブロックサイズ/レコードサイズ:ZFS 'recordsize=16K' DB;'1M'は大きい媒体のために。

実装の例:
bash ext4 for CI artifacts
UUID=... /var/lib/ci ext4 noatime,nodev,nosuid,data=ordered 0 2
XFS for Media Directories
UUID=... /srv/media xfs noatime,attr2,inode64 0 0
ZFS for backups and snapshots (creation)
zpool create tank mirror nvme0n1 nvme1n1 zfs set compression=lz4 atime=off tank/backups

ネットワークおよび分散ファイルシステム

NFS/SMB (NASアプローチ)

NFSv3/v4:シンプルで高速。v4はロックとKerberos ('sec=krb5p')を与える。高周波「deep」 fsync-より良いローカルディスク+非同期アンロードのためにNFSに依存しないでください。
SMB 3。x:マルチチャネル、暗号化、AD統合。機密データの署名/暗号化を有効にします。

エクスポートNFS(最小):

/pool/projects 10. 0. 0. 0/16(rw,no_root_squash,sec=krb5p,async)
SMB(フラグメント):

[reports]
path = /pool/reports read only = no vfs objects = acl_xattr, recycle smb encrypt = required

分散FS

CephFS-POSIX over Ceph;水平スケール、スナップショット、クォータ、分散メタデータに適しています。
GlusterFS-簡単に起動、レプリカ/シャーディングが、小さなファイルとp99できちんと。
Lustre/IBM Spectrum Scale-LDC/大容量ファイル。ネットワーク/操作が要求されます。
9P (Virtio-fs)-VM共有用であり、ハードSLOを使用した本番負荷用ではありません。

推奨事項:OLTP/ウォレット-ネットワークFSではありません。ブロックボリュームを使用します。静的コンテンツ/一般的なアーティファクト-NFS/SMB/object+CDN。

ロック、キャッシュ、一貫性

アドバイザリと必須のロック:Linuxのアドバイザリ;SMBはオプロック/リースをサポートし、ステートフルロックNFSv4サポートします。
クライアントキャッシング:攻撃的なキャッシュは読み取りをスピードアップしますが、マルチクライアントでは競合のリスクが高まります。

一貫性:
  • 強い(ローカルFS、 ZFS)。
  • Close-to-open (NFS)-'close ()/open()'時に変更が表示されます。
  • 最終的な(一部の分散/オブジェクトスクリプト)。
  • 営業時間:NTP/PTP;時間ドリフトは紛争解決とTTLを破ります。

同期: モデルとツール

モデル

一方通行(プッシュ/プル):アーティファクトの公開、レポートのアップロード、オフサイトバックアップ。
双方向(双方向):コラボレーション;resolverの競合とバージョン管理が必要です。
ハブとスポーク:中央ノード/クラスタ(MinIO/S3+エージェント)を介してスター。
ほぼリアルタイムvsバッチ:inotify/change logs vs周期的なウィンドウ。

ツール

rsyncは事実上の一方通行の標準です。'--delete'、 '--partial'、 '--inplace'(注意)。
rclone-S3/clouds、ハッシュチェック、サーバー側のコピー。
ユニゾン-真の双方向、紛争解決。
同期-p2p、バージョン管理、ワークフォルダに便利。
lsyncd-inotifyによるrsyncトリガー。ほぼリアルタイム。
ZFS send/recvは、スナップショット/増分(バイト効率)の完璧なシンクです。

rsync(一方通行、静的ディレクトリ発行):
bash rsync -az --delete --numeric-ids --partial --inplace \
/srv/builds/ user@edge:/var/www/builds/
Unison (bi-dir、 profile):

root =/srv/shared root = ssh ://user @ peer//srv/shared prefer =/srv/shared # in case of conflict - local side repeat = watch # inotify ignore = Name. tmp
lsyncd (rsyncでほぼリアルタイム):
lua settings { logfile="/var/log/lsyncd. log", statusFile="/var/run/lsyncd. status" }
sync {
default. rsync,
source="/srv/outbox",
target="user@remote:/srv/inbox",
rsync={ archive=true, compress=true, delete=true }
}
ZFSレプリカ(増分):
bash zfs snapshot tank/data@now zfs send -i tank/data@prev tank/data@now      ssh backup zfs recv -F backup/data

バージョン管理、スナップショット、バスケット

CoWスナップショット(ZFS/Btrfs/CephFS):クイックロールバックポイント、分。請求書。
アプリケーションレベルのバージョン管理(Nextcloud/Syncthing/object):ユーザーに便利です。
SMB/NFSのバスケットをリサイクルする:誤った削除から保存しますが、バックアップを交換しないでください。

セキュリティとアクセス

ACLとxattr: POSIX ACL、 SMB用SID/ACE、 uid/gidマッピング。
ゲートウェイを通じて読み取り/書き込み:SFTP/HTTPS/WebDAV-SMB/NFSを外部で開くことができない場合。
暗号化:LUKS/ZFSネイティブ;飛行中-Kerberos (NFSv4)、 SMB暗号化、ゲートウェイ用TLS。
PII/コンプライアンス:ボールセグメンテーション、厳格な権利マスク、アクセス監査、必要に応じて変更不可のWORM。

オブザビリティ、SLO、アラート

ФС: p95/p99レイテンシ(読み取り/書き込み/オープン)、IOPS、 qdepth、キャッシュのヒット、inodeの使用法、塗りつぶしレベル、エラー(EIO/ENOSPC)。
ネットワークメトリック(NFS/SMB): retransmitts/drops、 RPC RTT、 oplock break、キュー長。

SLO(例):
  • NFS ball CI: p95 'open'/'read' ≤ 3-5 ms、可用性≥ 99。95%.
  • SMBレポート:10k files/dirを≤すると100 ms ≤リストされるp95ディレクトリ。
  • ZFSバックアッププール:p99書き込み≤ 10ミリ秒、100%スナップショット成功、RPO ≤ 15分(増分)。
アラート:
  • プール充填>80/90/95%、 'EIO'の成長、スナップショットの遅れ、ヒット率の低下、頻繁にoplock-break。

プロダクトパターン(iGaming/fintech)

静的(アイコン/プレビュー/プロバイダディレクトリ):rsync→CDN;元のソースをバージョン管理されたオブジェクトに保存します。
ログと「raw」イベント:ローカルに書き込み(XFS/ext4)→バッチアンロード(rclone→S3/MinIO)。
レポートとPII:暗号化と厳格なACLを備えたSMB;定期的なオフサイトエクスポート(ZFS send/recv)と受信側のWORM。
開発環境とキャプチャのアーティファクト:共有のためのNFS/SMB;重いベースの場合-ボリューム+スナップショットをブロックします。
コンテンツコラボレーション:バージョン管理とクォータによる同期/Nextcloud。

実装チェックリスト

  • 定義されたデータクラス(hot/cold/PII)、 RPO/RTOおよびSLO。
  • 選択したファイルシステム:正しいオプション(noatime、 barrier、 recordsize)でext4/XFS/ZFSします。
  • NAS:暗号化/署名されたNFSv4/SMB、 ACL、 Kerberos/AD。
  • スナップショット/バージョン管理/ごみ箱-リカバリによって構成および検証。
  • タスクの打撲ツール:rsync(一方通行)、Unison/Syncthing (bi-dir)、 rclone (cloud)、 ZFS send/recv (backup/DR)。
  • FS/ネットワーク/オペレーション、バーンレートSLO、 ENOSPC/EIO/oplockアラートの監視。
  • ドキュメンテーション:Runbookの競合、fsyncルール、命名/パス長/エンコーディングポリシー。
  • テスト:プロファイル(小/大ファイル)、カットスクリプト(切断、競合の編集)をロードします。

よくあるエラー

共有クリティカルトランザクションネットボール(OLTP)ローカルブロックボリュームの代わりに。
障害時のアプリケーション→データ損失の障害/fsyncを無効にしました。
バージョニングなしで双方向の同期と1回の時間→「食べた」変更。
ホットプールでのオンライン「破棄」→レイテンシのテール。
1つのディレクトリ内の何百万もの小さなファイル→壊滅的なリスト/バックアップ。
明示的なマッピングなしでSMBとNFS間の権利/所有者を混在させます。

ミニプレイブック

ワンウェイパブリッシングビルド→エッジサーバ

1.'/srv/builds'(ローカルファイルシステム)でのアセンブリ。2) 'rsync -az --delete'エッジ。3) CDN障害。

Bi-dir Analyst作業フォルダ

1.Syncthing/Unison、 "versioning N days'、競合-両方のバージョンを保存します。2)ユーザーごとのクォータ。3)定期的なオフサイトバックアップ。

レポートカタログDR (WORM)

1.スケジュールのZFSスナップショット。2) Object Lock/WORMを使用して隔離されたホストに'send/recv'を送信します。3)毎月の回復テスト。

[結果]

信頼できるファイルサブシステムは、正しいファイルシステム+正しいロギング/バリアモード+理解可能なブロッキングモデルであり、効果的な同期は正しいトポロジ(一方通行/双方向)、バージョン管理および実績のあるツールです。ランブックでソリューションをキャプチャし、スナップショット/レプリケーションを自動化し、SLOを測定し、障害シナリオをテストします。このようにして、データはそのままになり、ピーク時でも運用プロセスが予測可能になります。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

Telegram
@Gamble_GC
統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。