GlusterFSを用いたDockerクラスターの分散ストレージ構築

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

7月21日 02:00 投稿