読者です 読者をやめる 読者になる 読者になる

さくらのクラウドでDiskFullになってしまったのでストレージ拡張をした

さくらのクラウドインスタンスを立ててLXDを使った検証をしていて、とりあえずディスクを20GBにして使っていたら気がついたらディスクの空きがなくなってしまい、検証をある程度進めていてインスタンス作り直して手動で構築しなおすのも面倒だったのでディスク拡張をやってみました。

OSはUbuntu16.04で、ファイルシステムext4です。

問題発覚

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            983M     0  983M   0% /dev
tmpfs                           201M  8.4M  192M   5% /run
/dev/vda3                        16G   16G     0 100% /
tmpfs                          1001M     0 1001M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                          1001M     0 1001M   0% /sys/fs/cgroup

/dev/vda3 が空きがないのが見てわかります。LXD用のzfsイメージのサイズを大きく割当すぎたのが原因でした。 この時最悪だったのが、適当にコマンドを打つとそのコマンドが刺さって応答がなくなってしまうようになったことでした…。

ディスク拡張作業

インスタンスをシャットダウン

シャットダウンしないと操作できないので一旦シャットダウンします。

f:id:kuro_m88:20161207231836p:plain

f:id:kuro_m88:20161207232125p:plain

容量を大きくした新しいディスクを作成する

ディスク一覧より、新しいディスクを作成します。

f:id:kuro_m88:20161207232255p:plain

この時、空のディスクを作るのではなく、ディスクのソースに20GBの元のディスクを指定します。 こうすることで元のディスクの内容が新しいディスクにクローンされます。

f:id:kuro_m88:20161207232416p:plain

ステータスが完了になるまで(コピーが完了するまで)待ちましょう。

f:id:kuro_m88:20161207232503p:plain

元のディスクをインスタンスから取り外す

停止させたサーバから元のディスクを取り外します。

f:id:kuro_m88:20161207232604p:plain

新しいディスクをインスタンスに接続する

停止させたサーバに新しいディスクを接続します。

f:id:kuro_m88:20161207232639p:plain

f:id:kuro_m88:20161207232817p:plain

サーバ上で認識されるディスクサイズを拡張する

新しいディスクが接続できたら、サーバを起動します。 この状態ではまだファイルシステム上はディスクは拡張されていませんし、 df -h してもリサイズ後のサイズで認識されていません。

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            983M     0  983M   0% /dev
tmpfs                           201M   11M  190M   6% /run
/dev/vda3                        16G   16G     0 100% /
tmpfs                          1001M     0 1001M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                          1001M     0 1001M   0% /sys/fs/cgroup

parted -l コマンドでパーティションを確認しますが、この時に拡張済のディスクのサイズとGPT上のディスクのサイズが違う事をpartedが検知してくれるので、ここで修正を行います。

$ sudo parted -l
Warning: Not all of the space available to /dev/vda appears to be used, you can
fix the GPT to use all of the space (an extra 41943040 blocks) or continue with
the current setting?
Fix/Ignore? Fix
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system     Name  Flags
1      1049kB  2097kB  1049kB                        bios_grub
2      2097kB  4297MB  4295MB  linux-swap(v1)
3      4297MB  21.5GB  17.2GB  ext4

修正ができたら、 /dev/vda (接続したディスクの名前) のパーティションサイズを変更します。

$ sudo parted /dev/vda
GNU Parted 3.2
Using /dev/vda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system     Name  Flags
1      1049kB  2097kB  1049kB                        bios_grub
2      2097kB  4297MB  4295MB  linux-swap(v1)
3      4297MB  21.5GB  17.2GB  ext4

(parted) resizepart 3
Warning: Partition /dev/vda3 is being used. Are you sure you want to continue?
Yes/No? Yes
End?  [21.5GB]? 42.9GB
(parted) p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system     Name  Flags
1      1049kB  2097kB  1049kB                        bios_grub
2      2097kB  4297MB  4295MB  linux-swap(v1)
3      4297MB  42.9GB  38.6GB  ext4

(parted)
Information: You may need to update /etc/fstab.

パーティションの拡張ができました。

次はファイルシステムの拡張です。 resize2fs コマンドがよしなにやってくれます。

$ sudo resize2fs /dev/vda3
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/vda3 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 3
The filesystem on /dev/vda3 is now 9424544 (4k) blocks long.

確認

最後に確認をします。

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            983M     0  983M   0% /dev
tmpfs                           201M   14M  187M   7% /run
/dev/vda3                        36G   16G   19G  47% /
tmpfs                          1001M     0 1001M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                          1001M     0 1001M   0% /sys/fs/cgroup

