LoginSignup
2
1

More than 5 years have passed since last update.

Microsoft Azure 仮想マシンで追加ドライブの認識

Posted at

はじめに

 研究室の計算機リソースは何かとあらゆるサービスが稼働しているため,簡易に実験環境を構築するのであればクラウドコンピューティングサービス (以下,CCS)の仮想マシン(以下,VM)を利用する流れになっている.今回は Microsoft Azure の仮想マシンを利用してみることにした.
 どの CCS においても VM を作成するとストレージがある程度準備されているように見えるが,基本的に一時的なストレージ (Temporary Storage) となっている.文字通り,永続的にデータを格納しておくことができず,課金が生じない停止状態(以下,非課金シャットダウン)にすると同時にデータが失われる.私もこれを把握しておらず 1 度だけ転送したデータが消去されたことがある...データを保持しながら非課金シャットダウンを行うためには,ストレージを追加する必要がある.その追加方法について簡単であるが忘備録として残しておく.

VM 前提条件

VM 情報
OS Ubuntsu 18.04(バージョンは基本的に関係ない)
VM ボリューム D64s_v3(関係ないが,一応載せておく)
追加ストレージ 2048 GiB(追加ボリュームは Azure ポータルサイトで追加しておく)

ストレージ追加の作業内容

では,ストレージの追加作業について述べていく.

 まず,ポータルサイトでディスクを追加すると次の画像のように,OS ディスクだけではなくデータディスク項目にエントリがある状態にしておく必要がある.
Microsoft Azure 仮想マシンで追加ドライブの認識-1.jpg
 次に,仮想マシンに接続し,ディスクの空き状況を確認する.下記のようにコマンドを実行すると,VM の初期状態は以下のようなディスク状況になっているはずである.

~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            126G     0  126G   0% /dev
tmpfs            26G  936K   26G   1% /run
/dev/sda1        29G  1.3G   28G   5% /
tmpfs           126G     0  126G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           126G     0  126G   0% /sys/fs/cgroup
/dev/sda15      105M  3.6M  101M   4% /boot/efi
/dev/sdb1       503G   73M  478G   1% /mnt
tmpfs            26G     0   26G   0% /run/user/1000

見ての通り,接続はされているが認識されていないため,自分で認識させる必要がある.そのため,dmsg コマンドにより,接続されている Small Computer System Interface (SCSI) ディスクを探し出すため,以下のコマンドを実行する.

~$ dmesg | grep SCSI
[    0.608591] SCSI subsystem initialized
[    1.440296] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244)
[    3.817171] sd 1:0:1:0: [sdb] Attached SCSI disk
[    3.843656] sd 0:0:0:0: [sda] Attached SCSI disk
[    4.023173] sd 3:0:0:0: [sdc] Attached SCSI disk
[    8.647579] Loading iSCSI transport class v2.0-870.

/dev/sd{a,b,c} が検出されていることが分かり,df コマンドでは sdc のディスクが認識されていないことが分かった.したがって,/dev/sdc のディスクを fdisk コマンドによりパーティション分割する.

~$ sudo fdisk /dev/sdc
Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.The size of this disk is 2 TiB (2199023255552 bytes). DOS partition table format cannot be used on drives for volumes larger than 2199023255040 bytes for 512-byte sectors. Use GUID partition table format (GPT).

Created a new DOS disklabel with disk identifier 0xf7a72ba7.

Command (m for help): 

このような出力が得られ,コマンドを要求されるため,新しいパーティションを追加するために n を入力する.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): 

次に,プライマリパーティションとして設定するためにタイプ p を設定する.このとき,拡張パーティションとして設定したいのであれば,ここタイプ e を入力する必要がある.デフォルトではタイプ p が設定されているため,入力せず次に進んでも問題はない.

Select (default p): 

Using default response p.

ここからは,引数を入力後の出力はないため,パーティション番号,セクタ開始位置,セクタ終了位置を続けてそれぞれ指定していく必要がある.今回はデータディスク全体を利用したいため,パーティションは一つで最大限利用できるように設定する.その場合は,デフォルト値がそのような設定になっているため,各質問ではエンターを入力するだけで問題ない.ここでいくつかに分けたいのであれば,各自で調整する必要がある.

Partition number (1-4, default 1): 
First sector (2048-4294967295, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-4294967294, default 4294967294): 

Created a new partition 1 of type 'Linux' and of size 2 TiB.

