
備忘録ではあるのですが、再現実験したらエラーが出なくなったのであくまで参考に。
FreeNAS (9.10.1-U2)に作成したMercurialレポジトリにWindows側からファイルをaddしようとすると、abort: ¥¥server¥folder¥.hg¥.dirstate-lk0nhu: Access is deniedみたいなメッセージが出て失敗する場合、FreeNAS側の共有フォルダ詳細設定で隠しファイルを表示する設定にすると解決しました。
2017/2/7
備忘録ではあるのですが、再現実験したらエラーが出なくなったのであくまで参考に。
FreeNAS (9.10.1-U2)に作成したMercurialレポジトリにWindows側からファイルをaddしようとすると、abort: ¥¥server¥folder¥.hg¥.dirstate-lk0nhu: Access is deniedみたいなメッセージが出て失敗する場合、FreeNAS側の共有フォルダ詳細設定で隠しファイルを表示する設定にすると解決しました。
— posted by mu at 11:40 am
Comment [0]
TrackBack [0]
2017/2/5
私しか使ってないFreeNASを9.10.2-U1にアップデートしたところ、あるフォルダ内のファイルが全部消え失せて目を疑う。
フォルダ構成はpool1 (ZFSプール) +- Dataset1 (ZFSデータセット) | +- Share1 (ディレクトリ/CIFS共有) | | +- Share1-1 | | +- Share1-2 | | ... | | +- Share1-n | +- NoShare1 (ディレクトリ/Jail用) | + NoShare1-1 (Share1-1をNullFSでマウント) ... +- DatasetN (ZFSデータセット)
これがアップデート後にShare1-1の中身が空っぽに。Share1-1にはサイズの大きいファイルがたくさんあったので本当に消えたのならpool1の空き容量が増えているはずだけど、その様子もなく。各種状態もエラーなし、scrubかけても正常。
ダメ元でfindコマンドでpool0内をファイル検索かけたところ…Share1-2の下にShare1-1フォルダが入っていたよ Σ(゚Д゚)
もちろんした覚えはないけど、間違いでWindowsからのファイル共有操作でフォルダを移動させてしまった可能性はある。ただ…元の場所に空のShare1-1フォルダは確かに存在したんだよなぁ。間違いでもご丁寧にフォルダ移動させたうえで、Share1-1作り直すなんてことはやらない。
今回FreeNASのアップデートは無罪でしょうけど、前回 とか過去に何回かトラブル経験しているので、アップデートはヒヤヒヤものです。やっぱり不具合無い限り更新しない方が良いかなぁ…
— posted by mu at 03:54 pm
Comment [0]
TrackBack [0]
2016/12/12
MySQLでUPSERTとパーティショニングを設定したいとします。運悪くパーティショニングをしたい列は一意にはなれないとします。
少し具体的にいうと、こんなテーブル。データが挿入された月毎でテーブルを分け、古いパーティションは後日捨てたい。timeがパーティショニングキーになります。一方システム要件として一意なデータを指定するにはidで十分なので、行の選択はidのみで指定されます。create table test(id int, datetime time default current_timestamp);
MySQLでパーティショニングキーになる列には以下の要求事項があります。Partitioning Keys, Primary Keys, and Unique Keys (MySQL documentation)
create table test(id int, datetime time, primary key(id, time)) partiotion by range columns(time) (partition p201612 values less than ('2016-12-01 00:00:00'), partition p201701 values less than ('2017-01-01 00:00:00'), partition p201702 values less than ('2017-02-01 00:00:00'), ... )
ここまでは問題なし。次にUPSERTとして有名なのは、INSERT ... ON DUPLICATE KEY UPDATE ...構文。が、Unique keyはidとtimeの二つで設定されているので、idだけ指定してtimeが適当ではINSERTしても重複と判定されずupdate文が実行されません。
重複判定させるためにid単独で別のUnique keyを作成しようとするとエラー。パーティションキーになる列は全てのUnique/primary keyに含まれるという制限に反するからです。
それならばとbefore updateのトリガーを指定して、更新しようとするidがテーブルになければidだけの行をinsertしておこうとする。
delimiter $$ create trigger test_updatetrigger before update on test for each row begin if not exists (select 1 from test where id=new.id) then insert into test(id) values(new.id); end if; end$$
これはトリガー発動時にエラー。トリガー関数内ではテーブルに対する操作は禁止されている とのこと。
というわけで現在ここで行き詰っており、王道であるアプリケーション側でのselect→insert/update対応になりそうです。こんな案件珍しくないと思うんだけど、なぜパーティションキーにUnique key設定が必要なんて使いにくい仕様があるんだろ。以前もちょっと複雑なSQL書こうとしたらハマった(で、MySQL捨てた)とか、どうも私はMySQLと馬が合わないようです。
— posted by mu at 07:03 pm
Comment [0]
TrackBack [0]
2016/10/2
今週FreeNAS のアップデートを適用したところ、今までJailからも見えていたdevfsがバッサリと見えなくなりました。FreeBSD関連の情報を見ると本来は/etc/devfs.rulesや/etc/rc.confを編集してJailにデバイスが見えるように設定するのが筋で、今まで見えていた方が何かおかしかったっぽいです。
/sbin/mount -t devfs devfs /your_jail_root/devをPostInitコマンドとして実行させることに。
以前も9.3→9.10にバージョンアップした時に、カーネルがFreeBSD 9から10に変わったことで別途入れていたカーネルモジュールがロードされなかったこともあったり。更新を無視したら毎日メール送ってくるし。FreeNAS、便利なんで使い続けたいのですが、ちょっと改造すると更新のたびにトラブルを警戒しないといけなくなるのが不満。FreeBSDに差し替えた方が良いのかなぁ…
[2016/10/3] タイトル変更
— posted by mu at 01:54 pm
Comment [0]
TrackBack [0]
2016/9/23
Windows10のAnniversary Update、ネットで「すでに多くのマシンの配信されていることでしょう」と書かれても一向に配信されず、特に興味もなかったので放置していたのですが、昨日ついに一台に配信。
新しいマシンから順に配信されるという話を聞いたことがあるのですが、Haswell自作マシンでこの時期になるということは、IvyBridgeやBloomfieldはいつのことやら…
アップデート後感じた不具合はAs/R でファイルのドラッグ&ドロップがうまくいかない(ドラッグできない)くらいでしょうか(個人的には結構イラつくのですが)
[2016/9/30 追記] 一昨日、IvyBridgeノートPCに配信。あとは自作Bloomfield。As/RはWindowsを2回ほど再起動したら問題なくなりました。。やっぱり問題出る、再現条件不明。
[2016/10/6 追記] Bloomfieldアップデート完了。Haswellに来るのが遅かったので、もっと後になるかと思ってた。
— posted by mu at 11:12 am
Comment [0]
TrackBack [0]
Comments