拡張できたようです。めでたしめでたし。

DNSのレコードをGitHubで管理 & 自動反映する

最近調布技研という団体のDNSのネームサーバーをCloudflareに変えてみた。 Cloudflareは無料でAPIつきのネームサーバーとCDNが使えてとても便利そうだったので。

www.cloudflare.com

APIつきのネームサーバーが使えるようになったので、レコード管理 & 反映の自動化をやってみた。

DNSレコードをGitHubで管理する

管理するために作ったのがこちら。

github.com

TerraformにCloudflareのproviderがあったので、これを使ってレコード設定を記述するようにした。

Provider: Cloudflare - Terraform by HashiCorp

Cloudflareの設定 (cloudflare.tf)

variable "cloudflare_email" {
  description = "cloudflare email"
}

variable "cloudflare_apikey" {
  description = "cloudflare api key"
}

provider "cloudflare" {
  email = "${var.cloudflare_email}"
  token = "${var.cloudflare_apikey}"
}

上記がTerraformのCloudflare providerを使うために必要な設定で、CloudflareのAPIキーをここに書いても動くけど、publicなリポジトリなので実行時に環境変数で渡すことにした。

レコードの設定 (record.tf)

resource "cloudflare_record" "chofu_tech_A" {
    domain = "chofu.tech"
    name = "chofu.tech"
    value = "151.101.100.133"
    type = "A"
}

resource "cloudflare_record" "www_chofu_tech_A" {
    domain = "chofu.tech"
    name = "www.chofu.tech"
    value = "151.101.100.133"
    type = "A"
}

こんな感じでレコードを列挙していく。ただのテキストファイルなのでこれでプルリクベースで管理できるようになった。

DNSレコードの設定変更が自動反映されるようにする

プルリクのマージ後に自動で実行するためのツールとしてCircleCIを使った。

circleci.com

CircleCIは実行時に渡す環境変数が設定できて、その環境変数は外部から読めないようにできるのでAPIキーを隠しておきたい場合に便利。

TF_VAR_cloudflare_email = "hoge@example.com"
TF_VAR_cloudflare_apikey = "hogehoge"

環境変数はこの2つを設定しておいた。 TF_VAR_ で始まる環境変数はTerraform内のパラメータとして使える。
あとは、CircleCIの設定ファイルに master ブランチに変更があった場合は terraform plan のみ実行(反映はされない)、 production ブランチに変更があった場合は terraform apply を実行(実際に反映される) されるようにして反映が自動で行われるようにした。

chofutech-public-dns-record/circle.yml at master · chofutech/chofutech-public-dns-record · GitHub

これでしばらく運用してみて便利そうだったら自分のドメインもこんな感じで管理してみようかなと思う。

「サーバレス」に対する気持ち

「サーバレスアーキテクチャ」という言葉を目にするようになって、なんだかもやもやするなぁと思っていた。 最近だと、「サーバレス」という言葉の方がよく目にする気がする。

www.publickey1.jp

この記事を読んで、さらに違和感しかなくなった。

僕の気持ち

…サーバレスって、何がないんだっけ?

Twitter上での皆さんの気持ち

自分だけかなと思ってTwitterを検索してみると、同様に違和感を感じている方がいて安心(?)した。

サーバとは

サーバ - Wikipedia

サーバあるいはサーバー(英: server)は、コンピュータの分野では、本来はソフトウェアの用語であり、クライアントサーバモデルにおいてクライアントからの要求に対して何らかのサービスを提供する役割を果たす側のプログラムを指す言葉である。

serverの意味 - goo辞書 英和和英

〔コンピュータ〕 サーバー:ネットワーク上で他のコンピュータに情報やサービスを提供するコンピュータ

サーバとはサービスを提供(Serve)するからサーバ(Server)と呼ばれる。
その前提からすると、「サーバレス」はサービスの提供者が居ないような気がしてやはり変な感じがする。

サーバレスとはなんなのか

前述の意味を真に受けてしまうと何もしないに等しい状態になってしまうし、さすがにそんなことはない。

サーバがないというより、自前で管理しなくて良い、マネージドサービスのことを言っているんだと思う。

一番よく例に出されるのがAWS Lambda。ドキュメントに書いてある説明がわかりやすい。

AWS Lambda とは - AWS Lambda

AWS Lambda は、コードを AWS Lambda にアップロードすると、サービスが AWS インフラストラクチャを使用してコードの実行を代行するコンピューティングサービスです。

