9. Tips

下記の操作例はあくまで参考情報となりますので、利用者ご自身の責任でご確認ください。

9.1. 仮想マシンの仮想ディスク容量を追加する場合の手順

注:本操作の設定値に誤りがあった場合には仮想マシン上のデータが削除されてしまうおそれがありますので、利用者ご自身の責任で実施ください。

プロジェクト内で作成した仮想マシンについて、コントロール機能により仮想ディスク容量を追加した場合、
実際に追加分の仮想ディスク容量を使うためには、仮想マシン上での操作が必要となります。

ここではLVM(logical volume manager)の機能を利用した、仮想マシン上で追加した仮想ディスク容量を利用するための設定手順を説明します。

  1. fdisk:新しいパーティションを作成する

    • fdiskを対話モードで開く

    [root@localhost user]# fdisk /dev/sda
    
    • pを入力して、現在のパーティションテーブルを確認する

    Command (m for help): p
    Disk /dev/sda: 9.8 TiB, 10737418240000 bytes,    20971520000 sectors
    ...
    Device       Start      End  Sectors  Size Type
    /dev/sda1     2048  1230847  1228800  600M EFI System
    /dev/sda2  1230848  3327999  2097152    1G Linux    filesystem
    /dev/sda3  3328000 83884031 80556032 38.4G Linux LVM
    
    • nを入力して、新しいパーティションを作成する

    Command (m for help): n
    Partition number (4-128, default 4):
    First sector (83884032-20971519966, default 83884032):
    Last sector, +sectors or +size{K,M,G,T,P}    (83884032-20971519966, default 20971519966):
    
    Created a new partition 4 of type 'Linux filesystem'    and of size 9.7 TiB.
    
    • 再度pを入力して、作成したパーティションが追加されてい ることを確認する

    Command (m for help): p
    Disk /dev/sda: 9.8 TiB, 10737418240000 bytes,    20971520000 sectors
    ...
    Device        Start         End     Sectors  Size Type
    /dev/sda1      2048     1230847     1228800  600M EFI    System
    /dev/sda2   1230848     3327999     2097152    1G    Linux filesystem
    /dev/sda3   3328000    83884031    80556032 38.4G    Linux LVM
    /dev/sda4  83884032 20971519966 20887635935  9.7T    Linux filesystem
    
    • LVMパーティションのタイプを'Linux LVM'に指定するため、 lを入力して、パーティションのタイプ一覧を表示する

    Command (m for help): l
      1 EFI System                        C12A7328-F81F-11D2-BA4B-00A0C93EC93B
      2 MBR partition scheme              024DEE41-33E7-11D3-9D69-0008C781F39F
      ...
      31 Linux LVM                         E6D6D379-F507-44C2-A23C-238F2A3DF928
    
    • tを入力して、新しいパーティションのタイプを指定する

    Command (m for help): t
    Partition number (1-4, default 4):
    Partition type (type L to list all types): 31
    
    Changed type of partition 'Linux filesystem' to    'Linux LVM'.
    
    • wを入力して、設定を保存しfdiskの対話モードを終了する

    Command (m for help): w
    The partition table has been altered.
    Syncing disks.
    
  2. pvcreate:物理ボリュームを作成する

    • pvcreateコマンドで、物理ボリュームを作成する

    [root@localhost user]# pvcreate /dev/sda4
      Physical volume "/dev/sda4" successfully created.
    
    • pvdisplyコマンドで、物理ボリュームが追加されていることを確認する

    [root@localhost user]# pvdisplay
     ...
      "/dev/sda4" is a new physical volume of "<9.73 TiB"
      --- NEW Physical volume ---
      PV Name               /dev/sda4
      VG Name
      PV Size               <9.73 TiB
      Allocatable           NO
      PE Size               0
      Total PE              0
      Free PE               0
      Allocated PE          0
      PV UUID               YuRMxQ-sLTN-fgNl-M1nB-kzE3-VOX9-pGq
    
  3. vgextend:現在のボリュームグループに、作成した物理ボリュームを追加し拡張する

    • vgdisplayコマンドで、現在のボリュームグループを確認する

    [root@localhost user]# vgdisplay
      --- Volume group ---
      VG Name               cl
      ...
      Cur PV                1
      Act PV                1
      VG Size               38.41 GiB
      PE Size               4.00 MiB
      Total PE              9833
      Alloc PE / Size       9833 / 38.41 GiB
      Free  PE / Size       0 / 0
      VG UUID               6sMb7k-xEuU-HLwu-32cS-tDJn-OLk0-YVpvEP
    
    • vgextendコマンドで、ボリュームグループに物理ボリュームを追加する

    [root@localhost user]# vgextend cl /dev/sda4
      Volume group "cl" successfully extended
    
    • vgdisplayコマンドで、ボリュームグループが拡張されていることを確認する

    [root@localhost user]# vgdisplay
      --- Volume group ---
      VG Name               cl
      ...
      Cur PV                2
      Act PV                2
      VG Size               9.76 TiB
      PE Size               4.00 MiB
      Total PE              2559592
      Alloc PE / Size       9833 / 38.41 GiB
      Free  PE / Size       2549759 / <9.73 TiB
      VG UUID               6sMb7k-xEuU-HLwu-32cS-tDJn-OLk0-YVpvEP
    
  4. lvextend:ボリュームグループ拡張に伴い論理ボリュームのサイズを拡張する

    • lvdisplayコマンドで、現在の論理ボリュームを確認する

    [root@localhost user]# lvdisplay
      --- Logical volume ---
      LV Path                /dev/cl/swap
      ...
      --- Logical volume ---
      LV Path                /dev/cl/root
      LV Name                root
      VG Name                cl
      LV UUID                0HUU49-A9Nh-HC8a-Fv9P-4oZY-ObZy-WZ0vj6
      LV Write Access        read/write
      LV Creation host, time localhost.localdomain, 2021-03-05 13:04:26 +0900
      LV Status              available
      # open                 1
      LV Size                34.41 GiB
      Current LE             8809
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:0
    
    • lvextendコマンドで、ボリュームグループのサイズに合わせて論理ボリュームを拡張する

    [root@localhost user]# lvextend -l +100%FREE /dev/cl/root
      Size of logical volume cl/root changed from 34.41 GiB (8809 extents) to 9.76 TiB (2558568 extents).
      Logical volume cl/root successfully resized.
    
    • lvdisplayコマンドで、論理ボリュームが拡張されていることを確認する

    [root@localhost user]# lvdisplay
      --- Logical volume ---
      LV Path                /dev/cl/swap
      ...
      --- Logical volume ---
      LV Path                /dev/cl/root
      LV Name                root
      VG Name                cl
      LV UUID                0HUU49-A9Nh-HC8a-Fv9P-4oZY-ObZy-WZ0vj6
      LV Write Access        read/write
      LV Creation host, time localhost.localdomain, 2021-03-05 13:04:26 +0900
      LV Status              available
      # open                 1
      LV Size                9.76 TiB
      Current LE             2558568
      Segments               2
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:0
    
  5. xfs_growfs:XFS ファイルシステムを拡張する

    • xfs_growfsコマンドで、マウントしたまま XFSファイルシステムを拡張する

    [root@localhost user]# xfs_growfs /
    meta-data=/dev/mapper/cl-root    isize=512    agcount=4, agsize=2255104 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=1, sparse=1, rmapbt=0
             =                       reflink=1
    data     =                       bsize=4096   blocks=9020416, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
    log      =internal log           bsize=4096   blocks=4404, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    data blocks changed from 9020416 to 2619973632
    

