GlusterFSを活用したDockerクラスターの分散ストレージ実装
Dockerのようなコンテナ技術は、クラウドコンピューティング分野で重要な役割を果たしており、仮想化技術の代替として注目されています。企業向けのコンテナアプリケーションでは、データの永続化と複数のコンテナ間でのデータ共有が求められます。データの永続化およびコンテナ間のデータ共有のために、Dockerはボリュームという概念を導入しました。単一マシン環境におけるボリュームでは、Dockerクラスターに必要な要件を満たすことはできません。そのため、分散ファイルシステムが必要となります。現在、オープンソースの分散ファイルシステムにはGFS、Ceph、HDFS、FastDFS、GlusterFSなどがあります。GlusterFSは設置が簡単で拡張性が高く、高可用性を持つため、分散ストレージ分野で広く利用されています。本記事では、GlusterFSを用いてDockerクラスターに信頼性のある分散ストレージを提供する方法について紹介します。
GlusterFS分散ファイルシステム概要
GlusterFS概要
GlusterFS(Gluster File System)は、Z RESEARCH社によって開発されたオープンソースの分散ファイルシステムです。Glusterのスケーラブルなストレージソリューションの中心であり、非常に強力な横向き拡張能力を持っています。拡張により、数PBのストレージ容量と数千クライアントを処理できます。GlusterFSはTCP/IPまたはInfiniBand RDMAネットワークを通じて物理的に分散されているストレージリソースを統合し、単一のグローバル名前空間を使用してデータを管理します。GlusterFSはユーザー空間のスタック可能な設計に基づいており、さまざまな種類のデータワークロードに対して優れたパフォーマンスを提供します。
GlusterFSの全体的な構造と構成要素は図1に示されています。これは主にストレージサーバー(Brick Server)、クライアント、およびNFS/Sambaストレージゲートウェイから構成されています。GlusterFSの構造においてメタデータサーバーがないという点が最大の設計特徴であり、この点はシステムの性能、信頼性、安定性に決定的な影響を与えます。
- GlusterFSはTCP/IPおよびInfiniBand RDMA高速ネットワークをサポートしています。
- クライアントはネイティブなGlusterFSプロトコルでデータにアクセスできます。GlusterFSクライアントが動作していない端末は、NFS/CIFS標準プロトコルを通じてストレージゲートウェイ経由でアクセスできます(ストレージゲートウェイはエラスティックボリューム管理とアクセス代理機能を提供します)。
- ストレージサーバーは基本的なデータストレージ機能を提供します。クライアントはメタデータサーバーがない問題を補完し、多くの機能を担います。これはデータボリューム管理、I/Oスケジューリング、ファイル位置指定、データキャッシュなどの機能を含み、FUSE(File system in User Space)モジュールを介してGlusterFSをローカルファイルシステムにマウントし、POSIX互換の方法でシステムデータにアクセスします。
図1. GlusterFS全体構造
図1に示されるように、GlusterFSには多くの用語があり、これらの用語を理解することがGlusterFSの動作原理を理解するために重要です。表1にGlusterFSでよく使われる用語とその説明を示します。
表1. GlusterFSでよく使われる用語
| 名称 | 説明 |
|---|---|
| Brick | 最も基本的なストレージユニットで、信頼できるストレージプール内の出力ディレクトリを表し、クライアントがマウントするために使用されます。 |
| Volume | 1つのボリュームです。論理的にはN個のbricksから構成されます。 |
| FUSE | Unix-like OS上の動的ロード可能なモジュールで、カーネルを変更することなく独自のファイルシステムを作成できます。 |
| Glusterd | Gluster管理デーモンで、信頼できるストレージプール内のすべてのサーバーで実行する必要があります。 |
| POSIX | 1つの標準で、GlusterFSはこれをサポートしています。 |
GlusterFSボリュームタイプ
高性能や高可用性を求めるさまざまなアプリケーションに対応するために、GlusterFSは7種類のボリュームをサポートしています。それは、distributeボリューム、stripeボリューム、replicaボリューム、distribute stripeボリューム、distribute replicaボリューム、stripe replicaボリューム、distribute stripe replicaボリュームです。これらは基本的に3つの基本ボリュームと4つの複合ボリュームに分類でき、それぞれが固有の特徴と適用場面を持っています。
基本ボリューム:
(1) distribute volume 分散ボリューム
ハッシュアルゴリズムに基づいてファイルをすべてのbrickサーバーに分布させ、ただ磁気ディスクスペースを拡大するだけで、耐障害性は持たない。distribute volumeはローカルファイルシステムを使用しているため、アクセス効率は向上せず、ネットワーク通信のため効率が低下します。また、ローカルストレージデバイスの容量には制限があるため、超大型ファイルのサポートには一定の困難があります。図2はdistribute volumeの図です。
図2. Distribute volumeの図
(2) stripe volume パーティションボリューム
RAID0に似ており、ファイルをデータブロックに分割し、Round Robin方式でbrickサーバーに配置します。並列処理の粒度はデータブロックで、超大ファイルの読み書き性能が高く、ファイルの読み書き速度が速いです。図3はstripe volumeの図です。
図3. Stripe volumeの図
(3) replica volume 冗長ボリューム
ファイルを複数のbrickに同期的にコピーし、ファイルレベルのRAID1になります。耐障害性を持ち、書き込み性能は低下しますが、読み取り性能は向上します。ReplicatedモードはAFR(Auto File Replication)とも呼ばれ、RAID1に相当します。つまり、同じファイルは複数のミラー保存ノードに複製され、各replicatedサブノードは同じディレクトリ構造とファイルを持ち、replica volumeはコンテナストレージにおいても推奨されています。図4はreplica volumeの図です。
図4 . Replica volumeの図
複合ボリューム:
(4) distribute stripe volume 分散パーティションボリューム
brickサーバーの数はパーティション数の倍数でなければなりません。distributeとstripeボリュームの特徴を兼ね備えています。分散型のパーティションボリュームでは、volume内のbrickを含むストレージサーバーの数はstripeの倍数(>=2倍)でなければなりません。分散型とパーティション型の機能を兼ね備えています。各ファイルは4台の共有サーバーに分散されており、通常は大ファイルのアクセス処理に使用されます。少なくとも4台のサーバーが必要で、分散パーティションボリュームを構築できます。図5はdistribute stripe volumeの図です。
図5 . Distribute stripe volumeの図
(5) distribute replica volume 分散冗長ボリューム
brickサーバーの数はミラー数の倍数でなければなりません。distributeとreplicaボリュームの特徴を兼ね備えています。2つ以上のノード間でデータを複製できます。分散型の冗長ボリュームでは、volume内のbrickを含むストレージサーバーの数はreplicaの倍数(>=2倍)でなければなりません。分散型と冗長型の機能を兼ね備えています。図6はdistribute replica volumeの図です。
図6 . Distribute replica volumeの図
(6) stripe replica volume パーティション冗長ボリューム
RAID 10に似ており、パーティションボリュームと冗長ボリュームの特徴を兼ね備えています。図7はdistribute replica volumeの図です。
図7 . Stripe replica volumeの図
(7) distribute stripe replica volume:分散パーティション冗長ボリューム
3つの基本ボリュームの複合ボリュームで、一般的にはMap Reduceアプリケーションに使用されます。図8はdistribute stripe replica volumeの図です。
図8 . Distribute stripe replica volumeの図
GlusterFSの一般的なコマンド
GlusterFSクライアントは、ノードやボリュームを操作するための豊富なコマンドを提供しています。表2に代表的なコマンドを示します。コンテナとの連携において、ボリュームの作成や削除、ボリュームのクォータの設定などの機能が必要であり、後ほどこれらの機能はREST API化され、HTTPリクエストによってボリュームを操作できるようになります。
表2. GlusterFSクライアントの一般的なコマンド
| コマンド | 機能 |
|---|---|
| gluster peer probe | ノードを追加 |
| gluster peer detach | ノードを削除 |
| gluster volume create | ボリュームを生成 |
| gluster volume start | ボリュームを開始 |
| gluster volume stop | ボリュームを停止 |
| gluster volume delete | ボリュームを削除 |
| gluster volume quota enable | ボリュームクォータを有効化 |
| gluster volume quota disable | ボリュームクォータを無効化 |
| gluster volume quota limit-usage | ボリュームクォータを設定 |
#################################################################################################33
glusterfs
GlusterFSは拡張可能なネットワークファイルシステムであり、一般的なハードウェアを使用して、大規模な分散ストレージのメディア配信ソリューション、データ分析、その他データ関連のタスクを作成できます。GlusterFSは自由でオープンソースのソフトウェアです。
詳細については公式サイトを参照してください: gluster
リソース定義
- Brick: ストレージの基本的な単位で、サーバー上の信頼できるストレージプールのエクスポートディレクトリを表します
- Volume: bricksの論理的な集合体
- Cluster: 一群のコンピュータで構成されるクラスター
- Distributed File System: 複数のクライアントがネットワークを介して同時にアクセスできるファイルシステム
- GFID: GlusterFs内の各ファイルまたはディレクトリに128ビットの数字識別子が割り当てられ、GFIDと呼ばれます
- glusterd: 信頼できるストレージプールを提供するすべてのサーバーで動作する管理デーモン
- Namespace: 一意の識別子を保存する抽象的なコンテナまたは環境として作成される名前空間
- Quorum: 信頼できるストレージプール内で失敗することができるホストノードの最大数を設定します
- Quota: 目録またはボリュームを介してディスクスペースの使用制限を設定できます
- Posix: 可移植性オペレーティングシステムインターフェースはIEEEが定義した一連のAPI標準です
- Vol File: VolファイルはGlusterfsプロセスが使用する設定ファイルです
- Distributed: 分散ボリューム
- Replicated: レプリカボリューム
- Distributed Replicated: 分散レプリカボリューム
- Geo-Replication: ローカルエリアネットワーク、ワイドエリアネットワーク、インターネットを通じて、サイト間の継続的な非同期かつ増分的な複製サービスを提供します
- Metedata: メタデータとは、データに関するデータの記述情報であり、GlusterFsでは専用のメタデータストレージコンテンツを持ちません
- Extended Attributes: 拡張属性はファイルシステムの特徴です FUSE: ユーザー空間のファイルシステムはUnix系オペレーティングシステム用のロード可能なカーネルモジュールで、非特権ユーザーがカーネルコードなしで独自のファイルシステムを作成できます。ユーザー空間でファイルシステムコードを実行することを実現します
環境基礎
10.1.1.11 c6-vm1 centos6.6 glusterfs-3.10 第二のハードディスク10G
10.1.1.12 c6-vm2 centos6.6 glusterfs-3.10 第二のハードディスク10G
10.1.1.13 c6-vm3 centos6.6 client
yum リポジトリインストール
[root@c6-vm1 yum.repos.d]# cat glusterfs.repo
[glusterfs]
name=glusterfs
baseurl=http://buildlogs.centos.org/centos/6/storage/x86_64/gluster-3.10/
enabled=1
gpgcheck=0
[debuginfo]
name=glusterfs debuginfo
baseurl=http://debuginfo.centos.org/centos/6/storage/x86_64/
enabled=1
gpgcheck=0
install
yum install -y glusterfs-server glusterfs-cli glusterfs-geo-replication
開機時に起動を追加
[root@c6-vm1]# /etc/init.d/glusterd start
[root@c6-vm1 ~]# chkconfig glusterd on
ストレージマシンを信頼できるストレージプールに追加
# 他のマシンで自分以外のマシンを追加すればよい
[root@c6-vm1]# gluster peer probe c6-vm2
peer probe: success.
状態を確認
[root@c6-vm1 ~]# gluster peer status
Number of Peers: 1
Hostname: c6-vm2
Uuid: 60eac2bb-ae30-4c3d-8c14-b93a3cb0ad98
State: Peer in Cluster (Connected)
ディスクのパーティション
fdisk -l を実行してディスクブロックデバイスを確認し、/dev/sdb が第二の新しいハードディスクであることを確認します
[root@c6-vm1 ~]# fdisk -l
Disk /dev/sda: 37.6 GB, 37580963840 bytes
255 heads, 63 sectors/track, 4568 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000f1817
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 26 3851 30720000 83 Linux
/dev/sda3 3851 4569 5774336 82 Linux swap / Solaris
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
注:mkfsはサポートするパーティションタイプが限定されており、最大で16TBまでしかサポートしていません。4TBを超えるパーティションの場合、fdiskは使用できないため、partedを使用することをお勧めします
# fdiskによるパーティション操作は2台のマシンで実行
# fdisk /dev/vdb => n => p => 1 => Enter => w(wは保存、mはヘルプ)
[root@c6-vm1 ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xf2a1a3ec.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305):
Using default value 1305
[root@c6-vm1 ~]# mkfs.ext4 /dev/sdb1
# 2台のマシンでそれぞれ実行し、マウント用のディスクブロックデバイスのディレクトリを作成し、fstabに追加
[root@c6-vm1 ~]# mkdir /data/gfs1
[root@c6-vm1 ~]# mount /dev/sdb1 /data/gfs1
[root@c6-vm1 ~]# mount -a
[root@c6-vm1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 29G 874M 27G 4% /
tmpfs 358M 0 358M 0% /dev/shm
/dev/sda1 190M 25M 156M 14% /boot
/dev/sdb1 9.8G 23M 9.2G 1% /data/gfs1
[root@c6-vm1 ~]# echo "/dev/sdb1 /data/gfs1 ext4 defaults 1 2" >> /etc/fstab
会社がRAIDカードを持っている場合は、下位レイヤーでRAID5を構築してIO性能を向上させ、上位にGlusterFSを構築することができます。もちろん、RAIDカードがなくてもGlusterFSを構築しても問題ありません
volumeの作成
Distributed:分散ボリューム、ファイルはhashアルゴリズムによってbricksで構成されるボリュームにランダムに配置されます。
Replicated:レプリケートボリューム、RAID1に似ており、replica数はvolumeに含まれるbricksのストレージサーバーの数と同じでなければなりません。高い可用性を持っています。
Striped:ストライピングボリューム、RAID0に似ており、stripe数はvolumeに含まれるbricksのストレージサーバーの数と同じでなければなりません。ファイルはデータブロックに分割され、round robin方式でbricksに配置され、並列処理の粒度はデータブロックであり、大ファイルの性能が良いです。
Distributed Striped:分散ストライピングボリューム、volumeに含まれるストレージサーバーの数はstripeの倍数でなければなりません(>=2倍)、分散とストライピングの機能を兼ね備えています。
Distributed Replicated:分散レプリケートボリューム、volumeに含まれるストレージサーバーの数はreplicaの倍数でなければなりません(>=2倍)、分散とレプリケートの機能を兼ね備えています。
レプリケートボリュームの作成
[root@c6-vm1 ~]# gluster volume create gv2 replica 2 c6-vm1:/data/gfs1 c6-vm2:/data/gfs1 force
volume create: gv2: success: please start the volume to access data
[root@c6-vm1 ~]# gluster volume info
Volume Name: gv2
Type: Replicate
Volume ID: fa64409f-814b-4191-b9e4-8c317bf63a94
Status: Created #ここでは状態が作成されたがまだ起動していないことを示す
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: c6-vm1:/data/gfs1
Brick2: c6-vm2:/data/gfs1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
volumeを起動
[root@c6-vm1 gfs1]# gluster volume start gv2
volume start: gv2: success
[root@c6-vm1 gfs1]# gluster volume info
Volume Name: gv2
Type: Replicate
Volume ID: fa64409f-814b-4191-b9e4-8c317bf63a94
Status: Started #起動後に状態がstartになる
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: c6-vm1:/data/gfs1
Brick2: c6-vm2:/data/gfs1
Options Reconfigured:
transport.address-family: inet
nfs.disable: off
クライアントのマウント
c6-vm3
yum glusterfs
yum install -y glusterfs gluster-fuse
glusterfs方式でマウント
[root@c6-vm3 yum.repos.d]# mount -t glusterfs c6-vm1:/gv2 /mnt
[root@c6-vm3 mnt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 29G 923M 27G 4% /
tmpfs 358M 0 358M 0% /dev/shm
/dev/sda1 190M 25M 156M 14% /boot
c6-vm1:/gv2 9.8G 23M 9.2G 1% /mnt
nfs方式でマウント
[root@c6-vm2 gfs1]# mount -t nfs -o mountproto=tcp,vers=3 c6-vm2:gv2 /mnt/
[root@c6-vm2 gfs1]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 29G 875M 27G 4% /
tmpfs 358M 0 358M 0% /dev/shm
/dev/sda1 190M 25M 156M 14% /boot
/dev/sdb1 9.8G 23M 9.2G 1% /data/gfs1
c6-vm2:gv2 9.8G 33M 14G 1% /mnt
# ファイルを作成
[root@c6-vm3 mnt]# cd /mnt/
[root@c6-vm3 mnt]# touch file{1..10}
ストレージ側で確認
c6-vm1
[root@c6-vm1 gfs1]# ls
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 lost+found
c6-vm2
[root@c6-vm2 gfs1]# ls
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 lost+found
status
[root@c6-vm1 gfs1]# gluster volume status gv2
Status of volume: gv2
Gluster process TCP Port RDMA Port Online Pid
------------------------------------------------------------------------------
Brick c6-vm1:/data/gfs1 49152 0 Y 1976
Brick c6-vm2:/data/gfs1 49152 0 Y 1883
NFS Server on localhost 2049 0 Y 1996
Self-heal Daemon on localhost N/A N/A Y 2007
NFS Server on c6-vm2 2049 0 Y 1903
Self-heal Daemon on c6-vm2 N/A N/A Y 1914
Task Status of Volume gv2
------------------------------------------------------------------------------
There are no active volume task
故障テスト
c6-vm1をシャットダウン
私たちがc6-vm3(クライアント)でマウントするときにc6-vm1マシンを指定したため、c6-vm1をシャットダウンすると、その後の状況はどうなるかを見てみましょう。
-w935
volume状態を確認
-w808
c6-vm3で操作を行っても問題ありません
注意: c6-vm1をシャットダウンしたとき、ls該当ディレクトリでは一時的に遅延やフリーズが発生する可能性があります
-w1006
c6-vm2でファイル状態を確認
新たに作成されたbdsはすでに存在しており、削除されたfile0は削除できていません
-w1051
今度はc6-vm1を再起動してみます
ファイルシステムがエラーを報告し、このマシンが壊れてしまいました。修復しましょう
-w804
ファイルシステムが読み取り専用になっており、編集できません
-w855
解決策として再マウント
# ルートファイルシステムを再マウントする救命のコマンド
mount -o remount rw /
image
以下の画像を見ると、問題があった行をコメントアウトし、rebootしました
image
c6-vm1にログイン
[root@c6-vm1 gfs1]# mount /dev/sdb1 /data/gfs1/
[root@c6-vm1 gfs1]# gluster volume status
Status of volume: gv2
Gluster process TCP Port RDMA Port Online Pid
------------------------------------------------------------------------------
Brick c6-vm1:/data/gfs1 N/A N/A N N/A
Brick c6-vm2:/data/gfs1 49152 0 Y 1883
NFS Server on localhost 2049 0 Y 1082
Self-heal Daemon on localhost N/A N/A Y 1146
NFS Server on c6-vm2 2049 0 Y 1903
Self-heal Daemon on c6-vm2 N/A N/A Y 1914
Task Status of Volume gv2
------------------------------------------------------------------------------
There are no active volume tasks
正常なノードc6-vm2で情報を確認
[root@c6-vm2 gfs1]# getfattr -d -m '.*' /data/gfs1/
getfattr: Removing leading '/' from absolute path names
# file: data/gfs1/
trusted.afr.dirty=0sAAAAAAAAAAAAAAAA
trusted.afr.gv2-client-0=0sAAAAAAAAAAAAAAAD
trusted.gfid=0sAAAAAAAAAAAAAAAAAAAAAQ==
trusted.glusterfs.dht=0sAAAAAQAAAAAAAAAA/////w==
trusted.glusterfs.volume-id=0s+mRAn4FLQZG55Iwxe/Y6lA==
シャットダウンしたc6-vm1ノードでsetを書き込む
[root@c6-vm1 gfs1]# setfattr -n trusted.glusterfs.volume-id -v 0s+mRAn4FLQZG55Iwxe/Y6lA== /data/gfs1/
[root@c6-vm1 gfs1]# setfattr -n trusted.glusterfs.volume-id -v 0s+mRAn4FLQZG55Iwxe/Y6lA== /data/gfs1/
[root@c6-vm1 gfs1]# setfattr -n trusted.gfid -v 0sAAAAAAAAAAAAAAAAAAAAAQ== /data/gfs1/
[root@c6-vm1 gfs1]# setfattr -n trusted.afr.dirty -v 0sAAAAAAAAAAAAAAAA /data/gfs1/
[root@c6-vm1 gfs1]# setfattr -n trusted.glusterfs.dht -v 0sAAAAAQAAAAAAAAAA/////w== /data/gfs1/
glusterfsを再起動
[root@c6-vm1 gfs1]# /etc/init.d/glusterd restart
Stopping glusterd: [確定]
Starting glusterd: [確定]
再起動が完了した後、データのサイズに応じて少し待つと同期が完了します。以下のディレクトリの変化を確認してください
[root@c6-vm1 gfs1]# ll
総量 32
-rw-r--r-- 2 root root 5 10月 9 23:08 a
-rw-r--r-- 2 root root 29 10月 9 19:53 a.txt
-rw-r--r-- 2 root root 0 10月 2 13:29 ba
-rw-r--r-- 2 root root 0 10月 2 12:54 file1
-rw-r--r-- 2 root root 0 10月 2 12:54 file10
-rw-r--r-- 2 root root 5 10月 9 19:14 file2
-rw-r--r-- 2 root root 0 10月 2 12:54 file3
-rw-r--r-- 2 root root 0 10月 2 12:54 file4
-rw-r--r-- 2 root root 0 10月 2 12:54 file5
-rw-r--r-- 2 root root 0 10月 2 12:54 file6
-rw-r--r-- 2 root root 0 10月 2 12:54 file7
-rw-r--r-- 2 root root 0 10月 2 12:54 file8
-rw-r--r-- 2 root root 0 10月 2 12:54 file9
drwx------ 2 root root 16384 10月 9 03:12 lost+found
このディレクトリにはいくつかの同期情報が保存されています
[root@c6-vm1 gfs1]# cd .glusterfs/
[root@c6-vm1 .glusterfs]# ls
00 1c 31 3e 3f 46 4c 56 64 82 89 a3 c7 changelogs eb gfs1.db health_check indices landfill quanrantine unlink
[root@c6-vm1 .glusterfs]# ll
総量 100
drwx------ 3 root root 4096 10月 9 23:06 00
drwx------ 3 root root 4096 10月 9 23:08 1c
drwx------ 3 root root 4096 10月 9 23:08 31
drwx------ 3 root root 4096 10月 9 23:08 3e
drwx------ 3 root root 4096 10月 9 23:08 3f
drwx------ 3 root root 4096 10月 9 23:08 46
drwx------ 3 root root 4096 10月 9 23:08 4c
drwx------ 3 root root 4096 10月 9 23:07 56
drwx------ 3 root root 4096 10月 9 23:08 64
drwx------ 3 root root 4096 10月 9 23:08 82
drwx------ 3 root root 4096 10月 9 23:08 89
drwx------ 3 root root 4096 10月 9 23:08 a3
drwx------ 4 root root 4096 10月 9 23:08 c7
drw------- 4 root root 4096 10月 9 22:30 changelogs
drwx------ 3 root root 4096 10月 9 23:08 eb
-rw-r--r-- 1 root root 20480 10月 9 22:30 gfs1.db
-rw-r--r-- 1 root root 19 10月 9 23:17 health_check
drw------- 5 root root 4096 10月 9 22:30 indices
drwxr-xr-x 2 root root 4096 10月 9 23:06 landfill
drw------- 2 root root 4096 10月 9 22:30 quanrantine
drw------- 2 root root 4096 10月 9 23:06 unlink
同期後のディレクトリは、正常なノードc6-vm2のディレクトリと一致しています
[root@c6-vm1 .glusterfs]# cd ..
[root@c6-vm1 gfs1]# ls
bds file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 lost+found
[root@c6-vm1 gfs1]# ll
総量 24
-rw-r--r-- 2 root root 8 10月 9 23:21 bds
-rw-r--r-- 2 root root 0 10月 2 12:54 file1
-rw-r--r-- 2 root root 0 10月 2 12:54 file10
-rw-r--r-- 2 root root 5 10月 9 19:14 file2
-rw-r--r-- 2 root root 0 10月 2 12:54 file3
-rw-r--r-- 2 root root 0 10月 2 12:54 file4
-rw-r--r-- 2 root root 0 10月 2 12:54 file5
-rw-r--r-- 2 root root 0 10月 2 12:54 file6
-rw-r--r-- 2 root root 0 10月 2 12:54 file7
-rw-r--r-- 2 root root 0 10月 2 12:54 file8
-rw-r--r-- 2 root root 0 10月 2 12:54 file9
drwx------ 2 root root 16384 10月 9 03:12 lost+found