ハードウェア」カテゴリーアーカイブ

ASUSTOR DataSync Center の HDD アクセスを静かにする

どうもみむらです。

時代の流れに沿って(?)最近 NAS を買ってみました。

録画データを置いておいたり、時々使う ISO ファイルの保存場所に使ってみたり DLNA で色んな機器から触れるようになって QoL があがったりと「NAS は良いものだ」なんて感じている今日この頃です。

DataSync Center というソフトを入れると、外部のクラウドサービスとも同期してくれるので、スマホで撮った画像をクラウド経由で NAS に入れて DLNA で触れるようになったり・・等々、とても QoL が上がっております。

ただそんな NAS と DataSync Center なのですが、このソフトが常時 HDD にアクセスに行くために夜中も音がしてしまい、これは精神衛生上よろしくないので静音化を図ることにしてみました。


内容について

紹介する内容を実施した後で不具合が発生しても、私自身は責任を負えないため自己責任でお願い致します。

下記の内容としては稼働中の datacenter のメタデータを tmpfs に配置して解決というものになります。後半に作成物がありますので、お急ぎの方はそちらを参照ください。


1. 原因を追う

1.1. entware のインストールと SSH アクセスの許可

DataSync Center が何にアクセスしているかをトレースするため
entware のインストールと、SSH アクセスの許可を行います。

App Central から entware-ng インストール

以上の手順を踏むと “/opt/bin/opkg” から entware のパッケージマネージャが使えるようになります。


1.2. strace で挙動を見る

sudo su 等で root に登った後、下記のコマンドでインストールします。

なお opkg のパッケージは基本的に /opt 以下で触れるように配置されます。
またそれらのデータ群は /usr/local/AppCentral/entware-ng/opt/ 以下にシンボリックリンクが張られるようになるため、App Central から entware を削除すると、同時に opkg で入れたファイル群も削除されるようです。

# /opt/bin/opkg update
Downloading http://bin.entware.net/armv7sf-k2.6/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/entware

# /opt/bin/opkg install strace
Installing strace (5.10-1) to root...
Downloading http://bin.entware.net/armv7sf-k2.6/strace_5.10-1_armv7-2.6.ipk
Configuring strace.

次に ps コマンドでプロセスを探します

# ps | grep datasync
 3442 root       0:00 grep datasync
 5145 ***** 1295:0 /usr/local/AppCentral/datasync-center/bin/datasync_center 1

上記の例では PID は 5145 になっていることが分かります。
では strace でアタッチして挙動を観察しましょう。

# /opt/bin/strace -p (PID)
(上記例の場合は /opt/bin/strace -p 5145 と入力する)

