春望録

国破れて山河あり

「簡易生活のすすめ」を読んだ

10年前に京都で打ち上げ花火を上げて遊んでいた人(詳細は忘れた)が本を出していたので、買って読んでみた。

小中学生相手に社会科を教えるお仕事をしていた際に、明治維新〜太平洋戦争あたりの歴史に興味はあるものの、具体的な「明治人」のイメージが全くつかないため、「明治維新!富国強兵!文明開花! 受験に出ますよハイでます!(5・7・5・7・7)」とひたすらに知識を詰め込みさせていたと言う心の痛い過去を持っている。

そのことは棚上げにしたとしても、最近では東京の街歩きをしている際に「明治」を感じる瞬間が増えてきたので、「明治人を知りたい」欲がちょうど高まりつつあった。

なるべく衣食住・人付き合いを単純にして、ストレスフリーで理想の生活を追求しつつ、仕事や趣味に没頭しようしていた人たちの記録が紹介されている。

その発想と実践は、虚礼を排し、実用を重じた合理的な生活をしようとしている一部の現代人たちに通じるものがあるな、と感じるとともに、自分が理想としている生活にも近く、客観的な説明を他人に求めされた際に参考としたい内容であった。

簡易生活の詳細とまとめは本書に譲るとして、以下の一節にて、私の手は思わず止まった。

簡易生活では趣味がなければ生活もないし、生活がなければ趣味もないとされている。

(中略)

趣味は個人で楽しむものであり、その世界では他人の評価に意味などない。

他人と同じことを、いや、他人よりも特別なことをした時間の写真をSNSに”映え”させるのを趣味とした現代人たちよ…と、(自分も含めて)戒めになる一文であった。

他人と自分を重ね合わせたり、比較することで得られる感情は、本来の「幸福」ではないし、その行為は「趣味」ではなく、簡易生活からは程遠い、疲れる生活を生み出す行動である。

日々失敗だらけ間違いだらけの生活を送っている私だが、失敗を恐れず改善すればそれで良い、と言うのが簡易生活の始め方に習い、ガンコを抑え、学びを増やしながら、理想のくらしを追求していきたい。

Windows Server 2016(ドメインコントローラ) の時刻同期ができない

NTPクライアントの設定をしていたつもりが、できていませんでした。

TL;DR

ドメインコントローラは、Windows NTPクライアントの構成にて、Typeを「NTP」にしてあげる必要がある。

やったこと

  • Windows NTPクライアントの構成」にて、NICTのアドレスを設定 (グループポリシーエディター)
  • Windows NTPクライアントを有効にする」 を適用 (グループポリシーエディター)
  • Windows Time」サービスの再起動

現象

コマンドで同期をしようとすると、以下のようなメッセージが表示される。

時刻データが利用できなかったため、コンピューターは同期をとり直しませんでした。

f:id:etupirka_h:20181223024003p:plain

よく見るとソース名がNICTではなくて、"LOCL"(=ローカル?)となっています。ここに問題がありそう。

f:id:etupirka_h:20181223025020p:plain

C:\Windows\system32>w32tm /query /source
Local CMOS Clock

やっぱり、ローカルを参照している。

試したみたこと(結果的に効果がなかったこと)

1. w32tmコマンドで設定の確認

Windowsで時刻同期が正常に出来てるか確認する方法。w32tmコマンド | puti se blog

2. 設定のやり直し(w32tmコマンドベースで)

ドメインの時刻をNICTのNTPと同期させる

3. レジストリの確認

Windows TImeがCMOS Clockになって困った話 - Qiita

レジストリ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient InputProviderの値が0(無効)になっている

Enabled=1かつInputProvider=1じゃなきゃいけない、という話。こんな項目がある日突然変わるのこわい…。

結論

ドメインコントローラの挙動を理解していませんでした。 以下に似たようなQ&Aを発見。

ドメインコントローラが外部NTPサーバと時刻同期できない

まず、グループポリシーの設定を拝見しましたが、 結果的には間違いなく「[Default Domain Controllers Policy]でNT5DS設定を強制している」ということが、 PDCでw32tmコマンドが使えない原因です。 また、この設定では外部NTPサーバに同期することはありません。 Typeレジストリ値に「NT5DS」を設定した場合、クライアントとドメインコントローラでは挙動が異なります。

・クライアント:ログオンしたドメインコントローラから時刻同期を行う(動的に内部決定)

ドメインコントローラ:PDCエミュレータに対して時刻同期を行う

な、なるほど・・! Typeの項目、設定時にちょっと考えた記憶があったのですが、ドメイン参加ならデフォルトのまま、WORKGROUPならNTPに変更、くらいの浅い認識でした。

「Type」のフィールドはドメイン外コンピュータであれば「NTP」に変更します。 ドメイン参加コンピュータであれば、デフォルトの「NT5DS」のままで OK です。 Windows Server 2016 : NTPクライアントの設定 : Server World

TypeをNT5DS→「TYPE」に変更して、無事解決。 以下のコマンドで、徐々に時計が正しい時間に近づいて入っていることを確認。

w32tm /stripchart /computer:ntp.nict.jp