以上で、仮想マシンの仮想ディスク容量の追加は完了となります。

9.2. 仮想マシンのディレクトリを手元マシンにマウントする

rcloneやsshfsを使うことで、手元マシンにssh接続先の仮想マシンのディレクトリをマウントできます。

ここでは、rcloneを使って、手元ubuntuマシンからmdx上のubuntu仮想マシンのディレクトリをマウントする方法を記載します。 本手法は、mdx上の仮想マシンから、ssh先の他サーバのディレクトリをマウントする際にも利用できます。

rcloneクライアントは、linuxだけではなく、macやwindowsに対応しています。 詳しくは、公式サイト を確認してください。

  1. rcloneのインストール

    https://rclone.org/install/ に従ってrcloneをインストールしてください。

    aptを使ってインストールした場合は、rcloneのバージョンが古い可能性があるため、後述する自動起動が動作しない可能性があります。 OS起動時にrcloneを自動マウントしたい場合は、rclone公式サイトから最新版をインストールしてください。

    最新版のインストール例:

    # curl https://rclone.org/install.sh | sudo bash
    

    aptを使ったインストール例:

    $ sudo apt install rclone
    
  2. rcloneの設定

    rclone config コマンドを使って対話形式で設定するか、もしくは、~/.config/rclone/rclone.conf を編集して仮想マシンを設定します。 利用する通信方式は、 SFTP を選択してください。 詳しくは、公式サイトの SFTPのページ を確認してください。

    ~/.config/rclone/rclone.conf の設定例:

    [mdx0]
    type = sftp
    host = [2001:XXX:XXX:XXX::XXX]
    user = <user_id>
    key_file = <ssh_key>
    
  3. rcloneを実行

    手元マシンの ~/mnt/mdx0 にmdx上の仮想マシンのディレクトリがマウントされます。

    $ mkdir -p ~/mnt/mdx0
    $ rclone mount mdx0: mnt/mdx0
    
  4. 自動起動の設定

    手元マシンがLinuxの場合は、systemdを使うことでOS起動時にマウントすることが可能です。 本機能を利用したい場合は、最新版のrcloneを使用してください。

    はじめに、mount.rclone がインストールされていない場合は、コマンドを作成します。

    $ sudo ln -s /usr/bin/rclone /sbin/mount.rclone
    

    本設定例では、手元マシンの/mntディレクトリに仮想マシンのディレクトリをマウントします。

    systemdのファイル名には命名規則があるため、/mnt/dataディレクトリにマウントする際は、ファイル名を mnt-data.mountに変更してください。 また config=/home/user/ ... の箇所は、自身の設定ファイルのPATHに変更してください。

    /etc/systemd/system/mnt.mount の設定例:

    [Install]
    WantedBy=multi-user.target
    [Unit]
    After=network-online.target
    [Mount]
    Type=rclone
    What=mdx0:
    Where=/mnt
    Options=rw,allow_other,args2env,vfs-cache-mode=writes,config=/home/user/.config/rclone/rclone.conf,cache-dir=/var/rclone
    

    最後にdaemonを起動します。

    $ sudo systemctl enable mnt.mount
    $ sudo systemctl start mnt.mount
    

    手元マシンの /mnt にmdx上の仮想マシンのディレクトリがマウントされます。

