osechiman’s blog

開発備忘録

Codelabsをやってみた[Creating a Persistent Disk]

Codelabs

Creating a Persistent Disk

1. Overview

Codelabsでこれから何を学ぶかが書いてある。

インスタンス立ててそこに永続ディスクをアタッチするよって感じの事が書いてあると思ってる。

2. Setup and Requirements

プロジェクトのセットアップ。

「CodeLabs」でプロジェクト作成した。

3. Initialize your project environment

インスタンスたちあげ説明。

VMインスタンページへの誘い。

4. Start Cloud Shell

CloudShellの操作方法説明している。

  • activeアカウントの確認
2017/12/05 12:58:08 ~ 
[osechiman@cs-6000-devshell-vm-5ed1868d-4005-4f1e-9e37-d868b8443bc4] $ gcloud auth list
   Credentialed Accounts
ACTIVE  ACCOUNT
*       XXXX@XXXX.XXX

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  • 操作対象のプロジェクト確認
[osechiman@cs-6000-devshell-vm-5ed1868d-4005-4f1e-9e37-d868b8443bc4] $ gcloud config list project
[core]
project = ...

Your active configuration is: [cloudshell-9785]

作ったプロジェクトが出ていない場合はうんぬんは飛ばす。

[osechiman@cs-6000-devshell-vm-5ed1868d-4005-4f1e-9e37-d868b8443bc4] $ gcloud config set compute/zone us-central1-f
Updated property [compute/zone].

5. Understanding Regions and Zones

リージョンとゾーンの概念説明。

リージョン>ゾーンで理解した。リージョンには複数のゾーンが存在する場合がある。

VMもDiskも好きなゾーンは選べるけど

to attach a persistent disk to a virtual machine instance, both resources must be in the same zone.

VMに永続Diskをアタッチする場合は同じリージョンでないといけない。

6. Create a new instance

インスタンスを立てる。

[osechiman@cs-6000-devshell-vm-879cccdf-2684-4166-bf3a-58f36374aae8] $ gcloud compute instances create gcelab --zone us-central1-c
Created [https://www.googleapis.com/compute/v1/projects/...].
NAME    ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
gcelab  us-central1-c  n1-standard-1               10.128.XX.XX   35.224.XXX.XXX  RUNNING

7. Create a new persistent disk

永続Diskの説明と作成。

ネットワークストレージでインスタンス消してもデータはなくならない。

HHDとSSDどちらかが選択出来る。

  • Disk作成
[osechiman@cs-6000-devshell-vm-879cccdf-2684-4166-bf3a-58f36374aae8] $ gcloud compute disks create mydisk --size=200GB \
> --zone us-central1-c
Created [https://www.googleapis.com/compute/v1/projects/...].
NAME    ZONE           SIZE_GB  TYPE         STATUS
mydisk  us-central1-c  200      pd-standard  READY

New disks are unformatted. You must format and mount a disk before it
can be used. You can find instructions on how to do this at:

https://cloud.google.com/compute/docs/disks/add-persistent-disk#formatting

8. Attaching a disk

Diskをアタッチしてマウントする。

  • アタッチコマンド
[osechiman@cs-6000-devshell-vm-879cccdf-2684-4166-bf3a-58f36374aae8] $ gcloud compute instances attach-disk gcelab --disk mydisk --zone us-central1-c
Updated [https://www.googleapis.com/compute/v1/projects/...].

sshインスタンスに接続し、Diskの存在を確認する。

osechiman@gcelab:/dev/disk/by-id$ ls -la
total 0
drwxr-xr-x 2 root root 160 Dec  5 11:39 .
drwxr-xr-x 6 root root 120 Dec  5 11:32 ..
lrwxrwxrwx 1 root root   9 Dec  5 11:32 google-persistent-disk-0 -> ../../sda
lrwxrwxrwx 1 root root  10 Dec  5 11:32 google-persistent-disk-0-part1 -> ../../sda1
lrwxrwxrwx 1 root root   9 Dec  5 11:39 google-persistent-disk-1 -> ../../sdb
lrwxrwxrwx 1 root root   9 Dec  5 11:32 scsi-0Google_PersistentDisk_persistent-disk-0 -> ../../sda
lrwxrwxrwx 1 root root  10 Dec  5 11:32 scsi-0Google_PersistentDisk_persistent-disk-0-part1 -> ../../sda1
lrwxrwxrwx 1 root root   9 Dec  5 11:39 scsi-0Google_PersistentDisk_persistent-disk-1 -> ../../sdb
osechiman@gcelab:/dev/disk/by-id$

なんだmydiskになんないのかよと思ったけど変えたい場合は

When attaching the disk, you would need to specify the --device-name parameter.

オプション指定してアタッチする必要がある。

ファイルシステム指定して、フォーマットして

osechiman@gcelab:/mnt/mydisk$ sudo mkfs.ext4 -F -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/disk/by-id/scsi-0Google_PersistentDisk_persistent-disk-1
mke2fs 1.43.4 (31-Jan-2017)
Discarding device blocks: done             
Creating filesystem with 52428800 4k blocks and 13107200 inodes
Filesystem UUID: ac716889-2e1b-4619-ba83-aa27e1768823
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done     
Writing inode tables: done     
Creating journal (262144 blocks):

マウント

osechiman@gcelab:/mnt/mydisk$ sudo mount -o discard,defaults /dev/disk/by-id/scsi-0Google_PersistentDisk_persistent-disk-1 /mnt/mydisk
osechiman@gcelab:/mnt/mydisk$

再起動は勝手にされるのでマウントしてすぐに利用できる。

9. Local SSDs

SSDの紹介。

SSDは早いけどバックアップは自分で取ってね。というスタンス。

可用性とトレードオフでIOPSがしゅごい。

10. Congratulations!

おめでとう!

大事だと思ったこと

  • 同一リージョン内でしか永続ボリュームはアタッチ出来ない。
  • SSDはIOPS出るけど可用性が犠牲になっている。