サーバを管理しなくてよくて、アプリをデプロイするだけで良いっていうのは要するにPaaSのことでは。

さくらインターネットの田中社長もこんなツイートをしていた。

ちなみに、「美味しい」は「多いし」のtypoだそうです。

「サーバレス」はマーケティング用語であって技術的にはその用語自体のことを気にする必要はなさそう。

なんと呼べばいいのか

PaaSに違いないということはわかった。

PaaSと言われるとHerokuが最初に思い浮かんだのだが、HerokuとAWS LambdaやGoogle Cloud Functionsは同じPaaSのくくりでも何か違う気がする。

SDKが必要/不要などもあるが、前者は入力としてウェブブラウザ等からのHTTPリクエストを受けるのを前提としていて、後者はもっと汎用的に「イベント」を受けるのを前提としている。ウェブアクセスだけでなく、「ストレージにオブジェクトが置かれた」などあらゆるイベントのトリガーを設定することができる。

これは、一番最初に挙げた記事中にも書かれているが、入力に対して出力を返す関数のようなもの、 Function as a Service と呼ぶ方がよさそう。

「サーバレス」はマーケティングのための用語で、「PaaS」に変わりないし、もっと詳しく分類するとすれば「FaaS」ということで自分の中では落ち着いた。

追記

同期の反応

f:id:kuro_m88:20160830195822p:plain

ozzio driveのOEM供給元のサービスを調べてみた

TwitterのTLを眺めていたら ozzio drive の話題が多くてそもそもどこが運営してるサービスなんだろう?と気になったので調べてみみました。

ozzio driveとは

PC DEPOTクラウドストレージサービス。

www.ozzio.jp

20台まで使えるウィルス対策ソフトと4TBのクラウドストレージ(ozzio drive)が付いて、初年度 0円、年額15,000円(税抜き)らしい。 上記のwebサイトを見た感じ、ネット上からは契約できなさそう。

根拠はなかったけどPC DEPOTで自社開発はしないんじゃないかなと思ったので調べてみる。

ozzio driveのサービス提供元を調べてみた

続きを読む

「平日に会社を休む」という概念が通じなかった話

少し前に髪の毛を切りに行った時の話。

店員 「土日休みのご職業なんですか?」

僕 「はい」

店員「土日は何されてるんですか?」

僕「飲み会とか誘われなければ家でグダグダしてることが多いですね、どこも混んでますし」

店員「何もされないんですか?」

僕「もし出かけたいところがあったら平日に休み取るかもしれないですね」

店員「平日お休みの職業なんですね!」

僕「いや、休みを取るんですよ」

店員「休めるんですね!」

僕「」

まぁ店員さんも忙しそうだし、閉店前で疲れてただろうから会話に頭が回ってなかっただけかもしれないし、シフト勤務の方は不定休が当たり前なのかもしれない。
もしくは、自分の話し方が悪かっただけか。

だから何だというのがあるわけじゃないけど、会話が咬み合ってないような感じがしてもやもやした気持ちになった。

オチはないです。

NEC IX2105のファームウェアをアップデートする

NEC IX2105をヤフオクで買ったので、まずはファームウェアのアップデートをしました。

f:id:kuro_m88:20160612202630p:plain

アップデートの準備

TFTPサーバの起動

Macであれば、以下のコマンドでTFTPサーバが起動します。

$ sudo launchctl unload -w /System/Library/LaunchDaemons/tftp.plist

アップデートイメージを /private/tftpboot に配置する

/private/tftpboot に置くだけです。

$ ls /private/tftpboot/
ix2105-boot-12.1-gate-ms-9.3.11.rap

アップデート

ここからは電源の入ったIXにコンソールケーブルを刺して作業します。

現在のバージョン確認

Router(config)# show version
NEC Portable Internetwork Core Operating System Software
IX Series IX2105 (magellan-sec) Software, Version 8.7.22, RELEASE SOFTWARE
Compiled Dec 07-Wed-2011 11:42:26 JST #1 by sw-build, coregen-8.7(22)

ROM: System Bootstrap, Version 3.1
System Diagnostic, Version 3.1
Initialization Program, Version 3.1

System uptime is 4 minutes
System woke up by reload, caused by command execution
System started at Jun 12-Sun-2016 14:59:03 JST
System image file is "ix2105-ms-8.7.22.ldc"