gettimeofday({tv_sec=1619546282, tv_usec=544859}, NULL) = 0
gettimeofday({tv_sec=1619546282, tv_usec=544976}, NULL) = 0
gettimeofday({tv_sec=1619546282, tv_usec=545057}, NULL) = 0
stat64("/usr/builtin/etc/ldapclient/asldapclient.conf", 0xbead4188) = -1 EACCES (Permission denied)
stat64("/etc/passwd", {st_mode=S_IFREG|0644, st_size=461, ...}) = 0
open("/etc/passwd", O_RDONLY|O_LARGEFILE) = 12
read(12, "root:x:0:0:,0,,root:/root:/bin/s"..., 461) = 461
close(12)                               = 0
stat64("/etc/passwd", {st_mode=S_IFREG|0644, st_size=461, ...}) = 0
open("/etc/passwd", O_RDONLY|O_LARGEFILE) = 12
read(12, "root:x:0:0:,0,,root:/root:/bin/s"..., 461) = 461
close(12)                               = 0
stat64("/etc/passwd", {st_mode=S_IFREG|0644, st_size=461, ...}) = 0
open("/etc/passwd", O_RDONLY|O_LARGEFILE) = 12
read(12, "root:x:0:0:,0,,root:/root:/bin/s"..., 461) = 461
close(12)                               = 0
stat64("/etc/nas.conf", {st_mode=S_IFREG|0644, st_size=3257, ...}) = 0
open("/etc/nas.conf", O_RDONLY|O_LARGEFILE) = 12
read(12, "[Basic]\nModel = AS1002T\nVersion "..., 3257) = 3257
close(12)                               = 0
lstat64("/share", {st_mode=S_IFDIR|0755, st_size=1024, ...}) = 0
lstat64("/share/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/share/home/*******", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/share/home/*******/.datasync-center/connections/1/user_info.json.lock", O_RDWR|O_CREAT|O_LARGEFILE|O_CLOEXEC, 0777) = 12
flock(12, LOCK_EX)                      = 0
open("/share/home/*******/.datasync-center/connections/1/user_info.json_5145.tmp", O_WRONLY|O_CREAT|O_TRUNC, 0644) = 15
write(15, "{\"quota\":1131723882496,\"normal\":"..., 109) = 109
close(15)                               = 0
rename("/share/home/*******/.datasync-center/connections/1/user_info.json_5145.tmp", "/share/home/*******/.datasync-center/connections/1/user_info.json") = 0
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 15
_llseek(15, 0, [0], SEEK_CUR)           = 0
fstat64(15, {st_mode=S_IFREG|0644, st_size=461, ...}) = 0
mmap2(NULL, 461, PROT_READ, MAP_SHARED, 15, 0) = 0xb6faa000
_llseek(15, 461, [461], SEEK_SET)       = 0
munmap(0xb6faa000, 461)                 = 0
close(15)                               = 0
geteuid32()                             = 1000
chmod("/share/home/*******/.datasync-center/connections/1/user_info.json", 0700) = 0
flock(12, LOCK_UN)                      = 0
close(12)                               = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({tv_sec=1, tv_nsec=0}, 

定期的な read は良いとしても 「user_info.json_5145.tmp という名前でファイルを書いて、 user_info.json を消して、user_info.json に置換する」というのを定期的に行われるのは、やはりあんまり心臓にもよろしくないですね。。

ということで、これらを tmpfs に配置するようにしてみます。
(ディスクの書き込み先を RAM 上に作成したドライブに変更して、ディスクへの書き込みを行わせない)


2. データを tmpfs に配置するようにする。

2.1. 現在のデータをコピーして取っておく

方針としては、起動時・シャットダウン時にメタデータをコピーしておき
稼働中は tmpfs に対してずっと書かせるようにしてみます。

/share/home/(USERNAME)/.datasync-center/connections 以下のデータがずっと読み書きされていますので、connections 以下を tmpfs にするように丸っとコピーを取ります。

# /volume1/.@plugins/etc/init.d/K50datasync-center start
(DataSync Center を停止する)

# cd /share/home/(USERNAME)/.datasync-center/
( ユーザ名が hogeo であれば cd /share/home/hogeo/.datasync-center/ になる.)

# ln -ln
(UID,GID を調べておく. 下記の例では UID=1000, GID=100)
drwxrwxrwt    3 1000     100             60 Apr 23 11:55 connections

# cp -R connections original_connections
(コピーを取る)

# cd original_connections
# find -name "*lock" | xargs rm
# find -name "pid" | xargs rm
# find -name "sock" | xargs rm
(最後3つは誤作動の原因になりそうなものの削除です)

2.2. 起動時・シャットダウン時の挙動をサービスとして記述する

下記のサイトを参考にすると “/volume1/.@plugins/etc/init.d/ ” あたりにスクリプトを配置すると幸せになれそうですので、ここにスクリプトを記述していきます。

Digging in to the Linux install on a NAS
https://ljones.dev/blog/digging-into-nas/

基本的には下記2つのスクリプトを作成するだけです。


/volume1/.@plugins/etc/init.d/S01prepare-datasync-center

このスクリプトでは既存の connections ディレクトリを削除して tmpfs (かつ UID, GID はユーザに合わせる) をそこにマウントさせた後、コピーしておいたものを書き戻す処理になります。

下記スクリプトを利用される際は (USERNAME) 部分および (UID) 部分をご自身の環境に合わせて書き換えてください。

#!/bin/sh -e

rm -rf /share/home/(USERNAME)/.datasync-center/connections
mkdir /share/home/(USERNAME)/.datasync-center/connections
mount tmpfs -t tmpfs /share/home/(USERNAME)/.datasync-center/connections -o uid=(UID),gid=100

cp -R /share/home/(USERNAME)/.datasync-center/original_connections/* /share/home/(USERNAME)/.datasync-center/connections/
chown -R (UID):100 /share/home/(USERNAME)/.datasync-center/connections/

/volume1/.@plugins/etc/init.d/K99store-datasync-center

このスクリプトでは既存の connections ディレクトリの中身を待避させ、かつ誤作動の原因になりそうなものを削除する内容になります。

上記同様、下記スクリプトを利用される際は (USERNAME) 部分および (UID) 部分をご自身の環境に合わせて書き換えてください。

#!/bin/sh -e

cp -R /share/home/(USERNAME)/.datasync-center/connections/* /share/home/(USERNAME)/.datasync-center/original_connections/
find /share/home/(USERNAME)/.datasync-center/original_connections/ -name "*lock" | xargs rm
find /share/home/(USERNAME)/.datasync-center/original_connections/ -name "pid" | xargs rm
find /share/home/(USERNAME)/.datasync-center/original_connections/ -name "sock" | xargs rm

上記二つのスクリプトを書き上げた後は chmod で実行権限を与えることを忘れずに。

# vi /volume1/.@plugins/etc/init.d/S01prepare-datasync-center
( スクリプトを書く。書き上がったら :wq で抜ける )
# vi /volume1/.@plugins/etc/init.d/K99store-datasync-center
( スクリプトを書く。書き上がったら :wq で抜ける )
# chmod 755 /volume1/.@plugins/etc/init.d/S01prepare-datasync-center
# chmod 755 /volume1/.@plugins/etc/init.d/K99store-datasync-center

2.3. NAS を再起動して動作することを確認する

再起動後に root で mount コマンドを実行して tmpfs がマウントされていることを確認します。

# mount
rootfs on / type rootfs (rw)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /tmp type tmpfs (rw,relatime)
/dev/md0 on /volume0 type ext4 (rw,relatime,data=ordered)
/dev/loop0 on /share type ext4 (rw,relatime)
/dev/md1 on /volume1 type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
/dev/md1 on /share/home type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
/dev/md1 on /share/Web type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
/dev/md1 on /share/Music type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
/dev/md1 on /share/Photos type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
/dev/md1 on /share/Pictures type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
/dev/md1 on /share/Movie type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
/dev/md1 on /share/MSDN type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
/dev/md1 on /share/Media type ext4 (rw,relatime,data=ordered,jqfmt=vfsv1,usrjquota=aquota.user,grpjquota=aquota.group)
tmpfs on /share/home/******/.datasync-center/connections type tmpfs (rw,relatime,uid=****,gid=100)

また DataSync Center を開き、正常に動作していることを併せて確認します。


3. 後片付け

App Central から entware-ng の削除 (インストールした場合) と、

SSH の無効化を忘れずに行っておきましょう。


ということで・・。

ここまで完了すると、HDD への DataSync Center による常時アクセスが無くなるため、 “Disk Hibernation” の設定に従って、未使用時間は眠ってくれるようになります。

快適な睡眠も得られて、めでたしめでたし・・です!
(書いてる時間的に寝られているのか、というのは一端脇に置いておきましょう)

素敵な NAS ライフをー!

PrimoCache を使って Intel の最新チップセットでも HDD を SSD を使って高速化する

どうもみむらです。
先日 PC が故障しまして第9世代の Intel CPU (i7-9700) を用いて組み直していました。

故障する数日前からビープ音(長音)の連続で起動に失敗したりしていたので
なんか気持ち悪いなとは思っていたのですが。。

テレワークが推奨されており、お仕事に甚大な影響が出ることもありましたので
ツクモ電機さんのレジの横にあるリーダーにクレジットカードをシャコシャコッと何度も差し入れしてきました。。来月の引き落としに今から震えています。

ただ今回買い換えを行ってみて
Intel Smart Response Technology (iSRT, HDD を SSD キャッシュで高速化するやつ) が
Intel Optane Memory との組み合わせ専用かつ、RAID 不可に変更
されており
iSRT を使って RAID-5 を高速化していた身としてはかなりショックでした。。

では iSRT の代替としていいものは無いのかと探していたところ
PrimoCacheという良さそうなものを見つけたので試してみました。


PrimoCacheとは

HDD を SSD でキャッシュして高速化するソフトです。
まさしく Intel の Smart Response Technology で実現していたものを実現してくれます。

ほかにも FuzeDrive (AMD 環境では StoreMI という名前で提供されています) というソフトなどもありますが、いくつか試してみたところ PrimoCache がよさそうな感じでした。

PrimoCache は Romex Software 社の製品で、1つ当たり $29.95 の製品になっています。
https://www.romexsoftware.com/en-us/primo-cache/

なお私自身はメーカーさんから
今回の記事に関して何か支援を受けてはいませんのであしからず。。

PrimoCache の設定をする

左上のボタンを押してドライブを追加します。

図3 : ドライブの追加ボタン

次の画面で「高速化したいドライブ」を選択します。

図4: 高速化したいドライブを設定。今回は Intel RAID 1 ドライブ。

次にキャッシュの方法についての設定です。
Level-1 Cache が “DRAM 上” のキャッシュ、 Level-2 Cache がストレージとなります。

またキャッシュについては文字通り Level1, Level2 の階層構造になっています。

今回の場合は SSD キャッシュのみを有効にするため、
Level-1 Cache は 0MB に設定します。

図5: Level-1 Cache を 0MBに設定する

次に Level-2 Cache を設定するために、画面中央の小さなボタンを押下します。

図6: Level-2 Cache の設定ボタン

ボタンを押下すると次のような画面が表示され
キャッシュ用のドライブを選択する画面になります。

今回は Intel Optane Memory を使うため
INTEL MEMPEK.. で始まるドライブを選択します。

注:もちろん Intel Optane Memory を使わずに通常の SSD でも利用可能です。
注2:認識されている容量が小さい場合は何らかのパーティションを作ってから再試行してみてください。

図7: キャッシュ用ドライブを設定している図¥

設定後、 “Size” を “MAX” に変更し、その横にあるボタンを押下します。

図8: キャッシュ設定を行う

特に何もなければ
“Individual Read/Write Cache Space” のチェックを無効にします。

これが ON の時はそれぞれのキャッシュが設定した割合で行われますが
無効の場合は割合を気にせずに Read / Write キャッシュを行うようになります。

図9: Read/Write Cache の割振設定を無効にする。

最後にお好みで Defer-Write (遅延書き込み) の設定を行います。

遅延書き込みを有効にすると応答速度が速くなりますが、
ディスクへの書き込み(キャッシュ内容の反映)が遅くなります。

図10: 設定がほぼ完了した図

設定が完了したら “Start” を押下します。

画面UI について

稼働を始めると下記のようにキャッシュ率などが表示されます。

図11: 稼働が開始した画面

ある程度動きはじめたら、画面を閉じて仕事に戻りましょう。


冒頭のとおり PC の故障で買い替えたところ
Intel RAID 構成に対する SSD キャッシュが使えなくなって呆然としていたところ
こういうソフトを見つけることができてよかったです。。!

また前回の構成では Intel RAID の RAID-5 だったのですが
iSRT が有効な環境だと最新のマザーボードや mdadm ではマウントできず焦りましたが
dmraid を使うことでマウントができました。

PrimoCache の場合は Intel RAID と SSD Cache が別の機構なため
同じようにマウントできなくなることは(きっと)ないと思いますし安心です・・!

ではでは、素敵なテレワークライフを!

サーバマシンを入れ替えました。

どうも、みむらです。

ある夜。
サーバに設定しておいたプログラムが書いたとおりに動作しなくなり、
直すか、と。

自動でアップデートするようには(当時)設定していませんでしたし、
おかしくなる前1ヶ月程度は、特にログインして設定変更をしたりもしていませんでしたので、

ある意味で

image

というような感じになっていました。

ニコニコ大百科の下記の記事を見てみますと、
何もしてないのに壊れたとは (ナニモシテナイナラコワレナイとは) [単語記事] – ニコニコ大百科

賢明な読者諸君にはお分かりの通り、基本的に何もしなければパソコンは壊れないのである。

ということだそうですが、壊れるよ!

 

下の方、色々と雑談が書いてありますが、
技術的な内容に関しては半分から下の方に書いてあります。

 


 

まず試すのは、再起動ですよね。でもこれが「決定打」でした。

reboot とコマンドを打つと、
I/O エラーの表示がぼこぼこ出ながらシャットダウンが進行し、
そのまま電源が切れました

あれ、コマンド間違えたかな・・と電源ボタンを押すのですが、電源は入らず。
CMOS クリアすればいいかな? とやってみるも入らず。

電源経路に問題が起きたかな・・とサーバマシンまでの電源経路を確認してみるも
正常に給電できている。

 

そんなわけで、電源かマザーボードか、その他パーツが壊れているのかな・・と思い
とりあえずマザーボード変えてみるか・・ということで買うことにしました。

 


 

そういえば・・

大阪はいいところですね。
ビールで人間、ここまで幸せになれるとは思いませんでした。

なんでこんなことを書いたのかと言えば、
CTF for ビギナーズ 大阪 が “CTF だけ” という内容で開催されたのですが、
あのときに丁度、マザーボードと一緒に大阪市内を行動していました。

 


 

というわけで帰宅後、
マザーボードが用意できまして
電源を繋いでみますとちゃんと電源が入って UEFI の画面が出てきまして、
「おっ、これでいける・・!」と。


そのときは環境を移行するにしても、別にやる事がありましたので
後回しにしよう・・と数日眠らせることに。

 

・・どうでもいいですが、やはり何かに集中しすぎて、
「気づかないストレス」が貯まっている時は恐ろしいものですね。

メモリは増やした方がいいんじゃね!」とか
「そういや、サーバを SSD にしたらうるさくなくていいかも!」と
ふらっと秋葉原の九十九さんにいって買ってきてしまいました。

 

 

店に行って何か買い物をすると、
一時的にストレスが吹っ飛ぶのもあって、こう、実にクレジットカードというものは恐ろしい

 

なんだかんだ今年を軽く振り返ると、結構根詰めると、
「目の前にある一番優先度の高いことを熟す」か「ストレス解消が出来るものをする」の
どちらかのみしかしなくなることが分かりました。

そんなわけで最近は、
最長でも半日ぐらいのクオンタムなプリエンプティブ・マルチタスクな感じ
割当て時間は短くても、一通り全部の平行している事に手を出そう・・と思いました。
LINE しかり、Twitter しかり、Facebook しかり。。

 

 


 

サーバ構成

さてさて。閑話休題。

そんなわけでサーバ構成はこんな感じになりました:

マザーボード ASRock N3050B-ITX  / 9千円ぐらい.
(Intel® Dual-Core Processor N3050)
メモリ CFD W3N1600Q-L4G / 6,782 円
ストレージ SanDisk SD8SBAT128G (@5,480円) * 2 = 10,960 円
ケース 流用.
OS Microsoft Hyper-V Server 2016 (!)

最初は Linux を直に走らせる予定だったのですが、
「Intel VT が乗っている・・? Hyper-V 上で動かしてみるか」とやってみたところ、
これが思ったよりも快適に動作してしまったのでこのまんま、という感じです。

 


 

動かしてみてどうよ

Hyper-V Server は RSAT を使って他の Windows マシンから管理します。
ネットワーク構成はこんな感じ(とっても端折ってます。

 

image

 

でもって、実際の Hyper-V マネージャの状態はこんな感じ。

 

image

 

そして、普段動かしている状態で、
サーバの CPU 使用状況はこんな感じになっています。

image

 

なんだかんだ、Linux 3台起動してごにょごにょやっていても、
CPU は普段省電力な状態になっていて、
熱をそこまで発生しないため ファンは普段止まっています。
SSD 構成なのもあってうるさく無いですし。

 

Facebook や Twitter に記事のリンクを貼り付けて、アクセスが一気にやってきたときも、
大体 0.8 Ghz あたりまでで全部捌ききってしまいますので、
このあたりはさすがだな・・と。

 

また Hyper-V 上に乗っているため、
何か大きな変更を加えようとしたときにはチェックポイントを設定できますし、
VLANを切ったり、通信をミラーさせたり、ソフトウェアベースで自由自在に出来るため、
色々と遊べるな・・とニヤニヤしています。

 

ただ、悪い点もありまして、
まず、Hyper-V マネージャで VM の画面を表示したときと、
スパム業者がコメントを連投してきた時に
CPU のクロックが 1 Ghz 程度にひょこっと上がることがありまして、
このあたりに関しては・・どうしようもないのかなと。

 


 

サーバの設定など。

 

ゲスト環境:

ゲストでは CentOS 7 x86_64 が動いています。
でもって、通信周りはいったん Router VM がすべて受け付けて、
その後 Web サービスと メールサービスに分かれて各 VM が受け付けるようになっています。

 

あとは SELinux を有効にする・・とか。

もしいい感じの設定が分からない場合は、
基本的にはデフォルトの設定を見て、自分の環境に合わせた変更をすればいいのかな、と思います。

たとえば、ウェブサーバのファイルであれば
“semanage fcontext –l | grep /var/www”
などを実行して雰囲気をみたり、

ポートであれば
“semanage port –l | grep http” として雰囲気をみたり。。

その他、設定方法については
SELinux で restorecon してあうあう – みむらの手記手帳
を見て頂ければと思います。

 

ウェブサーバは Apache で動いていますが、MPM は “event” で稼働しています。

・・なんとなく、 nginx は早いよ! という指摘に対して
“Apache はどこまでいけるん?” と気になったというのが理由で、
実際そこまで Apache に愛着はあんまりありませんが、
やってみたところ「早いな」と思ったのが印象です。

 

 

ホスト環境:

サーバに関しては、 Hyper-V Server 2016 のテクニカルプレビュー版を使っています。

「面白いな」と思うところとしては、
このように Linux が セキュアブート有効な状態で起動できる、というところでしょうか。

image

第一世代ですと、余計なエミュレーションが走るとのことで、
第二世代で稼働できるというところはいいな・・と思うのですが、
実際どうなのか・・というところは、全く検証できていませんので、「気持ちの上で」ということにさせてください。

 

それと、これはもしかすると前のバージョンの Hyper-V でも対応出来ていたのかもしれませんが、
ゲスト OS で /proc/cpuinfo を見ますと、flags に ”aes” が含まれていまして、
AES-NI が使えるのかな・・?とぼんやり期待しています。

その一方で “avx” が出てこないのは、なんだかなーとも思いますが。

 

 

それと、これは MS 的には非推奨だと思いますが、
C ドライブをミラー状態にしてあります。

image

あんまりおすすめしませんが、
次のように操作すれば作成できました:

1. Hyper-V Server を GPT 形式で通常通りインストールする。
2. Linux で起動してパーティション情報をコピーする。

コピー方法 (/dev/sda の情報を /dev/sdb にコピーする場合)

sgdisk -R /dev/sdb /dev/sda
sgdisk -G /dev/sda

やっている事としては、1行目でパーティション情報をまるっとコピーして、

2行目で GUID を再生成する・・という動作になります。

もしディスクが片方使えなくなってもシステムが起動できるようにする場合、

回復パーティションや efi ファイルが入っているパーティションを dd でコピーしておきます。

dd if=/dev/sda1 of=/dev/sdb1 bs=32M
dd if=/dev/sda2 of=/dev/sdb2 bs=32M
dd if=/dev/sda3 of=/dev/sdb3 bs=32M

 

3.  C ドライブ部分に該当するパーティション(一番最後にある大きいパーティション)を消す。
4.  Hyper-V Server を起動して、2つともダイナミックディスクに変換する

diskpart コマンドにて、次のコマンドを入力します:

select disk 0
convert dynamic
select disk 1
convert dynamic

5. C ドライブのパーティションをミラー設定にする。

diskpart コマンドにて、次のコマンドを入力します:

list volume
 -- ボリュームの一覧がここで出てきます --
select volume (C ドライブのボリューム番号)
add disk=1

 

今のところこれで問題なく動作はしているようですが、

サーバ構成がぶっ飛んだときにどこまで戻せるか、というのは今のところ不明です。

Microsoft としてもこの構成は推奨していないと思います。

( RAID-1 構成を普通に組もうとすると怒られるため。

 


 

まとめ

そんなこんなで、

ちゃんと動くのか、障害発生時はどこまで対応出来るのかというところは

色々と未知数なところはありますが、

現時点において省電力管理のしやすい自宅サーバができあがったかな・・と。

 

もし N3050B-ITX のパワーがどんなもんか知りたい、という人がいましたら

このような感じで「個人的なサーバ用途には十分使えますよ」と答えられるかと思います。

現にこのウェブサイト自体が、このサーバ上で動いている、ということもありますし。

 

ただ、大きめのデータベース処理であったり、

動的コンテンツがいっぱいあるウェブサービスを動かそうとしていたり、

録画サーバでエンコード機能も持たせたいという場合は色々と考える必要があるかと思います。

ですが、石自体は AVX2 も搭載されていますし、

Intel Quick Sync Video も乗っているようですので、

上手く使えば動画エンコードも回せるのかもしれません。

(たとえば、夜にアニメを録画して、そのほかの時間でエンコードをするとか。)

 

・・・というわけで、使い方によっては色々と遊べるマザーボードだと思います。

Nikon D5300 で、再生画面にて詳細情報 (メタデータ) を出す

みむらです。

もう1年ぐらいになると思うんですが、実は一眼レフを持ってます。

_DSC0081

建物とかを取りたいわけじゃなく、ただ単に「面白そう」って思ったものを取ったり、
いい笑顔を記録に残しておこうとか。そんな感じですが。

でも持ってると、これはこれでめっちゃ面白いです。

DSC_0350

特に何も気にしなくても、こんな感じのボケる写真が簡単に撮れたりします。

 

持っているのは ニコン D5300, 18-140 VR レンズキット.
http://kakaku.com/item/J0000014511/

何となく持ち歩いて、ふとカメラを向けて撮影していますと、
友人の嫌そうな顔とか笑顔とか、わくわくした顔とか、
色んな表情がメモリの中に記録されていって、
見返すと、クスッと笑ってしまったり、ニッコリしたり。

建物を撮影してもいいですよね。
何度も行っている場所を夜にカメラを通して撮影すると、
急に幻想的な絵になったりで。

・・・そんなこんなで、やっぱりカメラっていいと思うんです。
撮影はどちらかというと下手っぴではありますが・・w

(下手の横ry

 


閑話休題。

カメラで撮影したあと良く、シャッター速度いくつーとか、感度いくつーとかそんな話になるんです。

・・・実際、そこまで気にせずに撮影する事が多くて(オートにしてしまうことが多々)
こうだったよーと即答する事が出来ないのですが、
まーそれでも、そのオートのシャッターがどの設定で動いたかは知りたいわけです。

 

レンダリングをすれば Exif として出てくるのですが、カメラの時点で知りたい。
マニュアルを見ていましたら、表示方法が書いてありましたのでメモ。

 

設定済みであれば、再生画面にて、
一枚表示の時に「マルチセレクター(中に OKボタン があるリング状のボタン)」の上もしくは下を押して表示を切り替えれば出ます。

 

ただ、設定していない場合は、上を押しても下を押しても変わりませんので、次の手順で設定。

1. 「MENU ボタン」を押してメニューに入る
2.「再生メニュー」より「再生画面設定」を選ぶ
3.「統合表示」にチェックを入れる (マルチセレクターで、右方向を押して切り替えます)
(撮影情報にチェックを入れても出ますが、統合表示が見やすいかと思います)
4.OKを押して設定を完了させる。

 

あとは再生画面にて一枚表示の際に、マルチセレクターで上もしくは下をおすと画面が切り替わり、
表示されるようになります。

 

・・・今後はもっと色々といじってみますかね・・w

YAMAHA ルータの設定を Visual Studio で書きやすく

どうもみむらです。
あけましておめでとうございます! ってやつです。

 

新春はやっぱり「書き初め」しますよね。
新年の抱負や決意をしたためるわけです。

 

私もしようとしていたんです。
絶対に LAN1/1 から開始する通信を LAN1 に流してはいけない、とか。

でもなんというか、書くための環境が気になって手を出してしまったところ
まだ書けていないのが実情です。

・・近いうちにやらないといけませんね。

 

今回はそんな中で生まれたツールをひとつ。


YAMAHA ルータコンフィグ用 Visual Studio 拡張

私も YAMAHA のルータを使うユーザの一人なのですが、
何かコンフィグを書くときに、無機質で疲れてくる、そんなことはありませんか。

YAMAHA NVR500 と OCN でひかり電話と IPv6

ヤマハルータと Hyper-V でネットワーク的な隔離環境を作ってみる

 

ふと昨晩思い立ちまして

作ってみました。

 


動作イメージ:

image

 

とりあえず、知られたコマンドとコメントアウトを色付けて、
知られたコマンドの後ろに続く文字列を緑色で着色する・・・そんな酷い実装なんですが
なんだかんだ見た目が良くなっているのでいいかなと! (ひでえ

あと、深夜のノリで IntelliSense も出るようにしてみました。
・・・これ出すために昨晩ページをスクレイピングしてすいませんでした >ヤマハの中の人

 


準備:

Visual Studio 2013 を使いますので、持っていない方はこちらから:
http://www.microsoft.com/ja-jp/dev/products/community.aspx 

昨日作った YAMAHA ルータの色づけ器はこちらから:
http://mimumimu.net/software/blogup/YamahaClassifier.zip

 

インストール:

ダウンロードした zip ファイル内の “YamahaClassifier.vsix” をダブルクリックすると次のような画面が出ますので「インストール」をクリックします。

image

 

使い方:

1.何でもいいのでプロジェクトファイルを作成します(苦笑)

たぶん Visual C++ の Win32 コンソールアプリケーションが
一番きれいでいいと思います・・!

image

 

2.拡張子 “.yconf” のファイルを作る (空でもOK)

image

作ったらあとはそのファイル上でルータのコンフィグを書いていきます。

 


開発者向け:

https://github.com/mimura1133/YamahaConfigClassifier

オープンソースですんで、ご自由にいじってくださいなー。
ライセンスとしては MIT ライセンスに従いますんでご自由にー。