最終的に,新しく 2TiB のパーティションが作成されたメッセージが得られるはずである.パーティションテーブルを出力できる p コマンドで確認してみる.

Command (m for help): p
Disk /dev/sdc: 2 TiB, 2199023255552 bytes, 4294967296 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xf7a72ba7

Device     Boot Start        End    Sectors Size Id Type
/dev/sdc1        2048 4294967294 4294965247   2T 83 Linux

最終行でうまく作成されていることが確認できれば,最後に w コマンドを実行し,fdisk コマンドを終了する.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

次に,パーティションを作成しただけであるため,そのパーティションにファイルシステムを書き込む必要がある.この作業は mkfs コマンドにより行い,このコマンドの引数としてファイルシステムの種類とパーティションを指定する必要がある.したがって,下記のようなコマンドを実行する.

~$ sudo mkfs -t ext4 /dev/sdc1
mke2fs 1.44.1 (24-Mar-2018)
Discarding device blocks: done                            
Creating filesystem with 536870655 4k blocks and 134217728 inodes
Filesystem UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848, 512000000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done 

このようなメッセージが得られれば,ファイルシステムの書き込みが完了している.※ Filesystem UUID: の値はコピーしておくとあとの作業で便利

ここまで完了すれば作業は大詰めで,残すところデータディスクのマウント,起動時の自動マウントの設定のみである.データディスクをマウントするためには,マウントポイントを指定する作成する必要があるため,ここでは /datadrive という名前のディレクトリを作成し,このディレクトリに作成した /dev/sdc1 パーティションをマウントする.

~$ sudo mkdir /datadrive
~$ sudo mount /dev/sdc1 /datadrive

以上で,マウントが完了したため,df コマンドでディスク情報が出力されるようになる.

~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            126G     0  126G   0% /dev
tmpfs            26G  940K   26G   1% /run
/dev/sda1        29G  1.3G   28G   5% /
tmpfs           126G     0  126G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           126G     0  126G   0% /sys/fs/cgroup
/dev/sda15      105M  3.6M  101M   4% /boot/efi
/dev/sdb1       503G   73M  478G   1% /mnt
tmpfs            26G     0   26G   0% /run/user/1000
/dev/sdc1       2.0T   81M  1.9T   1% /datadrive1

 最後に,起動時の自動マウントを設定する.設定にはそのドライブの Universally Unique Identifier(以下,UUID)が必要になる.ここまでの作業で得た UUID をコピーしている場合はそれを利用すればよいが,知りたい場合は blkid コマンドを実行する.

~$ sudo -i blkid
/dev/sda1: LABEL="cloudimg-rootfs" UUID="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz" ...
/dev/sda15: LABEL="UEFI" UUID="wwww-wwww" TYPE="vfat" ...
/dev/sdb1: UUID="yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" TYPE="ext4" ...
/dev/sdc1: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="ext4" ...
/dev/sda14: PARTUUID="vvvvvvvv-vvvv-vvvv-vvvv-vvvvvvvvvvvv"

こうして得た UUID を持つドライブに対するマウント設定を /etc/fstab ファイルに追加する必要がある.

~$ sudo vim /etc/fstab
:
:
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx   /datadrive   ext4   defaults,nofail   1   2

この nofail オプションを付けることで /etc/fstab の編集にミスが有ったとしても,VM が起動されるようになるため必ず追加しておく必要がある.

 以上で,データディスク追加作業は終了であるため,VM を再起動後に,自動マウントの確認のためdf コマンドでディスク情報を表示させる.

~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            126G     0  126G   0% /dev
tmpfs            26G  936K   26G   1% /run
/dev/sda1        29G  1.3G   28G   5% /
tmpfs           126G     0  126G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           126G     0  126G   0% /sys/fs/cgroup
/dev/sda15      105M  3.6M  101M   4% /boot/efi
/dev/sdc1       2.0T   81M  1.9T   1% /datadrive1
/dev/sdb1       503G   73M  478G   1% /mnt
tmpfs            26G     0   26G   0% /run/user/1000

以上のように,再起動後に自動でマウントされるように設定ができた.

おわりに

 この記事での作業は,基本的に Microsoft Azureハウツーガイドに記載されているため新しい情報は無いが,必要な作業をピックアップして Tips 的な内容は省略してすぐ読めるようにしている.そのため,より詳細な情報が必要な場合はハウツーガイドを一読するべきである.

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1