f:id:etupirka_h:20181223031121p:plain

Windows Serverに触った知識がなかったので、勉強のためWindows Serverをご家庭に導入してみていたのですが、まさに想定通りの間違い&学びの経験が得られました。

Google Cloud Next 2018 Extended BigData & ML Dayに行ってきた

gcpugのイベントに行ってきた。

初めて参加してみたけど、Googleエバンジェリストの人って説明上手でスライド美しい凄いなぁー、と変なところで感動しました。

もう1つオマケに、Google凄いなーと思ったのは、機械学習/深層学習の前準備を代行してくれる(猫画像の分類とかをしてくれる)サービスがGoogleにあるらしく、それを登壇者が「パートのおばちゃんが画像の仕分けをしてくれる」と表現した際に、表現が不適切、と指摘する人が居たこと。

現実時点で、#gcpugでツイッターを検索すると上記の発言がトップに出てくる。

某!の勉強会では、不適切な発言がそのまま記事になって後日大炎上ということも記憶に新しいので、技術者同士でこういったことを指摘し合うのは大切なのだな、と思いました。

自分も「パートのおばちゃん」という完成された響きに笑ってしまった人の1人なので、気をつけなくてはいけませんね。

WindowsServerバックアップでSSDのお引っ越しをする

自習のため、windows Server(評価版)を運用しています。

同じマシンの別のSSD to SSD でデータの移行をやってみました。 環境は以下の通り。

余談ですが、「Intel SSD 660p」はwindows Server 2016 に対応していない & 未対応なため、せっかくのNVMeディスクなのに、期待する速度を出せませんでした。

TL;DR

「WindowsServerバックアップ」は、お引っ越しにも使えます。

ツール選定

ディスクの移行ツールとして最初に思い浮かんだのはEASEUS Partition Masterでしたが、(Freeで使えるのは個人利用だけのため)Server OSは商用利用とみなされてしまい、Free版でのパーティション操作は不可。EaseUS Todo Backup も試してみたけど、同様にダメです。 Pro版的な位置づけなのを買ってもいいかなーと思い始めるも、Server対応になるともの凄く高い...。

Intelのデータ移行ツール(Acronis True ImageOEMらしい)も、同じ理由でアウト。

仕方がないので「WindowsServerバックアップ」を使うことに。 使ったことがなかったので、「役割と機能の追加」から追加インストールしました。

この後の手順は、以下が参考になります。

パーティションサイズの縮小 & バックアップ

お引っ越し先のディスクの方が小さいので、先にパーティションを縮小しておきます。 こちらもWindowsの「ディスクの管理」から実行。(有料ツールだとここらへんを手間フリーでやってくれます。)

バックアップはボタン1つで。 上の記事ではネットワークドライブにコピーしていましたが、ローカルの余ってるHDD(SATA接続)を指定しても、この後の手順と同じように実行できました。

リストア

復元は、Windows PEのディスクを作って、ディスクからブートして行います。 自分の場合はWindows Serverのインストールのときに作ったインストールディスクが残っていたので、それを使いました。

※ ちなみに、最初はたまたま手元にあったWindows7のインストールディスクを使ってみたが、対応していない、と怒られてしまいました・・。

トラブルシュート

0x80042412 システムディスクの回復に使用できるディスクが見つかりません。

1回目の復元では、残念ながらエラーですぐに止まってしまいました。 エラーコードで調べると「移行先のディスクが小さい場合に起こる」と書かれていたが、今回は先にパーティションの縮小を行っているので該当なし。 念のためパーティションをできるだけ縮小して259GBくらいまで絞ってもやっぱりダメ。

0x80042412エラーでシステムイメージを復元できない - マイクロソフト コミュニティ

システムイメージ作成時と同じディスク容量、同じパーティション構成にして実行してください Windowsのバックアップ機能で作成したイメージは作成時と同じ環境が必要です

1つ気になったのはこれを試してみる。結論から言ってこれで成功しました。 新規のディスクに対して、バックアップ前のディスクと同じ構成・サイズになるように、ポチポチとパーティションの設定をしなさい、ということです。

物理障害でディスクがお釈迦になった時は、どうやって同じパーティションを再現すれば???このバックアップツール本気で使う人いるの????とちょっと不思議は残ります。 (業務で作ったサーバなら、設計書にパーティションサイズくらい書いてある…か?)

GPTパーティションを作成(再現)する

起動ディスクに入っているコマンドプロンプトからdiskpartをぽちぽちと打ってパーティションを作成しました。

帰ってきた徒然苔: Windows10でもやっぱり増殖する回復パーティション

DISKPART> list partition

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    回復                 450 MB  1024 KB
  Partition 2    システム               100 MB   451 MB
  Partition 3    予約                 16 MB   551 MB
  Partition 4    プライマリ              XXX GB   567 MB

上の状況を再現することを目標とします。 コマンドは以下の通り。

回復パーティション

create partition primary size=450
format quick fs=ntfs
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001

EFIパーティション

create partition efi size=100
format quick fs=fat32

MSR用パーティション

create partition msr size=128

Cドライブ用パーティション

create partition primary
format quick fs=ntfs

