はじめに
こんにちは、サイオステクノロジー 小林です。
今回は Linuxクライアントを使用したLucidLinkのストレージサービスのお話しです。
前回の記事(Windowsクライアント編)でLucidLinkサービスのアカウント登録方法とファイル共有領域(Filespace)の作成方法をご紹介しておりますので、こちらの内容は割愛させて頂きます。
もし、作成されていない場合は併せてお読み頂ければと思います。
前提
※今回LucidLinkを使う上で事前に準備したものは以下になります。
- オブジェクトストレージは前回のWindowsクライアントと同様でAWS S3を準備。バケットは「s3.siostechnology.net」という名称で作成
- Linuxクライアント端末は、Azure上にCPU:2core/RAM:4GBの仮想マシンを準備し、OSに「CentOS7 update6」を導入
- ファイル共有領域(Filespace)は、前回のWindowsクライアント編で作成したFilespace(test-space)を使用
Linuxクライアントのインストール
LucidLinkのダウンロードページより、Linux版のクライアントをダウンロードし、対象のクライアント端末にインストールします。
# rpm -ihv lucid-1.17.1901-1.el7.x86_64.rpm
ファイル共有領域にマウント
以下のコマンドより、作成したFliespaceにマウントします。LucidLinkデーモンをバックグラウンドで起動するようにします。
# lucid daemon & sleep 5; lucid link --fs test-space.sios --password <rootpassword> --mount-point /share
起動時に以下のようなログが表示されるので、エラーなく最後に「Activated filespace ‘
[1] 55985 YYYY-MM-DDT05:17:45.853Z | I | | Screen log initialized. YYYY-MM-DDT05:17:45.853Z | I | Application | Press ctrl-c to exit... YYYY-MM-DDT05:17:45.854Z | I | Daemon | Config directory set to /root/.lucid/ YYYY-MM-DDT05:17:45.855Z | I | Config | Configuration loaded from /root/.lucid/Lucid.json YYYY-MM-DDT05:17:45.856Z | N | Daemon | 'root' log level set to: info (6) YYYY-MM-DDT05:17:45.856Z | I | | ================================================================================ YYYY-MM-DDT05:17:45.856Z | I | | === === YYYY-MM-DDT05:17:45.856Z | I | | === Process started === YYYY-MM-DDT05:17:45.856Z | I | | === === YYYY-MM-DDT05:17:45.856Z | I | | ================================================================================ YYYY-MM-DDT05:17:45.856Z | I | | PID: 55985, version: 1.17, Build 1901 YYYY-MM-DDT05:17:45.856Z | I | | File log initialized to /root/.lucid/Lucid.log YYYY-MM-DDT05:17:45.856Z | I | Daemon | Operating system: Linux 3.10.0-957.el7.x86_64 YYYY-MM-DDT05:17:45.856Z | I | Daemon | Architecture: x86_64 YYYY-MM-DDT05:17:45.856Z | I | Daemon | Node name: dev-misc9901-b YYYY-MM-DDT05:17:45.856Z | I | Daemon | Process ID: 55985 YYYY-MM-DDT05:17:45.856Z | I | Daemon | Current directory: /root/ YYYY-MM-DDT05:17:45.856Z | I | Daemon | Config directory: /root/.lucid/ YYYY-MM-DDT05:17:45.856Z | I | Daemon | Log level: info YYYY-MM-DDT05:17:45.856Z | I | Daemon | Version: 1.17, Build 1901 YYYY-MM-DDT05:17:45.857Z | I | RestfulService | RESTful service started. URLs: YYYY-MM-DDT05:17:45.857Z | I | RestfulService | https://127.0.0.1:7778 YYYY-MM-DDT05:17:50.873Z | N | Daemon | Deactivated filespace test-space.sios YYYY-MM-DDT05:17:50.873Z | I | Daemon | Root directory set to /root/.lucid/ YYYY-MM-DDT05:17:50.873Z | I | Daemon | Activating filespace test-space.sios YYYY-MM-DDT05:17:50.873Z | I | Daemon | Root path: /root/.lucid/ YYYY-MM-DDT05:17:50.874Z | I | Daemon | Rendezvous address set to: actor.tcp://discovery.lucidlink.com:443/RendezvousService YYYY-MM-DDT05:17:52.487Z | I | ServerInfoDiscoverer | Server name: 0e3401f8e0bc YYYY-MM-DDT05:17:52.487Z | I | ServerInfoDiscoverer | Server UUID: f573c73c-042e-4aba-9ac3-fb3fd31d4068 YYYY-MM-DDT05:17:52.487Z | I | ServerInfoDiscoverer | Server index: 0 YYYY-MM-DDT05:17:52.488Z | I | ServerInfoDiscoverer | Server version: 1.17.1891 YYYY-MM-DDT05:17:52.488Z | I | ServerInfoDiscoverer | Server data endpoints: YYYY-MM-DDT05:17:52.488Z | I | ServerInfoDiscoverer | 172.19.0.5:443 YYYY-MM-DDT05:17:52.488Z | I | ServerInfoDiscoverer | 52.196.68.123:443 YYYY-MM-DDT05:17:52.488Z | I | ServerInfoDiscoverer | Server REST endpoints: YYYY-MM-DDT05:17:52.488Z | I | ServerInfoDiscoverer | 0.0.0.0:7777 YYYY-MM-DDT05:17:52.491Z | I | FileSystemClient | Starting file metadata service... YYYY-MM-DDT05:17:52.491Z | I | ClientNode | Node name: dev-misc9901-b YYYY-MM-DDT05:17:52.491Z | I | ClientNode | Node UUID: e5cd230c-ec4f-4235-8433-4a88cbea0ec6 YYYY-MM-DDT05:17:52.491Z | I | ClientNode | Node index: 3 YYYY-MM-DDT05:17:52.491Z | I | ClientNode | Node version: 1.17.1901 YYYY-MM-DDT05:17:52.492Z | I | ClientNode | Node data endpoints: YYYY-MM-DDT05:17:52.492Z | I | | Stored sync time is: {0:6189, 1:73865, 3:8} YYYY-MM-DDT05:17:52.492Z | I | | New sync time is: {0:6189, 1:73865, 3:8} YYYY-MM-DDT05:17:52.492Z | I | | Starting up with sync time: {0:6189, 1:73865, 3:8} (initial ingestion: false) YYYY-MM-DDT05:17:52.598Z | I | FileSystemClient | Filespace version: 3 YYYY-MM-DDT05:17:52.598Z | I | FileSystemClient | File metadata service started... YYYY-MM-DDT05:17:52.598Z | I | FileSystemClient | Starting filespace... YYYY-MM-DDT05:17:52.600Z | I | FileSystemClient | Running with FileSizeLimit=512TiB YYYY-MM-DDT05:17:52.607Z | N | UserSessionActor | User root logged in, filespace mode: full encryption). YYYY-MM-DDT05:17:52.608Z | I | ObjectStoreBuilder | Building S3 object store actor with parameters: protocol == https; region == ap-northeast-1... YYYY-MM-DDT05:17:52.610Z | I | FileSystemClient | Using bucket with name: s3.siostechnology.net YYYY-MM-DDT05:17:52.613Z | I | CacheStore | Cache store instance initialized with: YYYY-MM-DDT05:17:52.613Z | I | CacheStore | File path: "/root/.lucid/f573c73c-042e-4aba-9ac3-fb3fd31d4068/cache/store" YYYY-MM-DDT05:17:52.613Z | I | CacheStore | Page size: 257KiB YYYY-MM-DDT05:17:52.613Z | I | CacheStore | Page count: 20400 YYYY-MM-DDT05:17:52.613Z | I | CacheStore | Capacity: 5242800KiB YYYY-MM-DDT05:17:52.615Z | I | Cache | Cache size set to 5GiB YYYY-MM-DDT05:17:52.616Z | I | CacheStore | Cache file opened. YYYY-MM-DDT05:17:52.617Z | I | Cache | Enabling cache backend writes. updateDelay=2000ms, rescheduleDelay = 500ms YYYY-MM-DDT05:17:52.617Z | N | Block Cache | Cache enabled. YYYY-MM-DDT05:17:52.617Z | N | PrefetcherManager | Prefetcher disabled. YYYY-MM-DDT05:17:52.617Z | N | PrefetcherManager | Prefetcher enabled. YYYY-MM-DDT05:17:52.620Z | I | File System | Filespace running in full encryption mode YYYY-MM-DDT05:17:52.620Z | I | FileSystemClient | filespace started. YYYY-MM-DDT05:17:52.636Z | W | FuseShim | Installed Fuse version is different than expected! Expected: 2.9.3, installed: 2.9.2 fusermount: failed to unmount /share: No such file or directory YYYY-MM-DDT05:17:52.644Z | I | fuse | Mounting the filespace to /share Linked to filespace test-space.sios. YYYY-MM-DDT05:17:53.646Z | N | fuse | Filespace mounted on /share YYYY-MM-DDT05:17:53.647Z | N | Daemon | Activated filespace 'test-space.sios' with username 'root'
マウント確認
問題なくデーモンが起動できれば、以下のようにマウントされ、Lucidプロセスが起動していることが確認できます。
# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/mapper/vg00-LogVol01 50G 4.1G 46G 9% / ~ 中略 ~ Lucid.bin 1.0P 0 1.0P 0% /share
# ps -ef | grep Lucid | grep -v grep root 55985 2684 0 14:17 pts/0 00:00:20 /opt/lucidapp/resources/Lucid.bin daemon
【補足】アンマウントを実施すると、起動したLucidプロセスも同時に停止されます。
[root@dev-misc9901-b QAS ~]# umount /share YYYY-MM-DDT06:09:32.109Z | I | fuse | Fuse exited successfully. YYYY-MM-DDT06:09:32.109Z | I | Application | Termination request received. YYYY-MM-DDT06:09:32.109Z | I | Daemon | Stopping daemon... YYYY-MM-DDT06:09:32.110Z | I | FileSystemClient | Stopping filespace. YYYY-MM-DDT06:09:32.110Z | N | Heartbeat | Heartbeat stopped explicitly. YYYY-MM-DDT06:09:32.110Z | W | Heartbeat | Heartbeat lost. YYYY-MM-DDT06:09:32.144Z | I | Cache | Disabling cache backend writes. Waiting for 0 active writes... YYYY-MM-DDT06:09:32.186Z | I | BlockStore Prefetcher | Awaiting the completion of 0 fetch IOs YYYY-MM-DDT06:09:32.198Z | I | CacheStore | Cache file closed. YYYY-MM-DDT06:09:32.198Z | W | Block Cache | Cache disabled. YYYY-MM-DDT06:09:32.209Z | I | | Incoming IOs stopped. YYYY-MM-DDT06:09:32.209Z | I | | Waiting ongoing operations to complete... YYYY-MM-DDT06:09:32.209Z | I | | Ongoing operations completed. YYYY-MM-DDT06:09:32.335Z | I | FileSystemClient | Filespace stopped. YYYY-MM-DDT06:09:32.335Z | I | FileSystemClient | Stopping file metadata service. YYYY-MM-DDT06:09:32.389Z | I | FileSystemClient | File metadata service stopped. YYYY-MM-DDT06:09:32.507Z | N | Daemon | Deactivated filespace test-space.sios YYYY-MM-DDT06:09:32.697Z | I | RestfulService | RESTful service stopped. YYYY-MM-DDT06:09:32.698Z | I | Daemon | Daemon stopped. YYYY-MM-DDT06:09:32.699Z | I | | ================================================================================ YYYY-MM-DDT06:09:32.699Z | I | | === === YYYY-MM-DDT06:09:32.700Z | I | | === Process stopped === YYYY-MM-DDT06:09:32.700Z | I | | === === YYYY-MM-DDT06:09:32.700Z | I | | ================================================================================ [1]+ 終了 lucid daemon
検証:ファイルコピー時のS3側の挙動
Windowsクライアントと同様にテストファイルをストレージ上に配置して、S3側の挙動を確認したいと思います。
今回は100Mのテストファイルを作成します。
# cd /share # dd if=/dev/zero of=testfile bs=10M count=10 # ls -lh -rw-r--r-- 1 root root 100M 7月 8 15:27 testfile
次にS3側の状態を確認します。チャンクファイルが分割して生成されいるのが確認できます。
※クライアントにAWS CLIをインストールして確認しておりますので、AWSのインストールページを参考にインストールしてください。
# aws s3 ls s3://s3.siostechnology.net --recursive --human-readable --summarize 2019-07-08 14:59:21 3.7 KiB f70e1af3-049f-4867-ab2b-9566c0806e0c ~ 中略 ~ 2019-07-08 14:59:21 3.6 KiB fa970fdd-25b1-48b0-a128-b2d92049a3e0 2019-07-08 14:59:21 5.6 KiB fafe73b8-6507-4be4-a67c-3a513ecbb788 2019-07-08 14:59:21 3.2 KiB fcd336bf-3a72-4432-b31f-40371caa483f 2019-07-08 14:59:21 4.0 KiB fd3d07b2-de27-4412-8077-1f3b6c5a61be 2019-07-08 14:59:21 3.4 KiB fdcb0cfd-5270-40e9-90d9-9d4f2e69ed54 2019-07-08 14:59:21 5.2 KiB fdd6ac5e-c06b-47ec-a566-5338e34fd687 2019-07-08 14:59:21 5.3 KiB fdf867a1-a067-4a85-baba-e335ce560f9d 2019-07-08 14:59:21 6.0 KiB ffc0b834-348b-4636-8b37-e4750a1d737f Total Objects: 400 Total Size: 1.6 MiB
最後にテストファイルを削除します。
♯ rm -rf /share/testfile
チャンクファイルが削除されることが確認できます。
# aws s3 ls s3://s3.siostechnology.net --recursive --human-readable --summarize Total Objects: 0 Total Size: 0 Bytes
最後に
今回は、Linuxクライアントを使用したLucidLinkのマウントやファイル操作をご紹介させて頂きました。
Linuxクライアントでも外部ストレージとほぼ同じ感覚で使うことができ、さらにLucidLinkはマウントした領域をNFS共有させることも可能なので、NFSストレージとして使用することも可能です。
次回の記事で最終回になりますが、もう少し実践的な使い方を紹介するべく、ユーザアクセス制御等の機能について検証したいと思います。