第5章 ボリュームへのアクセス
この章では、Oracle LinuxまたはMicrosoft Windowsクライアント・システムからGlusterボリュームにアクセスするために使用できるオプションについて説明します。
ボリュームへのアクセスは、NFS、Samba、およびボリュームへのアクセスを提供するFile System in Userspace (FUSE)ソフトウェア・インタフェースを使用するGlusterネイティブ・クライアントなど、様々なネットワーク・ファイル・システム・テクノロジを介して提供されます。
ボリュームをいずれかのノードにローカルにマウントする必要がある場合は、リモート・ホストからマウントする場合とまったく同様に、追加マウントとして扱う必要があります。
各ノードのファイル・システムでボリューム内のデータを直接編集すると、すぐにスプリット・ブレイン・シナリオと潜在的なファイル・システムの破損が発生する可能性があります。
5.1 iSCSIを使用したボリュームへのアクセス
この項では、ボリュームをiSCSIバックストアとして設定し、gluster-block
およびtcmu-runner
パッケージを使用してブロック・ストレージを提供する方法について説明します。ボリュームのファイルは、ブロック・ストレージ(iSCSI LUN)としてエクスポートされます。ストレージ・イニシエータがLUNにログインし、ブロック・デバイスにアクセスします。
gluster-block
パッケージには、ボリュームへのiSCSIアクセスを作成および管理するためのCLIが含まれています。tcmu-runner
パッケージは、iSCSIプロトコルを使用してボリュームへのアクセスを処理します。
5.1.1 iSCSIサービスのインストール
この項では、iSCSIアクセスを有効にするための信頼できるストレージ・プールの設定について説明します。
信頼できるストレージ・プール内の各ノードで、次の手順を実行します。
-
tcmu-runner
およびgluster-block
パッケージをインストールします。sudo yum install tcmu-runner gluster-block
-
tcmu-runner
およびgluster-blockd
サービスを起動して有効にします。sudo systemctl enable --now tcmu-runner gluster-blockd
5.1.2 ブロック・デバイスの作成
この項では、既存のボリュームでのブロック・デバイスの作成について説明します。ブロック・デバイスの作成および管理の詳細は、アップストリームのドキュメントを参照してください。gluster-blockコマンドの使用に関するヘルプを表示するには、gluster-block helpと入力します。
信頼できるストレージ・プール内の1つのノードで、次の手順を実行します。
-
gluster-block createコマンドを使用してブロック・デバイスを作成します。この例では、
myvolume
という名前のボリュームに対してmyvolume-block
という名前のブロック・デバイスを作成します。信頼できるストレージ・プールの3つのノードによって、ボリュームへの高可用性接続が確立されます。sudo gluster-block create myvolume/myvolume-block ha 3 prealloc no 192.168.1.51,192.168.1.52,192.168.1.53 20GiB IQN: iqn.2016-12.org.gluster-block:4a015741-f455-4568-a0ee-b333b595ba4f PORTAL(S): 10.147.25.88:3260 10.147.25.89:3260 10.147.25.90:3260 RESULT: SUCCESS
-
ボリュームのブロック・デバイスのリストを取得するには、gluster-block listコマンドを使用します。
sudo gluster-block list myvolume myvolume-block
-
ブロック・デバイスに関する情報は、gluster-block infoコマンドを使用して取得できます。
sudo gluster-block info myvolume/myvolume-block NAME: myvolume-block VOLUME: myvolume GBID: 4a015741-f455-4568-a0ee-b333b595ba4f SIZE: 20.0 GiB HA: 3 PASSWORD: EXPORTED ON: 192.168.1.51 192.168.1.52 192.168.1.53
-
iSCSIターゲットのリストを取得するには、targetcli lsコマンドを使用します。
sudo targetcli ls ... o- iscsi .................................................................... [Targets: 1] | o- iqn.2016-12.org.gluster-block:4a015741-f455-4568-a0ee-b333b595ba4f ........ [TPGs: 3] | o- tpg1 .......................................................... [gen-acls, no-auth] | | o- acls .................................................................. [ACLs: 0] | | o- luns .................................................................. [LUNs: 1] | | | o- lun0 ................................. [user/myvolume-block (glfs_tg_pt_gp_ao)] | | o- portals ............................................................ [Portals: 1] | | o- 192.168.1.51:3260 ........................................................ [OK] ...
5.1.3 iSCSIブロック・デバイスへのアクセス
この項では、iSCSIブロック・デバイスへのアクセスについて説明します。
クライアント・ノードで、次の手順を実行します。
-
ブロック・ストレージへのアクセスに必要なパッケージをインストールします。
sudo yum install iscsi-initiator-utils device-mapper-multipath
-
iscsid
サービスを有効にします。sudo systemctl enable iscsid
-
ブロック・デバイスをホストするように設定されている信頼できるストレージ・プールのいずれかのノードでiSCSIターゲットを検出してログインします。たとえば:
sudo iscsiadm -m discovery -t st -p 192.168.1.51 -l
-
iSCSIセッションのリストを表示するには、iscsiadm -m sessionコマンドを使用します。
sudo iscsiadm -m session tcp: [1] 192.168.1.51:3260,1 iqn.2016-12.org.gluster-block:4a015741... (non-flash) tcp: [2] 192.168.1.52:3260,2 iqn.2016-12.org.gluster-block:4a015741... (non-flash) tcp: [3] 192.168.1.53:3260,3 iqn.2016-12.org.gluster-block:4a015741... (non-flash)
-
(オプション)マルチパスを設定します。
-
マルチパス・モジュールをロードして有効にします。
sudo modprobe dm_multipath sudo mpathconf --enable
-
multipathd
サービスを再起動して有効にします。sudo systemctl restart multipathd sudo systemctl enable multipathd
-
-
追加された新しいiSCSIデバイスを表示するには、lsblkコマンドを使用します。
sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdd 8:48 0 20G 0 disk └─mpatha 252:2 0 20G 0 mpath sdb 8:16 0 10G 0 disk sde 8:64 0 20G 0 disk └─mpatha 252:2 0 20G 0 mpath sdc 8:32 0 20G 0 disk └─mpatha 252:2 0 20G 0 mpath sda 8:0 0 36.5G 0 disk ├─sda2 8:2 0 36G 0 part │ ├─vg_main-lv_swap 252:1 0 4G 0 lvm [SWAP] │ └─vg_main-lv_root 252:0 0 32G 0 lvm / └─sda1 8:1 0 500M 0 part /boot
Glusterブロック・ストレージ用に新しいディスクが追加されます。この場合、ディスクは
sdd
、sde
およびsdc
です。 -
デバイスにXFSファイル・システムを作成します。
sudo mkfs.xfs /dev/mapper/mpatha
-
ブロック・デバイスをマウントします。この例では、Glusterブロック・ストレージは
/mnt
にマウントされています。sudo mount /dev/mapper/mpatha /mnt/
5.2 NFSを使用したボリュームへのアクセス
NFS-Ganeshaを使用してボリュームを公開できます。NFS-Ganeshaは、NFSプロトコルのユーザー空間ファイル・サーバーです。これにより、すべてのNFSクライアントからのアクセスを許可する、FUSE互換のFile System Abstraction Layer (FSAL)が提供されます。
NFSアクセスを有効にする信頼できるストレージ・プールの各ノードで、次のステップを実行します。
-
Gluster NFS-Ganeshaクライアント・パッケージをインストールします。
sudo yum install nfs-ganesha-gluster
-
/etc/ganesha/exports
ディレクトリにエクスポート構成ファイルを作成します。このファイルには、NFS GaneshaのNFSエクスポート情報が含まれています。この例では、ファイル名export.myvolume.conf
を使用して、myvolume
という名前のボリュームを、ノードの/myvolume
にあるNFS共有にエクスポートします。EXPORT{ Export_Id = 1 ; # Export ID unique to each export Path = "/
myvolume
"; # Path of the volume to be exported. Eg: "/test_volume" FSAL { name = GLUSTER; hostname = "localhost"; # IP of one of the nodes in the trusted pool volume = "myvolume
"; # Volume name. Eg: "test_volume" } Access_type = RW; # Access permissions Squash = No_root_squash; # To enable/disable root squashing Disable_ACL = TRUE; # To enable/disable ACL Pseudo = "/myvolume
"; # NFSv4 pseudo path for this export. Eg: "/test_volume_pseudo" Protocols = "3","4" ; # NFS protocols supported Transports = "UDP","TCP" ; # Transport protocols supported SecType = "sys"; # Security flavors supported }次のように、
/etc/ganesha/ganesha.conf
ファイルを編集して、新しいエクスポート構成ファイルを含めます。... %include "/etc/ganesha/exports/
export.myvolume.conf
" -
nfs-ganesha
サービスを有効にして起動します。sudo systemctl enable --now nfs-ganesha
ノートNFSを使用してアクセスを設定した後でボリュームが作成された場合、
nfs-ganesha
サービスをリロードする必要があります。sudo systemctl reload-or-restart nfs-ganesha
-
ボリュームがエクスポートされていることを確認します。
sudo showmount -e localhost Export list for localhost: /myvolume (everyone)
-
NFSクライアントからボリュームに接続するには、次のようにNFS共有をマウントします。
sudo mkdir /
gluster-storage
sudo mountnode1:/myvolume
/gluster-storage
NFSクライアントのこの
/gluster-storage
ディレクトリに作成されたファイルはすべてボリュームに書き込まれます。
5.3 Glusterネイティブ・クライアント(FUSE)を使用したボリュームへのアクセス
Oracle LinuxホストのGlusterネイティブ・クライアントを使用して、ボリュームにアクセスできます。ネイティブ・クライアントは、カーネル・ドライバやモジュールを必要とせずにボリュームをマウントできる、File System in Userspace (FUSE)ソフトウェア・インタフェースを活用します。
次を実行します。
-
ボリュームをマウントするホストで、Gluster Storage for Oracle Linuxパッケージへのアクセスを有効にします。アクセスの有効化の詳細は、2.3項「Gluster Storage for Oracle Linuxパッケージへのアクセスの有効化」を参照してください。
-
Glusterネイティブ・クライアント・パッケージをインストールします。
Oracle Linux 8を実行している場合は、次のコマンドを入力します。
sudo dnf install @glusterfs/client
それ以外の場合は、次のように入力します。
sudo yum install glusterfs glusterfs-fuse
-
ボリュームをマウントするディレクトリを作成します。たとえば:
sudo mkdir /
gluster-storage
-
ボリュームに対してTLSを構成した場合は、クライアント・システムがボリュームをマウントできるように、追加のステップを実行する必要がある場合があります。詳細は、2.4.4項「トランスポート層セキュリティの設定」を参照してください。TLSのクライアント構成を完了するには、次のステップが必要です。
Glusterネイティブ・クライアント(FUSE)を使用してTLSを設定するには、次の手順を実行します。-
クライアント・システムで証明書と秘密鍵を設定します。CA署名証明書を使用するか、次のように自己署名証明書を作成できます。
sudo openssl req -newkey rsa:2048 -nodes -keyout /etc/ssl/glusterfs.key -x509 -days 365 -out /etc/ssl/glusterfs.pem
-
信頼できるサーバー・プールの各ノードの
/etc/ssl/glusterfs.ca
ファイルにクライアント証明書を追加します。同様に、クライアントに、各ノードの証明書に署名したCA証明書が含まれている、または各ノードの自己署名証明書がすべて含まれている/etc/ssl/glusterfs.ca
ファイルのコピーがあることを確認します。Glusterで相互認証が実行されるため、クライアントとサーバー・ノードの両方が互いの証明書を検証できることが不可欠です。 -
管理トラフィックで暗号化を有効にした場合、クライアント・システムでこの機能を有効にして、初期マウントを実行できるようにする必要があります。これを行うために、Glusterは
/var/lib/glusterfs/secure-access
でファイルを検索します。このディレクトリはクライアント・システムに存在しない可能性があるため、ファイルにアクセスする前に作成する必要がある場合があります。sudo mkdir -p /var/lib/glusterfs sudo touch /var/lib/glusterfs/secure-access
-
クライアント証明書を
/etc/ssl/glusterfs.ca
に追加する前に、ボリュームがすでに設定されて実行されている場合は、ボリュームを停止し、Glusterサービスを再起動して、新しい証明書を登録するためにボリュームを再度起動する必要があります。sudo gluster volume stop
myvolume
sudo systemctl restart glusterd sudo gluster volume startmyvolume
-
-
glusterfs
マウント・タイプを使用し、プール内のノードとともにボリューム名を指定して、ディレクトリにボリュームをマウントします。たとえば:sudo mount -t glusterfs
node1:myvolume
/gluster-storage
サブディレクトリのマウントを有効にするようにボリュームを設定した場合は、Glusterファイル・システムのパスにサブディレクトリ名を追加できます。
sudo mount -t glusterfs
node1:myvolume/subdirectory
/gluster-storage
-
新しいマウントに対する権限を確認して、適切なユーザーがストレージに対して読取りおよび書込みを実行できることを確認します。たとえば:
sudo chmod 777 /
gluster-storage
-
マウントを永続的にするには、
/etc/fstab
ファイルを編集してマウントを含めます。たとえば:node1:/myvolume
/gluster-storage
glusterfs defaults,_netdev 0 0ボリュームにサブディレクトリをマウントする場合は、Glusterファイル・システムのパスにサブディレクトリ名を追加します。たとえば:
node1:/myvolume/subdirectory
/gluster-storage
glusterfs defaults,_netdev 0 0
ボリュームのマウントで問題が発生した場合は、/var/log/glusterfs/
にあるクライアント・システムのログを確認して接続の問題のデバッグを試行できます。たとえば、TLSが正しく構成されておらず、サーバー・ノードがクライアントを検証できない場合、ログに次のようなエラーが表示されることがあります。
… error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca
5.4 Sambaを使用したボリュームへのアクセス
Sambaを使用すると、Common Internet File System (CIFS)またはServer Message Block (SMB)を使用してボリュームを公開できます。このファイル共有サービスは、通常、Microsoft Windowsシステムで使用されます。
Glusterは、Samba仮想ファイル・システム(VFS)モジュール・プラグインを使用して、ボリュームを自動的に事前構成してエクスポートするためのフックを提供します。これにより、共有をエクスポートするようにSambaを構成する複雑さが軽減し、さらにFUSEクライアントを使用してボリュームを事前にマウントする必要がなくなることも意味するため、パフォーマンスがある程度改善されます。フックはボリュームが起動されるたびにトリガーされるため、Gluster内でボリュームが起動された時点でSamba構成が更新されます。
Sambaの詳細は、Oracle® Linux 7: 管理者ガイドを参照してください。
5.4.1 Sambaアクセスのためのボリュームの設定
次の手順では、Sambaクライアントからボリュームにアクセスできるように、信頼できるストレージ・プール内のノードを設定します。このサービスを使用するには、samba
パッケージとsamba-vfs-glusterfs
パッケージの両方が、Sambaを使用してクライアントをボリュームに接続するプール内のいずれかのノードにインストールされるようにする必要があります。
Sambaアクセスを有効にする信頼できるストレージ・プールの各ノードで、次の手順を実行します。
-
Gluster用のSambaパッケージをインストールします。
sudo yum install samba samba-vfs-glusterfs
-
ファイアウォール・サービスを実行している場合は、ノードでSambaへのアクセスを有効にします。たとえば:
sudo firewall-cmd --permanent --add-service=samba sudo firewall-cmd --reload
-
Sambaサービスを有効にして起動します。
sudo systemctl enable --now smb
-
(オプション)認証システム(LDAPサーバーなど)が構成されていない場合は、Sambaユーザーを作成して、クライアントからSamba共有へのアクセスを有効にできます。このユーザーは、Samba共有をエクスポートするように設定されているすべてのノードで作成する必要があります。たとえば:
sudo adduser
myuser
sudo smbpasswd -amyuser
New SMB password: Retype new SMB password: Added user myuser.Sambaサービスを再起動します。
sudo systemctl restart smb
-
(オプション) Samba共有へのゲスト・アクセスを許可する場合(認証は不要)、Samba共有をエクスポートするように設定されている各ノードの
/etc/samba/smb.conf
ファイルの[global]
セクションに、map to guest = Bad User
を含む新しい行を追加します。たとえば:[global] workgroup = SAMBA security = user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw map to guest = Bad User
ゲスト・アクセスを許可するには、
[gluster-
セクションにvolume_name
]guest ok = yes
オプションが含まれている必要もあり、これは次のステップでGlusterフック・スクリプトによって自動的に設定されます。Sambaサービスを再起動します。
sudo systemctl restart smb
-
実行中のボリュームがある場合は、それを停止し、ボリュームでSMBまたはCIFSを有効にして、再度起動します。信頼できるストレージ・プール内の任意のノードで、次を実行します。
sudo gluster volume stop
myvolume
sudo gluster volume setmyvolume
user.smb
enable sudo gluster volume startmyvolume
ボリュームでSMBまたはCIFSオプションを設定する場合は、
user.smb
またはuser.cifs
のいずれかを使用して、必要なエクスポートのタイプを有効にできます。両方のオプションが有効な場合、user.smb
が優先されます。ボリュームを起動すると、Glusterフックがトリガーされてボリュームの構成エントリが各ノードの
/etc/samba/smb.conf
ファイルに自動的に追加され、そのボリュームにuser.smb
またはuser.cifs
オプションが設定されている場合は、Sambaサービスがリロードされます。このスクリプトでは、次のようなSamba構成エントリが生成されます。[gluster-
myvolume
] comment = For samba share of volumemyvolume
vfs objects = glusterfs glusterfs:volume =myvolume
glusterfs:logfile = /var/log/samba/glusterfs-myvolume
.%M.log glusterfs:loglevel = 7 path = / read only = no guest ok = yes kernel share modes = noノート[gluster-
エントリの値によって、接続文字列で、Samba共有に接続するために使用する名前が設定されます。myvolume
] -
(オプション) Glusterでボリュームに対して共有をエクスポートするようにSambaを自動的に構成しない場合は、この動作を制御するフック・スクリプトを削除するか、名前変更できます。Samba共有を無効にする各ノードで、次のようにフック・スクリプトの名前を変更します。
sudo rename S30 disabled-S30 $(find /var/lib/glusterd -type f -name S30samba*)
フックを再度有効にするには、次を実行します。
sudo rename disabled-S30 S30 $(find /var/lib/glusterd -type f -name *S30samba*)
5.4.2 ボリュームへのSMBアクセスのテスト
次の手順では、Samba共有をエクスポートするように設定されているボリュームへのSMBアクセスのテストについて説明します。Oracle LinuxホストからボリュームへのSMBアクセスをテストできます。このホストは、Glusterプールの一部である必要はありません。
-
Oracle Linuxホストで、Sambaクライアント・パッケージをインストールします。
sudo yum install samba-client
-
smbclientコマンドを使用して、Sambaを設定した信頼できるストレージ・プール内のノードのSamba共有をリストします。たとえば:
sudo smbclient -N -U% -L
node1
ボリュームのコンテンツを直接確認するには、次を実行します。
sudo smbclient -N -U%
//node1/gluster-myvolume
-c lsこのコマンドでは、ボリュームのSamba共有名を指定します。この名前は、Samba共有を設定するホストの
/etc/samba/smb.conf
ファイルで見つかります。通常、Samba共有名はgluster-
です。volume_name
5.4.3 ボリュームへのCIFSアクセスのテスト
次の手順では、Samba共有をエクスポートするように設定されているボリュームへのCIFSアクセスのテストについて説明します。Oracle LinuxホストからボリュームへのCIFSアクセスをテストできます。このホストは、Glusterプールの一部である必要はありません。
-
Oracle Linuxホストで、
cifs-utils
パッケージをインストールします。sudo yum install cifs-utils
-
ボリュームをマウントするマウント・ディレクトリを作成します。たとえば:
sudo mkdir /
gluster-storage
-
cifs
マウント・タイプを使用し、プール内のノードとともにボリュームのSamba共有名を指定して、ディレクトリにボリュームをマウントします。この名前は、Samba共有を設定するホストの/etc/samba/smb.conf
ファイルで見つかります。通常、Samba共有名はgluster-
です。たとえば:volume_name
sudo mount -t cifs -o guest //
node1
/gluster-myvolume
/gluster-storage
サブディレクトリのマウントを有効にするようにボリュームを設定した場合は、Glusterファイル・システムのパスにサブディレクトリ名を追加できます。
sudo mount -t cifs -o guest //
node1
/gluster-myvolume
/subdirectory
/gluster-storage
Samba共有に認証資格証明を渡す場合は、まずそれらをローカル・ファイルに追加します。この例では、資格証明はファイル
/credfile
に保存されます。username=
value
password=value
他のユーザーがアクセスできないように、資格証明ファイルの権限を設定します。
sudo chmod 600 /
credfile
その後、次のように、資格証明ファイルを使用してSamba共有に接続できます。
sudo mount -t cifs -o credentials=/
credfile
//node1
/gluster-myvolume
/gluster-storage
-
新しいマウントに対する権限を確認して、適切なユーザーがストレージに対して読取りおよび書込みを実行できることを確認します。たとえば:
sudo chmod 777 /
gluster-storage
5.4.4 Microsoft Windowsからのボリュームへのアクセス
Microsoft Windowsホストでは、Samba共有を使用してボリュームをマウントできます。デフォルトでは、Samba共有は、SAMBA
という名前のワークグループ(Samba共有ノードの/etc/samba/smb.conf
ファイルで定義)で使用できます。
次のように\\
という形式を使用して、Windowsエクスプローラを使用してネットワーク・ドライブをマッピングすることで、ボリュームをマップできます。 node
\volume
\\node1\gluster-myvolume
Windowsコマンドラインを使用して新しいドライブをマップすることもできます。コマンド・プロンプトを起動します。次のようにコマンドを入力します。
net usez
: \\node1
\gluster-myvolume