9.3. オブジェクトストレージの利用方法例

オブジェクトストレージは「s3cmd」「AWS CLI」など専用のクライアントツールを使うことでアクセス・利用することができます。
本稿では仮想マシン上でオブジェクトストレージを操作する方法の一例として、「s3cmd」の使い方の一部を記載します。

9.3.1. 前提・ユーザポータルでの申請

こちらのページ に記載の画面からオブジェクトストレージを申請します。
承認されると、アクセスキー・秘密鍵・UUIDの3点を入手できます。

9.3.2. s3cmdの利用方法

  1. s3cmdの導入

    s3cmdを仮想マシンにインストールします。インストール方法はOSによって異なります。

    (ubuntuでの操作例)
    $ sudo apt install s3cmd
    
  2. 初期設定を行う

    オブジェクトストレージの申請が承認された際に取得した情報などを用いて初期設定を行います。
    ★印の箇所は記載の通り入力しEnterを入力します。それ以外の箇所はEnterのみ入力します。
    $ s3cmd --configure
    ...
    Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
    Access Key: ★(アクセスキーを入力)
    Secret Key: ★(秘密鍵を入力)
    Default Region [US]: ★us-east-1
    
    Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.
    S3 Endpoint [s3.amazonaws.com]: ★s3ds.mdx.jp
    
    Use "%(bucket)s.s3.amazonaws.com" to the target Amazon S3. "%(bucket)s" and "%(location)s" vars can be used
    if the target S3 system supports dns based buckets.
    DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]: ★s3ds.mdx.jp
    
    Encryption password:
    Path to GPG program [/usr/bin/gpg]:
    Use HTTPS protocol [Yes]:
    HTTP Proxy server name:
    
    Test access with supplied credentials? [Y/n]
    Please wait, attempting to list all buckets...
    Success. Your access key and secret key worked fine :-)  <==これが出ればOK!
    
    Now verifying that encryption works...
    Not configured. Never mind.
    Save settings? [y/N] ★y
    
  3. 各種操作を行う

    • バケットを作成する・削除する

      ・バケットの作成
      $ s3cmd mb s3://(バケット名)
      
      ・バケットの削除
      $ s3cmd rb s3://(バケット名)
      
      バケットの一覧は以下のコマンドで確認できます
      $ s3cmd ls
      
    • バケット上にファイルをアップロードする

      $ s3cmd put (任意のファイル名) s3://(バケット名)
      
    • バケット上のオブジェクトを操作する

      ・オブジェクトのダウンロード
      $ s3cmd get s3://(バケット名)/(任意のオブジェクトキー名)
      
      ・オブジェクトの削除
      $ s3cmd del s3://(バケット名)/(任意のオブジェクトキー名)
      
      バケット上のオブジェクト一覧は以下のコマンドで確認できます
      $ s3cmd ls s3://(バケット名)
      
      すべてのバケット上のオブジェクトを確認したい場合には以下のコマンドが利用できます
      $ s3cmd la
      
    • オブジェクトのアクセスコントロールリスト(ACL)を変更する

      ・オブジェクトをパブリックに公開する
      $ s3cmd setacl --acl-public s3://(バケット名)/(任意のオブジェクトキー名)
      
      公開した場合、ブラウザなどで以下のURLからアクセス可能となります。
      
      - 仮想ホスト形式: https://(バケット名).s3ds.mdx.jp/(任意のオブジェクトキー名)
      - パス形式: https://s3ds.mdx.jp/(バケット名)/(任意のオブジェクトキー名)
      
      ・バケット内のすべてのオブジェクトをパブリックに公開する
      $ s3cmd setacl -r --acl-public s3://(バケット名)
      
      ・オブジェクトを非公開にする
      $ s3cmd setacl --acl-private s3://(バケット名)/(任意のオブジェクトキー名)
      
      バケット内のすべてのオブジェクトを公開/非公開にする場合、バケットに直接ポリシーの設定を行うこともできます。
      ※オブジェクト数が非常に多い場合に有効です
      実施方法は こちらのFAQ をご確認ください。

9.3.3. バケット作成時の注意点

バケット名について以下の制約があります。

  • バケット名はmdx内で一意である必要があります。そのため、単純な名前を指定すると重複により使えない可能性があります。

  • バケット名の文字数および使用できる文字種についてアクセス形式ごとの制約があります。クライアントツールによっては、
    アクセス形式を選択できない場合もあるので、仮想ホスト形式の制約に従いバケット名を決定することを推奨します。
    • 仮想ホスト形式

      • 文字数:3~63文字

      • 使用できる文字種:アルファベット小文字(a-z)、数字(0-9)、ピリオド(.)、ハイフン(-)

    • パス形式

      • 文字数:3~255文字

      • 使用できる文字種:アルファベット大小文字(a-zA-Z)、数字(0-9)、ピリオド(.)、ハイフン(-)、アンダーバー(_)

  • 使用するクライアントツールの仕様により制約に違反した名前のバケットを作成出来てしまう場合がありますが、
    その場合は意図しない動作になる可能性がありますのでご注意ください。