Alibaba Cloud NASを使ってみる #1 NFS編

この記事は Alibaba Cloud の日本サイト の環境(ドキュメントやアカウント、そのアカウントでの検証結果)に基づいて記載しています。 日本サイトと国際サイトでは各プロダクトごとに提供機能が一部異なることがあります(そのほとんどは国際サイトの方が日本サイトよりも多機能になっている)。記事の内容は適宜最新化する予定です。

NASをNFSサーバとして構成し、Linuxサーバでマウントしてみます。 NFSサーバの利用シーンとしては以下でしょうか。

  • 複数のWebフロントエンドで設定ファイル、静的コンテンツの共有
  • Linuxサーバのバックアップ先としての利用
  • 複数のLinuxサーバで/homeの共有利用

最初に結論

  • NFSかSMBか1つのNASインスタンスでは1つの機能しか提供できない
  • 従量課金はSSDを選ぶ必要がある
  • NFS共有名は”/”が固定
  • NFS V4 の細かい設定はコンソール画面では見当たらない
  • 東京リージョンではZone AとZone BにNASインスタンスを作成できる

NASインスタンスの購入

”ファイルシステムの作成”をクリックします。

リージョンを日本に、ストレージタイプを”容量型”を選びます。この画面で見てわかる通り、プロトコルタイプはNFSかSMBのどちらか1つしか選べません。 つまり、NFSとSMBの両方を利用したい場合は2つのインスタンスが必要です。 

また、東京リージョンではゾーンAとゾーンBの両方に対応します。しかし、SLBやRDSのようなマルチゾーンの冗長化は未対応のようです。ゾーン障害が必要な場合、NASに依存しないシステム構成が必要となります。

警告画面が出ました。 ”従量課金の容量型ファイルシステムの作成は現在サポートしていません”とのことで、従量課金では利用できず、ストレージパッケージの購入が必須のようです。 やり直すこととします。

ストレージタイプに”SSDパフォーマンス型”を選択します。

マウントポイントの追加

リージョンに日本を選択すると作成したNASインスタンスが表示されます。 ”マウントポイントの追加”を行います。


VPCなどを選択し、マウントポイントを追加します。 一般的なNFSサーバにあるNFS共有名の指定はありません。

マウントポイント数が”1”に増えました。 ”管理”から内容を詳しく見てみましょう。

マウントアドレスが表示されています。NFSクライアント側ではこれが接続先となるので控えておきましょう。 次に、権限グループの設定を確認します。

”権限付与アドレス”で接続元のホストやネットワークを指定し、”読み取り/書き込み権限”でアクセス権を指定します。この辺は通常のNFSサーバと変わりませんね。 ユーザー権限ではroot_squashも選べます。

ここで、NFS共有名が不明なことに気づきました。 結論、マウントポイントの画面で”マウントアドレス”にカーソルをあてることで確認することが出来ました。

しかし、NFS共有名は”/”固定のようです。

Linuxからマウント

CentOS互換のAliyun Linuxからマウントしてみます。

[root@sun ~]# mount -t nfs -o vers=3,nolock,proto=tcp,noresvport 25bb0e48f87-abw52.ap-northeast-1.nas.aliyuncs.com:/ /mnt
mount: wrong fs type, bad option, bad superblock on 25bb0e48f87-abw52.ap-northeast-1.nas.aliyuncs.com:/,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount. helper program)
In some cases useful info is found in syslog - try dmesg | tail or so.

mountコマンドで指定(-t)したnfsが未対応とのこと。 nfs-utilsをインストールします。

[root@sun ~]# yum install nfs-utils
省略

Installed:
nfs-utils.x86_64 1:1.3.0-0.33.4.al7
Dependency Installed:
gssproxy.x86_64 0:0.4.1-13.4.al7
keyutils.x86_64 0:1.5.8-3.1.al7
libbasicobjects.x86_64 0:0.1.1-27.4.al7
libcollection.x86_64 0:0.6.2-27.4.al7
libevent.x86_64 0:2.0.21-4.1.al7
libini_config.x86_64 0:1.3.0-27.4.al7
libnfsidmap.x86_64 0:0.25-15.4.al7
libpath_utils.x86_64 0:0.2.1-27.4.al7
libref_array.x86_64 0:0.1.5-27.4.al7
libtalloc.x86_64 0:2.1.6-1.4.al7
libtevent.x86_64 0:0.9.28-1.4.al7
libverto-tevent.x86_64 0:0.2.5-4.1.al7
Complete!

もう一度マウントします。 mountコマンドは正常終了したので、dfコマンド確認します。” 25bb0e48f87-abw52.ap-northeast-1.nas.aliyuncs.com:/ 1099511627776 0 1099511627776 0% /mnt ”として確認できました。

[root@sun ~]# mount -t nfs -o vers=3,nolock,proto=tcp,noresvport 25bb0e48f87-abw52.ap-northeast-1.nas.aliyuncs.com:/ /mnt
[root@sun ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 238708 0 238708 0% /dev
tmpfs 250028 0 250028 0% /dev/shm
tmpfs 250028 512 249516 1% /run
tmpfs 250028 0 250028 0% /sys/fs/cgroup
/dev/vda1 41151808 2716768 36321608 7% /
tmpfs 50008 0 50008 0% /run/user/0
25bb0e48f87-abw52.ap-northeast-1.nas.aliyuncs.com:/ 1099511627776 0 1099511627776 0% /mnt

一応、mountコマンドでも確認します。普通はdfよりmountコマンドで確認する気もします。 rsizeやwsizeはパフォーマンステストとチューニングで最適値の見極めが必要かもしれません(性能が求めらるシステムでは常に実施していました)。

[root@sun mnt]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=238708k,nr_inodes=59677,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
/dev/vda1 on / type ext4 (rw,relatime,data=ordered)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=30,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
tracefs on /sys/kernel/debug/tracing type tracefs (rw,relatime)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=50008k,mode=700)
25bb0e48f87-abw52.ap-northeast-1.nas.aliyuncs.com:/ on /mnt type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=172.24.133.34,mountvers=3,mountport=4002,mountproto=tcp,local_lock=all,addr=172.24.133.34)

以上