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

ARCHIVESDRIVE HB

オイラはホームベーカリー!

Macbook 上で Vagrant が扱う仮想マシンの可変サイズのストレージのサイズを小さくしたい

タイトルの通りです。

ナンデ?

RHEL/CentOS の 5 とか 6 といった環境に、レガシーな RubyPHP の環境を複数用意する必要があり、Vagrant で管理して色々作業していると、いつの間にか Macbook 自体のディスクがたりねーな?となったのが発端です。

Vagrant が扱う、と行っても実際に仮想マシンの管理をしているのは VirtualBox となるので、どちらかというと VirtualBox の扱う仮想マシンの〜、というのが正しいかもしれませんね。

どうする

こうする。

VirtualBox の仮想ディスクサイズを小さくする | dreamin'up4u

  • ディスクを小さくしたい仮想マシンを起動する ( $ vagrant up )
  • 対象の仮想マシンにログインする ( $ vagrant ssh )
  • ログインした先で、dd コマンドで空き領域を 0 埋めして削除する ( $ dd if=/dev/zero of=zero bs=4k; \rm zero )
    • 「ディスクが一杯です」って言われてから、0 埋めしたファイルが削除されるので、標準出力のエラーに怯える必要はない
  • 対象の仮想マシンをシャットダウンする ( $ vagrant halt )
  • 対象の仮想マシンのストレージの UUID を調べる ( $ VBoxManage list hdds )
  • 対象の仮想マシンのストレージの UUID を用いて圧縮コマンドを実行する ( $ VBoxManage modifyhd [対象の UUID] compact )

現実に目を向ける

Vagrant が作成する仮想マシンのファイル形式は「vmdk」となるため、上記の手順だと「圧縮できないよ」とエラーが帰ってきます。 上記手順で圧縮できるのは、

  • 可変サイズのストレージ
  • vdi 形式

のみとなりまーす!ちくしょう!

増え続けるストレージに対応する手段は?

ない。 素直にイメージを削除するか転送速度が実用に耐えるなら、外付け HDD を用意するのが良い。 Thunderbolt 接続とかだといいんじゃろうか……。

ちなみに、vmdk -> vdi と変換してから、上記の手順で compact をしてサイズを圧縮し、再び vmdk に戻すことで解決をはかる、という手段もあるそうです。 しかしその時点で、仮想マシンのファイルサイズの二倍以上を扱えるストレージの空きが必要であり、今はもうそんな余裕がないので無理でした。 つまり死ぬしか無い。がくー。

複数の AWS アカウントを操り S3 にファイルをアップロードする

AWS のアカウントを追加する

利用するアカウントには S3 へのアクセスポリシーが設定されているものとする。

macbook:~ user$ aws configure --profile NAME
AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: 
Default output format [None]:
  • NAME
    • 何かわかりやすい名前を指定する。今後コマンド利用する際に指定する名前なので少し考えよう。
  • AWS Access Key ID
    • AWS の IAM 管理から発行した値
  • AWS Secret Access Key
    • AWS の IAM 管理から発行した値
  • Default region name
    • 東京の場合は「ap-northeast-1」
  • Default output format
    • 何も指定しないと記述されないが、json になる

追加できたら、~/.aws/config に追記される。

S3 が見えるか、追加した profile を指定して確認する

macbook:~ user$ aws s3 ls --profile NAME
2017-03-15 22:28:15 muccha-good-looking-bucket

見えましたね。

ファイルをアップロードして確かめてみる

macbook:~ user$ aws s3 cp ~/Pictures/yakiniku.jpg s3://muccha-good-looking-bucket/ --profile NAME
upload: Pictures/yakiniku.jpg to s3://muccha-good-looking-bucket/yakiniku.jpg

このままだとアクセスしても Access Denied になります。 S3 のマネジメントコンソールから、yakiniku.jpg の権限を「全員」に「開く/ダウンロード」を指定して保存しましょう。

上記のバケット名や画像は実際には存在しないのですが、以下のような URL とすることでブラウザからアクセス出来ることを確認しましょう。

http://muccha-good-looking-bucket.s3-ap-northeast-1.amazonaws.com/yakiniku.jpg

見えたら成功です。

ちなみに

アップロードする時に権限を付与できるので、以下のようにすればマネジメントコンソールでの操作しなくても全世界に公開できると思います。

macbook:~ user$ aws s3 cp ~/Pictures/yakiniku.jpg s3://muccha-good-looking-bucket/ --acl public-read --profile NAME

Logwatch にめっちゃ「network unreachable resolving」が出る

他所から頼まれたサーバの保守するときに、まず Logwatch が何故か root ユーザのローカルメールボックスに向いてるので、保守用のアドレスに向ける事、たまにありますよね。 (本当はちゃんと運用されていて欲しい……)

続きを読む

高解像度モニタから vSphere client を使う時

新年あけてた、おめでとうございます。 今年もチラシの裏として頑張っていく所存です。

続きを読む

都民共済の「給与所得者の保険料控除申告書」の書き方

www.kyosai-cc.or.jp

毎年更新されてるけど、毎年額面だけ変わって記載の方法は変わってないのでここを見るといい。

Chrome と Iron で FlashPlayer を使う

仕事の都合で、扱うブラウザを増やして対応しようと思い、SRware の Iron を用意した。

んで、ChromeFlash が認識されているのに、新しく追加した Iron だと認識しないとき。

どうする

PPAPI 版 FlashPlayer をインストールする。

各環境向けのインストーラ等は下記の Iron のトピックを見ると良い。

HOW TO ACTIVATE PPAPI-FLASH - SRWare.net

検索すると、Chrome と Iron では共存できない、みたいな記事がヒットする。が、現在は問題無いよ模様。

手元で確認した環境では、

このようになっている。

参考:

Adobe - Flash Player

askmona.org

Errno 1872

Last_Error: Slave failed to initialize relay log info structure from the repository

stop slave して reset slave して change master to で stop slave した時点のログを指定すればオッケーでした。 復帰できない場合は、mysqldump かなんかでログの位置を記録できるバックアップ作成して再度スレーブの構築するしかないのではって感じ。

参考:

blog.usoinfo.info