今更ですが、Azure 上のLinuxVMにデータディスクを追加し、マウントする手順をまとめておきます。
ほとんどLinux側での操作となりますが、Azureの公式ドキュメントとして紹介されている手順に沿う形で記載します。
まず、Azure のLinuxVMに新規データディスクを追加する公式手順は以下です。
ポータルを利用し、データ ディスクを Linux VM に接続する
基本的には、これを順番に実行すれば問題ありません。ネット上のいろいろなページを参照することにより、かえってまごついてしまったので、MSドキュメントに沿う形で、こちらのFAQにまとめておこうと思い記載しました。
なお、ここでは新規データディスクを丸ごと一つのパーティションとして扱います。あまり込み入ったことはしていません。
1.データディスク追加
Azure ポータル上から、該当VM > ディスク をクリックし、データディスクカテゴリの
「新しいディスクを作成し接続する」をクリックします。
適宜追加するディスクの情報を入力し、「適用」をクリックします。ここでは、64GBのStandard HDDを指定しています。
以上で、Azure上の操作は完了です。
2.データディスク確認
Azure上でディスクを追加したら、Linux VMからその情報を確認します。以下をコマンドします。
lsblk -p
実行例:
上記実行例で、
/dev/sdc にポータルから追加した64GBのディスクが表示されていることが確認できます。
この/dev/sdX の部分は、データディスクの数によって異なるので、以降、適宜読み替えてください。
最初のデータディスクであれば、ほぼ、/dev/sdc だと思いますが、そうでない場合ももちろんあるので、適宜ご確認ください。
3.ディスクのパーティションテーブルを設定し、パーティションを作成
以下コマンドで、パーティションを作成します。
parted /dev/sdc –script mklabel gpt mkpart datadisk01 xfs 0% 100%
実行例:
Azureの公式ドキュメントだと、
という部分です。「parted」コマンドを利用しています。このあたり、fdiskコマンドでも可能ですが、2TBを超えるディスクのマウント管理ができない、MS公式サイトでpartedコマンドが使われているのでこちらを紹介しています。partedコマンドに複数オプションが付与されていますが、ざっくり説明すると以下のとおりです。
/dev/sdc・・・ 対象とするディスクです。環境によって適宜変更してください。
–script・・・ 対話モードは使用しない(上記コマンド1行だけで完結させるために必要なオプション)
mklabel gpt・・・GPT 形式を指定する
mkpart datadisk01・・・「datadisk01」部分は任意の名前でよい(※)
xfs・・・ファイルシステムタイプにはxfsを指定
0% 100%・・・ディスクに対してどこまでパーティションを作成するかを指定しています。今回、新規ディスク1本丸ごと指定するので「0% 100%」です。
※ mkpart datadisk01 の部分は、「mklabel gpt」を指定している場合、パーティションの PARTLABEL 属性 を表すものとなるようです。この部分は、”primary”や”logical”という値でなくても、コマンドはとおります。
参考:同じ疑問を持った方の質問
Why does `parted` accept “xfspart” argument as valid `part-type`?
4.作成したパーティションを指定のファイルシステムでフォーマット
公式ドキュメントどおりすすめていきます。xfsでフォーマットします。
mkfs.xfs /dev/sdc1
sdc1 とコマンドしているのは、1つめのパーティション、ということです。
実行例
OSにパーティションの更新情報を認識させます。
partprobe /dev/sdc1
実行例
5.ディスクのマウント
マウントする為のフォルダを作成します。/ 直下に datastore01というフォルダを作成しました。
mkdir /datastore01
そのフォルダに新規設定した/dev/sdc1 をマウントします。
mount /dev/sdc1 /datastore01
ここまでくれば、この後、
lsblk -p
をコマンドすれば、sdc1が/datastore01 にマウントされているのが確認できます。
これでマウント自体は完了ですが、このままでは、OS再起動した際に、自動でマウントされないのでご注意ください。公式ドキュメントにも/etc/fstabを修正するように記載があるのでそれに従っていきます。
6.VM再起動後にも自動マウントされるようfstab修正
以下コマンドで新規ディスクのUUIDを確認します。
lsblk -f
実行例
上記実行例の結果から、datastore01にマウントされているディスクのUUIDは、
a9f2740f-d78f-4253-ad57-29f1d45d31b2
だと確認できます。このUUIDを/etc/fstabに記載していきます。
fstabは誤って編集するとOS自体が起動しなくなるため、慎重に作業をお願いします。
まず、バックアップを取得します。
cp -p /etc/fstab /etc/fstab.bak
※万が一起動しなくなったら、Azureポータルのコンソール接続などで、上記バックアップファイルから切り戻すとよいでしょう。
viで編集します。
vi /etc/fstab
以下赤字部分を追記
# /etc/fstab
# Created by anaconda on Wed Nov 18 22:19:57 2020
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk/’.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run ‘systemctl daemon-reload’ to update systemd
# units generated from this file.
#
UUID=a0e841e1-c145-4536-bfcd-738c05c77bba / xfs defaults 0 0
UUID=17909981-50b9-46d5-abe5-32236a7d8281 /boot xfs defaults 0 0
UUID=E09A-EA15 /boot/efi vfat defaults,uid=0,gid=0,umask=077,shortname=winnt 0 2
UUID=a9f2740f-d78f-4253-ad57-29f1d45d31b2 /datastore01 xfs defaults,nofail 1 2
UUID= という部分で、今回追加したディスクのUUIDを指定します。
その後で、マウントポイント(/datastore01)、ファイルシステムタイプ(xfs)を指定していきます。
「defaults,nofail 1 2」という部分は、MSのサンプルコマンドどおりの指定ですが、環境によって適宜調整するのがよいと思います。(fstabのオプションについては適宜お調べください。)
なお、「nofail」は、エラーが発生しても起動できるようにするオプションで、fstabの記載不備などによりマウントに失敗した際でも該当ディスクを除いて起動してくれるものです。こちらは付与しておいた方が無難だと思います。
Azure上のLinux VMにデータディスクを追加する手順は以上です。