Processor board ID <0>
IX2105 (MPC8314E) processor with 131072K bytes of memory.
2 GigaEthernet/IEEE 802.3 interfaces
512K bytes of non-volatile configuration memory.
16384K bytes of processor board System flash (Read/Write)

Default console is web.

MacとIXの接続

LANケーブルでMacとIXをつなぎます。IXはGE1の1番目のポートにつなぎます。
工場出荷時の設定であればDHCP192.168.1.0/24 のアドレスが降ってくるはずです。Macに振られたIPを控えておきます。

アップデートイメージのダウンロード

192.168.1.1 と書いてある部分は必要に応じてMacIPアドレスに書き換えてください。

Router(config)# tftp get 192.168.1.1:ix2105-boot-12.1-gate-ms-9.3.11.rap ix2105-boot-12.1-gate-ms-9.3.11.rap
..........................................................................................................................................................................................
................................................................................................................................................................................
TFTP transfer complete, 5928586 bytes, MD5 = *************************

ダウンロードの確認

ダウンロードされた事を確認します。

Router(config)# show flash
Codes: M - Main-side, B - Backup-side, N - Newfile, R - Runnable
       A - Active-file, + - Next-boot, * - Bootmode-entry
Length     Name                          Status
4156969    ix2105-ms-8.7.22.ldc          MA
5928586    ix2105-boot-12.1-gate-ms-9.3.11.rap R

古いイメージの削除

現在読み込まれている古いイメージを削除します。

Router(config)# erase ix2105-ms-8.7.22.ldc
Now erasing ix2105-ms-8.7.22.ldc, please wait...

再起動

再起動するとアップデートが始まります。

Router# reload
Notice: The router will be RELOADED. This is to ensure that
        the peripheral devices are properly initialized.
Are you sure you want to reload the router? (Yes or [No]): Yes

NEC Bootstrap Software
Copyright (c) NEC Corporation 2001-2011. All rights reserved.

%BOOT-INFO: No Build-ID boot records found, attempting flash load.
%BOOT-INFO: No boot records found, attempting flash load.
%BOOT-INFO: Trying flash load, exec-image [ix2105-boot-12.1-gate-ms-9.3.11.rap].
Loading: ########################################################################################## [OK]

Starting at 0x20000

NEC Bootstrap Software, Version 12.1
Copyright (c) NEC Corporation 2001-2016. All rights reserved.

***** FLASH MEMORY IMAGE UPDATER *****

%UPDATE-INFO: Update Information [09030b204886de13]
%UPDATE-INFO: Starting update.
%UPDATE-INFO: [Bootstrap Software] [Main Bootstrap Software] [Diagnostic Software] [Gateway Software]
%UPDATE-INFO: Cleanup all FLASH area, please wait for a while.
%UPDATE-INFO: Overwrite VPD area.
%UPDATE-INFO: 0x00100274 > 0xfe000000 update done.
%UPDATE-INFO: 0x00120294 > 0xfef00000 update done.
%UPDATE-INFO: 0x00140294 > 0xfef20000 update done.
%UPDATE-INFO: 0x001602b4 > 0xfef80000 update done.
%UPDATE-INFO: 0x001802d4 > 0xfe180000 update done.
%UPDATE-INFO: 0x001a02d4 > 0xfe1a0000 update done.
%UPDATE-INFO: 0x001c02d4 > 0xfe1c0000 update done.
%UPDATE-INFO: 0x001e02d4 > 0xfe1e0000 update done.
%UPDATE-INFO: 0x002002d4 > 0xfe200000 update done.
%UPDATE-INFO: 0x002202d4 > 0xfe220000 update done.
%UPDATE-INFO: 0x002402d4 > 0xfe240000 update done.
%UPDATE-INFO: 0x002602d4 > 0xfe260000 update done.
%UPDATE-INFO: 0x002802d4 > 0xfe280000 update done.
%UPDATE-INFO: 0x002a02d4 > 0xfe2a0000 update done.
%UPDATE-INFO: 0x002c02d4 > 0xfe2c0000 update done.
%UPDATE-INFO: 0x002e02d4 > 0xfe2e0000 update done.
%UPDATE-INFO: 0x003002d4 > 0xfe300000 update done.
%UPDATE-INFO: 0x003202d4 > 0xfe320000 update done.
%UPDATE-INFO: 0x003402d4 > 0xfe340000 update done.
%UPDATE-INFO: 0x003602d4 > 0xfe360000 update done.
%UPDATE-INFO: 0x003802d4 > 0xfe380000 update done.
%UPDATE-INFO: 0x003a02d4 > 0xfe3a0000 update done.
%UPDATE-INFO: 0x003c02d4 > 0xfe3c0000 update done.
%UPDATE-INFO: 0x003e02d4 > 0xfe3e0000 update done.
%UPDATE-INFO: 0x004002d4 > 0xfe400000 update done.
%UPDATE-INFO: 0x004202d4 > 0xfe420000 update done.
%UPDATE-INFO: 0x004402d4 > 0xfe440000 update done.
%UPDATE-INFO: 0x004602d4 > 0xfe460000 update done.
%UPDATE-INFO: 0x004802d4 > 0xfe480000 update done.
%UPDATE-INFO: 0x004a02d4 > 0xfe4a0000 update done.
%UPDATE-INFO: 0x004c02d4 > 0xfe4c0000 update done.
%UPDATE-INFO: 0x004e02d4 > 0xfe4e0000 update done.
%UPDATE-INFO: 0x005002d4 > 0xfe500000 update done.
%UPDATE-INFO: 0x005202d4 > 0xfe520000 update done.
%UPDATE-INFO: 0x005402d4 > 0xfe540000 update done.
%UPDATE-INFO: 0x005602d4 > 0xfe560000 update done.
%UPDATE-INFO: 0x005802d4 > 0xfe580000 update done.
%UPDATE-INFO: 0x005a02d4 > 0xfe5a0000 update done.
%UPDATE-INFO: 0x005c02d4 > 0xfe5c0000 update done.
%UPDATE-INFO: 0x005e02d4 > 0xfe5e0000 update done.
%UPDATE-INFO: 0x006002d4 > 0xfe600000 update done.
%UPDATE-INFO: 0x006202d4 > 0xfe620000 update done.
%UPDATE-INFO: 0x006402d4 > 0xfe640000 update done.
%UPDATE-INFO: Update completed.

