53ningen.com

@gomi_ningen's Website

ストレージとファイルシステム

Linux のしくみの第7章をよみつつ、気になりどころをまとめたり、手元のマシンで実験したりしてみました。

[amazon template=wishlist&asin=477419607X]

ファイルシステムをなぜ使うのか

  • データの位置と内容の対応関係を管理したい
    • ストレージに記録されているのはあたりまえではあるが基本的にはデータの列
    • したがって、0番地から100番地には秘密のメモ、101番地から259番地はメールなどといった具合に、データと内容の対応関係を覚えていなければならない
    • この役割を担うのがファイルシステム
  • 複数の用途で使われるシステムに対して、用途に応じてディスク割り当てを絞りたい
    • システムタスク動作中に、ディスクが枯渇してしまうとシステムに深刻な影響が発生するが、クォータをわけるとシステム動作に必要な領域を仕組みで確保できる
    • また特定のユーザーが大量にディスクを消費して、他のユーザーの利用に支障がでることを防ぎたいなど(ext4, XFS のユーザークォータ、...
Read More

プロセスはどのようにスケジューリングされるのか

Linux のしくみの プロセススケジューラの章の内容、まあそうですよね...と思いつつ実際に手元マシンで実験してみたことはなかったのでやってみました。ついでに、たまたま気が向いたので結果をグラフ化してまとめておきました。gnuplot 使うの 4 年ぶり以上だ...。

[amazon template=wishlist&asin=477419607X]

実験内容

  • 複数のプロセスを生成して、それぞれのプロセスにおいてループを回して、ユーザーモードの負荷をかけたとき、どのように各プロセスが実行されるかを観察する
    • 測定の際は、複数の論理 CPU にまたがって実行されないよう taskset コマンドで実行する論理 CPU を指定する
  • 実際に本に書かれていたことが正しいか自分の環境で実験してみた
  • 本のコードは、わりと真面目に良い感じの実験結果が得られるような処理やエラー処理が丁寧に書かれていた
    • 写経が面倒なので、本質的なふるまいはかわらないように適当にコードを書いて実験してみた
    • 雑なコード...
Read More

コンピュータシステムとプロセスの概要

Linux のしくみを読んで、気になった点、ちょっと深い情報が欲しいなと思い調べた点、ポイントとしてまとめておきたいと思った点、実際に自分の手を動かしてやってみた実験結果などをメモ。

[amazon template=wishlist&asin=477419607X]

コンピュータシステムの概要

  • 種類が同じデバイスは、デバイスドライバを通して同じインターフェースで操作
  • CPU やメモリなどリソースはカーネルが管理している
    • プロセス管理システム
    • プロセススケジューラ
    • メモリ管理システム
    • デバイスドライバ
  • ストレージはデバイスドライバを通じて直接命令することができるが、通常はファイルシステムを介してアクセスする
    • ファイルシステム

CPU のモード遷移

  • CPU の動作モードにはユーザーモードとカーネルモードがある
  • プロセスは通常ユーザーモードで動作しているが、システムコールが発行されると、CPU に割り込みというイベントが発生し、これによりカーネルモードに遷移...
Read More

戸松遥 360°SPECIAL LIVE at 舞浜アンフィシアターに行ってきた

舞浜アンフィシアターなのでちょっと大げさに 360° っていうのはまあわかるけど、会場着いてみたら本当に 360° だった。ステージの前方にも特設の席が設けられていて、名前に偽りなく、ステージを取り囲むように 360° から戸松遥さんのステージを堪能できるものでした。座席も B ブロック前方で直接本人やバンドメンバーの表情が見える距離。

セットリスト引用させていただきます ?

967727717293502464

まさかの 3 曲目に Q&A リサイタル! がくるという展開。直前の MC で 2018 年 4 月からの連続ドラマ「声ガール」に戸松遥役として戸松遥さんが出演することが決まったことが発表され、その撮影の一環としてこの曲はカメラが回るとのこと。前半からかなり飛ばしつつ、途中のミディアムテンポやバラード曲が生バンドの音も飛んでくる感じで非常によかった。特にユメセカイがよかったなぁ...。あと、着席パートが終わった後の courage は熱かった。

967767000222019590

最後の曲は「恋ヲウチヌケ...

Read More

ansible で git clone と remote add upstream を行う

 GitHub リポジトリをクローンして、 git remote add upstream した状態にしたいときは、 remote: upstream を指定すれば良い。例えば、 git@github.com:example/example.git を clone することを考えると、 ansible を次のように書けば OK。

---

- name: clone repository
  become: yes
  become_user: maintainer
  git:
    repo: git@github.com:example/example.git
    dest: /path/to/repos
    remote: upstream
    accept_hostkey: yes
  when: not check_repos.stat.exists

詳細は [Ansible 公式ドキュメント git module](http://docs.ansible.com/ansible/latest/git_module....

Read More

えとたまの新シリーズ制作が決まった

新干支繚乱祭に行ってきました。イベントが再び開催されたの奇跡っぽい気がしてたけど、それを超える発表が最後にあってビビった。

965078080246042626
965078166568976385
965078255530225664

幕張メッセ遠いし寒いし辛いし嫌いだけど行ってよかった。続編が決まった作品の内容をキャストが半分忘れかけてるの、さすがに笑ったけど、えとたまらしくて良い。座席位置は1列目左サイド。前回の干支繚乱祭イベントレポは<a href="https://53ningen.com/yumiri_hanamori/">こちら</a>

965086793090543616

しょんりえ先生のリトライランデヴーとキャスト 13 名での Blue Moment のライブも見られてよかったけど、やっぱりキャラソンとかやってほしかったなーという気持ちにもなる。Blue Moment の最後を合わせるのが難しすぎ&りえしょんの吹き込みの声と生の歌声が...

Read More

ハウル・ごちうさの聖地:コルマールへ行ってきた

https://web.archive.org/web/20140829010041/http://53ningen.com:80/travel/%E3%83%8F%E3%82%A6%E3%83%AB%E3%83%BB%E3%81%94%E3%81%A1%E3%81%86%E3%81%95%E3%81%AE%E8%81%96%E5%9C%B0%EF%BC%9A%E3%82%B3%E3%83%AB%E3%83%9E%E3%83%BC%E3%83%AB%E7%B7%A8

 スタジオジブリ作品のなかでも個人的には「ハウルの動く城」が一番好きです。 そのハウルのロケ地と言われているのが、フランスのアルザス地方:コルマール(Colmar)、ストラスブール(straßburg)です。

 またつい先日、心がぴょんぴょんすると噂の作品、「ご注文はうさぎですか?」を見ていたところ、 背景に、見覚えのあるかわいい木組みの建物がたくさん!(ニコニコチャンネルにて1話無料配信中!)

 これはもしやと調べてみると、ロケ地がコルマールだったという情報が! そんなすばらしい街、コルマール、ストラスブールに今年...

Read More

mkdir で作成したディレクトリをカレントディレクトリにする

ディレクトリを作ったあと、50% くらいの割合で作ったディレクトリに移動している気がするんですが、みなさんいかがでしょうか。たとえば以下のような感じです。

mkdir "新しいフォルダー(1)"
cd "新しいフォルダー(1)"

.bash_profile に以下のような感じに書いておけば、mkdircd が一気にできます。

mkcd () {
    mkdir $@ && cd `echo $@ | sed -e "s/-[^ \f\n\r\t]*//g"`
}

実際の使い心地は以下のような具合です。

[user@host /tmp]$ mkcd hoge
[user@host /tmp/hoge]$ mkcd fuga
[user@host /tmp/hoge/fuga]$ cd ../
[user@host /tmp/hoge]$ mkcd fuga
mkdir: cannot create directory `fuga': File exists
[user@host /tmp/hoge...
Read More

ansible-playbook の --limit を複数指定する

ansible-playbook コマンドで limit を複数指定したい場合はカンマ区切りで group や host を指定すれば良い。例えば gomi-web0[1-3] に playbook 実行をしたい場合は以下のようにしてあげればよい

ansible-playbook -i ./prod --limit gomi-web01,gomi-web02,gomi-web03 ./web.yml

[amazon template=wishlist&asin=4295003271] ...

Read More

/etc/hosts の更新

サーバーの /etc/hosts を更新して、ホスト名で追加したサーバーへ疎通がとれるようにする

  • 頻繁に実施する際は ansible 化しておいたほうが良い

1. 追加/削除したサーバーへの疎通確認

  • 削除する場合は、削除するサーバーへの参照がないかを確認する(grep で conf などを洗う)
for i in $(grep <!-- 更新対象サーバー --> /etc/hosts | awk -F" "  '{print $1}') ; do echo -e "\n$i" ssh -t $i "grep <!-- 削除するホスト --> <!-- application の conf -->" ; done
  • 追加する場合は、疎通できるかを確認
for i in $(grep <!-- 更新対象サーバー --> /etc/hosts | awk -F" "  '{print $1}') ; do echo -e "\n$i" ssh -t $i "ping <!-- 追加するサーバーのIP -->" ; done

...

Read More

rsync をかけるときに確認すべきこと

  1. dry-run を行い転送するデータ量を確認する
  • 必要であれば exclude オプションを使い、不要なファイルの同期を除外する
  • exclude オプションはパターンしていなので、絶対パスを指定すると期待した動作にならない点に注意
  1. 受け入れ側サーバーに転送データを置く空きスペースがあるか確認する
# dry-run を行う
$ rsync -ah --dry-run --size-only --stats --exclude '$pattern' $src $dest

# 受け入れ側サーバーのディスクの空きを確認する
$ df -hl

# rsync をかける
rsync -ahv --size-only --stats $src $dest

意図としては

  • ディスクフルを防ぐ
  • サーバ間の意図しない大きなトラフィック発生を防ぐ
  • 転送サイズが、作業想定よりも大きかったり小さかったりすることを確認することにより作業ミスを早期発見できる

他にも何かあれば追記していく

[amazon template=wishlist&asin=...

Read More

わぐりすに行ってきた

今年はなるべく参加したイベントの感想まとめたり、せめて関連ツイートだけでもまとめておこうと思っているので、早速わぐりすの感想をまとめておきます。語彙力が低いのでだいたい感謝してます。

会場はカルッツかわさきで、昼夜公演に参加。前日に高まってなかなか寝付けなかったので、結構時間スレスレになってしまった。電車のなかで駅弁を食ってエネルギーを補給しつつも川崎に到着。

962920348239974400

昼公演はわぐらぶ枠だけど 3 階席前方。想像してたよりも見やすかったけど、トークパートは音の反響がすごくて聞こえづらい場所ではあった。開演前にスキノスキルのフルコーラス PV が流れて、ざわついた。現時点で、公開されている部分より先も見どころ満載で、楽しい内容だった。なんか、PV 中でのななみんのスタンスが面白かった。その後、i☆Ris の新曲 Memorial の PV も流れました。

スキノスキル衣装で登場したので、あ、これは今日やるやつじゃん、みたいな感じになりつつも前半はトークパート。今日はわりかし、高木美佑さんの青山吉能さんへのあたりが強かった...

Read More

Let's encrypt による HTTPS 対応

certbot のインストール

sudo yum install epel-release
sudo yum --enablerepo=epel install certbot

証明書の発行

以下のような形で OK

sudo certbot certonly --webroot -w /path/to/document/ -d "example.com"

証明書更新の自動化

root ユーザーの cron に以下を登録

0 2 15 * * /usr/bin/certbot renew && /bin/systemctl reload nginx

...

Read More

Wordpress のメディアに画像をアップロードする際にサムネイルや中・大サイズが生成されない問題

Wordpress のメディアに画像をアップロードすると自動的に中・大サイズの画像やサムネイルを生成してくれます。

しかし php をソースコードからビルドしてインストールするように運用を変えたあとから、これらの画像が生成されなくなっていたので修正しました。この画像変換には php の拡張モジュール GD を利用しているようなので、php の configure オプションに --with-gd を追加しました。

./configure --enable-fpm --enable-mbstring --enable-zip \
    --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \
    --with-mysql=mysqlnd --with-zlib --with-openssl --with-curl  --with-gd

すると png のリサイズはかかるようになりましたが、jpeg のリサイズは相変わらずされずという状況。 php_info を見てみると以下のような具合。

gd
...
Read More

バックエンドが S3 の terraform で init 時に profile 指定する

複数のクレデンシャルを使っているときに、デフォルトじゃないものに切り替える方法、毎回忘れて history 見てるのでメモ。紛らわしい...。 以下のように partial configuration を用いて profile 指定してあげれば良い。

terraform init -backend-config="profile=${aws_profile}"

ただ、backend に直接記述してしまえば、そもそもあまりこういう心配しなくて良い。

terraform {
  backend "s3" {
    bucket         = "******"
    key            = "******"
    dynamodb_table = "******"
    region         = "ap-northeast-1"
    shared_credentials_fil...
Read More

ansible-playbook で対象ホストのうちひとつでもコケたら止める

max_fail_percentage を使うと良い感じに inventories で指定したホストのうちのひとつでも処理がコケたときに、Ansible実行を停止できる。公式ドキュメントはこちらを参照。

By default, Ansible will continue executing actions as long as there are hosts in the group that have not yet failed. In some situations, such as with the rolling updates described above, it may be desirable to abort the play when a certain threshold of failures have been reached. To achieve this, as of version 1.3 you can ...

Read More

fluentd で生ログを転送する

<p> タイムスタンプの付加などをせずに、データを単に集約したいだけの場合は <code>format directive</code> に <code>@type single_value</code> を指定してやれば良い模様。</p>
<match ${pattern}>
  @type file
  path /var/log/fluent/myapp
  time_slice_format %Y%m%d
  compress gzip
  <format>
    @type single_value
  </format>
</match>
<h3>参考資料</h3> <ul> <li><a href="https://docs.fluentd.org/v0.12/articles/out_file">out_file Output plugin</a></li> <li><a href="https://docs.fluentd.org/v0.12/articles/formatter_single_value">single_value Forma...Read More

Wake Up, Girls! デザインマンホール巡り

<p> 2017年12月13日から<a href="http://wakeupgirls3.jp/news/detail.php?id=1056084">「Wake Up, Girls!新章」仙台デザインマンホールプロジェクト</a>と称して仙台市内の9つのマンホールにWake Up, Girls! のキャラクターたちが描かれたものが設置されているとのこと。ちょうど1月に小倉唯さんのコンサートが仙台であり、その際に各マンホールを巡ってきました。</p> <p> 東京から仙台へは ANA の成田〜仙台便を利用、片道7000円代なので新幹線より安い。仙台空港は <a href="https://youtu.be/vmTHs9RAvaU">TSUNAGO のロケ地</a>にもなっていたので、山下七海さんがたっていた場所にたってななみんごっことかして遊びました。この場所に山下七海さんが立っていたかと思うと感慨深いですね(?)</p> <p>[gallery size="medium" columns="3" ids="1533,1371,1372,1373"]</p> <p> 仙台空港直...Read More

ansible-lint を CI に組み込む

 この記事では ansible の linter である ansible-lint を実際にどのように CI に組み込んでいるかをご紹介します。といっても、大した内容ではないのですが、あまり記事が出回ってなかったので、ansible-lint 良いぞという気持ちも兼ねて僭越ながら手短にまとめてみました。

ansible-lint の導入

 requirements.txt を以下のように ansible リポジトリにコミットしておき、 pip install -r requirements.txt でインストールしています。

ansible==2.4.3
ansible-lint==3.4.20

.ansible-lint の設定

 実運用上、なかなか標準ルールすべてを満たすのは大変だったり、ちょっと面倒だったり、別にこれはいいんじゃないのみたいなものがあったりします。そんなときには、.ansible-lint の `skip_l...

Read More

Copyright © 53ningen.com