回復ドライブを作成する際に、set id=27と打ったら怒られました。 GPTでは呪文が変わったそうで、set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"としなければならないそう。

このコマンド、長いですね~。持ち込み禁止の現場でサーバ設定をやっている皆さん、今日も本当にお疲れ様です!(唐突)

0x81000036エラー

ここまでやってまたエラー発生。 特に有益な情報はヒットしなかったので、前のサイズとぴったり合わせてつくったCドライブ用のパーティションを、なんとなく大きくしてみたら問題が解決した。 回復/EFI/MSRパーティションあたりはサイズを合わせる必要があるが、単にNTFSのデータ用パーティションはどんなサイズでも良かったらしいです。 (リカバリ実行後には、このパーティションは削除されて、リカバリ元のパーティションのサイズになっていた)

まとめ

  • WindowsServerバックアップを使うとServerエディションのWindowsでも無料でお引っ越しが出来る。(普段の障害対策のバックアップでは微妙かも)
  • 新規のディスクに「復元」したい場合、回復/EFI/MSRパーティションの容量を合わせて作っておく必要がある(データ用パーティションのサイズチェックはそんなに厳格ではないみたいです)
  • Intel SSD 750 は快適です!

Ubuntu 16.04 LTSでBondingをやってみた

中古の4ポートの1GbE NICがすごく安く流通しているのに気づいたので、自宅サーバ(兼NAS)用に入手してみた。 以下の製品が3,000円だった。

2ポートの10GbENICも5,000程度で買えるみたいけど、インターフェイスがSFP+ だし、対応スイッチはまだ高いし…ということで自重しておいた。(趣味マシンへの導入するなら、玄人志向の20,000弱する10GbE NICを新品で買うよりも良い気がする)

前提知識

Bondingのモードや負荷分散方式については、以下で確認した。

modeは4(802.3ad、LACP)で、ハッシュポリシーはxmit_hash_policy=2(layer2+3) を設定する。

設定

NICは差しただけでenp1s0f[0-3]として自動で認識された。 サーバ側の設定は以下を参考にした。

ほぼほぼリンクの通りでいけたのだが、以下の点だけ修正して対応した。

NICに出来るだけ均等に働いてもらいたいので ネットワークインターフェイスの設定で xmit-hash-policy layer2+3 と記載したのですが 上記cat /proc/net/bonding/bond0を見ると layer2となっていて思った通りの動作をしていません。

/etc/network/interfaces へのxmit-hash-policyの書き方がよろしくなかったようだ。 「他の行と違って、この行だけbondからはじまってないな~」くらいの気持ちで以下のように修正したら、期待通り、layer2+3で動作した。

(変更前)

auto bond0
iface bond0 inet static
address 192.168.1.10
gateway 192.168.1.5
netmask 255.255.255.0
dns-nameservers 192.168.1.5

bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate 1
bond-slaves eno1 enp5s0f0 enp5s0f1
xmit-hash-policy layer2+3

(変更後)

auto bond0
(中略)
bond-xmit_hash_policy 2

スイッチにもLACPのイーサチャンネルを作成した。

結果

試しに他のマシンからパケットを送りつけてみると、4つのポートがランダムに光って楽しいことがわかった。 それ以外に、オンボードRealtek)のLANよりも少し高速化した気もするけど、Bondingのおかげというより、IntelNICだから(気持ち分だけ)速いんじゃないかと思う。

「マシンAで写真のバックアップをかけながら、マシンBでサーバから動画を持ってきて…」なんてときにはネットワークが原因で詰まってる感じがしていたので、そこらへんの改善が実感できたら嬉しい(ボトルネックがI/O等にシフトしているだけかもだけど)。

いずれにしても定量的に把握出来たら良いので、今度は複数台のマシンから高負荷をかけるような検証をしてみたい。

スイッチ側の設定とLinux側の設定の組み合わせについての理解が浅いので、そこらへんもう少し勉強しよう。

H29 ネットワークスペシャリスト受験、雑感

雑感

  • 午前Ⅱの最後の5問は知識がなくてなんとなく答えた。5問続くとその後に不安が残る
  • 女子トイレよりも男子トイレが混んでる状況はぞっとしない
  • 午後Ⅱで選択番号を囲んだ記憶はない(たぶん最初にやってる)忘れるくらいに問題文も試験時間も長い

追記

本当に問題を選択していなかった…。

CiscoルーターでVPN(L2TP)

自宅ルータをYamahaからCiscoに切り替えた。 VPNは以下の手順を参考に設定した。

Windows10やiPhoneからVPNが張れることは確認できたのだが、一部サイトへの接続ができなかった。 具体的には、supportforums.cisco.comやspeedtest.netに接続できない。どちらもhttps

PPPoEでも同じことを経験したので、それを思い出してMSSを追記したら見られるようになった。

interface Virtual-Template1
 ip tcp adjust-mss 1240

MSSは以下のように設定。 MSS = mtu - 20(IPヘッダ) -20(TCPヘッダ) = mtu - 40

MSSが必要かどうかは、プロバイダによるものなのかも。

環境(参考)

  • ルータ:C891FJ-K9
  • プロバイダ:so-net