NEC Bootstrap Software
Copyright (c) NEC Corporation 2001-2016. All rights reserved.

%BOOT-INFO: Trying flash load, exec-image [ix2105-ms-9.3.11.ldc].
Loading: ############################################################################# [OK]

Starting at 0x20000

Configuring router subsystems (before IDB proc): done.
Constructing IDB(Interface Database): done.
Configuring router subsystems (after IDB proc): done.
Initializing router subsystems: done.
Starting router subsystems: done.

All router subsystems coming up.

NEC Portable Internetwork Core Operating System Software
Copyright Notices:
Copyright (c) NEC Corporation 2001-2016. All rights reserved.
Copyright (c) 1985-1998 OpenROUTE Networks, Inc.
Copyright (c) 1984-1987, 1989 J. Noel Chiappa.
Router#

さくらのIoT Platform αが届いたので最速で開封の儀

さくらのIoT Platformのα版に登録していて、モジュールが届いたので、最速で開封の儀をします!! (たぶんユーザとしては最速のはず?)

「さくらのIoT Platform」とは、 iot.sakura.ad.jp というものです。

届いた箱がこちら。箱が1つだけ届きました。

f:id:kuro_m88:20160601022234p:plain

金属製の箱で物が届いたのは初めてかもしれない。めっちゃかっこいい。

4隅のネジをはずすと…

f:id:kuro_m88:20160601013448j:plain

説明書とパーツが入っていました。

内容は

  • IoTモジュール x 2 (ソフトバンク版とソラコム版)
  • ブレッドボードに挿せるケーブル
  • アンテナケーブル x 2
  • アンテナ x 2
  • 平らなアンテナ
  • 説明書
  • ステッカー
  • 金属製の箱
  • ネジ x 4
  • さくらのクラウド2万円クーポン

でした。 クーポンまでついてるのはさすがというか(笑)

基板はこんな感じ。

f:id:kuro_m88:20160601013611j:plain

ソフトバンク版もソラコム版もほとんど外見は一緒で、刺さっているSIMが違うだけのようです。

裏側はこんな感じ。

f:id:kuro_m88:20160601022126p:plain

白いシールが貼ってあるのがソフトバンク版で、青いシールが貼ってあるのがソラコム版です。

横からみると、真ん中にSIMカードが刺さっているのが見えますね。

f:id:kuro_m88:20160601013749j:plain

アンテナとケーブルを繋いでみました。

f:id:kuro_m88:20160601014744j:plain

思ってたより小さい。
これだけで誰でもモバイル回線経由で通信する何かが作れるのはいいですね。
というか無料で送ってくれるのもすごいですね。

今日は平日だったのでここまで。
実際に通信させるのが楽しみ!!