はてなキーワード: ファイルシステムとは
だめじゃあ。
今またブルスク。KERNEL DATA INPAGE ERROR だけど、結局のところSSDがビジーで応答を無くしたために
ページファイルが読めなくて・・というわけなんだろうなこれ。
しかしSSDがビジーになる原因が特定できない。ここ最近、ずっとタスクマネージャーを画面の片隅に置いてにらめっこしているが
フリーズの間際に最後にチラ見できた限りでは System が少しディスクを使っていたが、これが重大な負荷をかけているとは思えない。
もう分からない。。。
そういえば、だいたいブルスクが出る時間と Bing Wallpaper が壁紙を交換する時間が一致してる気がする。
以前は夕方に壁紙が交換されてた気がするが、最近は確かにこのあたりの時間だ。
ずっと前から Bing Wallpaper が壁紙を交換するタイミングで、マウスが少しカクついてたりするのは気になってた。
壁紙の交換は、弱った SSD に対しては負荷の高い作業なんだろうか?
熱のせいで不正終了を繰り返した結果、ファイルシステムが傷んじゃって、壁紙交換程度でも無用な負荷がかかっちゃうのか。
どんなアプリでも、このよわよわ SSD をがっつり使おうとすると妙な負荷がかかる可能性はあるんだろうかね。
Dell Data Vault も、まあユーザーの利益の見えづらいよく分からんアプリとは言え、ブルスク犯として糾弾するのはちょっと安直だったかな。
もうちょっとだけ知見を貯めた後で SSD を換装するんじゃ。
追記:やっぱり、ちょっとPCを放置してると Antimalware Service Executable がSSDをまさぐるんだけど
少しの間、マウスが応答しなかった。SSD が通常の負荷に対して弱くなってるんだろうなあ。
転んでもタダでは起きたくないというか、SSDを交換する前に、何かこう完璧で究極の知見を得てから
「よし、次のSSDで運用する時にはこれに気を付ければいいな!」みたいな何かが欲しいんだが。
難しい。
そんな絶賛ハードウェアトラブル中にもかかわらず、メモリを16G追加しちゃったwアホかーw
追記3:
ちなみに Bing Wallpaper は完全にシロ。壁紙を更新する時間はログイン直後だが、BSoD になるのはその1時間以上後。
さてさて、ここ連日 UNEXPECTED STORE EXCEPTION か CRITICAL PROCESS DIED の BSoD が「毎日・朝に・1回だけ」発生。
今朝はようやく、SSDに大きな負荷がかかった直後、まだタスクマネージャーが応答する状態で、諸々と観察する事ができた。
しかしタスクマネージャーを確認した限りでは、何らかのプロセスがSSDに負荷をかけているようには見えなかった。
タスクスケジューラーのログをとってみたところ、BSoDの直前に動いていたタスクは Windows Error Rporting/QueueReporting とのこと。
タスク名からして、エラー情報をキューイングしてるのかな。まさかこの後、実際に送信する時にSSDに負荷がかかってる?
とはいえもちろん、普通のSSDであれば難なくこなす作業であり、弱っている(と思われる)特別な状態にあるSSDにだけ荷が重いんだろう。
たとえ何が起きているのかを正確に突き止めたとしても、価値ある情報にはならない気がしてきた。
追記4:
やっぱり、Windows Error Reporting Service を止めたら、ここ最近毎日朝に発生していた BSoD が今日は発生しなかった。
通常の状態であれば、Windows Error Reporting なんて大した負荷じゃない。
でもその作業中に、弱ったSSDのどこかのツボを突いちゃってるんだろうかな。これ以上の深入りは不要だろうか。
しかしそういえばちょっと昔、おそらく Windows Error Reporting が 30G 以上のファイルを送信したらしく
それまでは長期出張のためにポケットWi-Fiをレンタルしており、容量は実用上は十分だったが
それでも万一を考え「従量制課金接続」の設定をオンにし、通信容量を節約していた。
そのおかげかは分からないが、Windows Error Reporting も情報を送信していなかったらしい。
そして家に帰り有線接続となった途端、Windows Error Reporting が大量の情報を送信したらしい。
溜まりに溜まったエラー情報は、やっぱり何かしらの負荷になるはずだ。
Windows の品質向上に協力するのは別にやぶさかではないんだが、どんだけのエラー情報が溜まっているのか
それをコントロールする事は出来るんだろうか?
「ディスクのクリーンアップ」で出来るらしい。といっても3Mしか溜まっておらず、クリーンアップは短時間で終了。
追記5:
Windows Error Reporting Service は動かしていないが、それでも今日もSSDに妙な負荷がかかったようで1分ほどフリーズ。BSoD には至らなかった。
タスクスケジューラーのログも有効にしてあるが、少なくともその5分前までに走ったタスクは無い。
結局「SSDが弱っているから、何が起きても不思議じゃない」という幕引きになるのか?
追記6:
随分前にDiagnostic Policy Serviceのファイル操作で異様に長い時間がかかる事を突き止めていた。もちろん、根本原因はこの傷んだSSDのせい。
なので、このサービスもずっと停めてある。
おそらくこのおかげで、30秒くらいフリーズの後にBSoDが出る事は無くなった。
しかし今日(7/10)もやはり UNEXPECTED STORE STATE の BSoD が発生。今は(午前中である事は変わりないが)ほぼ予兆無く突然発生する印象だ。
はてぶの上位にちょいちょい載ってるTBS系のニュースサイト、newsdig.tbs.co.jpについて。
https://b.hatena.ne.jp/site/newsdig.tbs.co.jp/
何がヤバいかって、くっそ巨大なCookie(LocalStorageとかも含むのか知らんけど)をしこたま保存してんのよ。
気付いた時点では640MBも占有してた。別に巡回チェックしてるわけでもなく、話題に挙がってたら見てみることもある程度のアクセス頻度なのだが。
Chromeユーザーはアドレスバーに↓コピペして確認してみてくれ。
chrome://settings/content/all?searchSubpage=tbs.co.jp&search=cookie
試しにCookie消去してから、ただ開いただけでサイト上で何の遷移もしてないのに279MBも保存された。
次点ではpresident.jpが553MB消費してた。(こっちも話題に挙がってたら見てみることもある程度。)
(その次にはGoogleが数百MBオーダーで消費してたけど、これはGoogleドライブのオフラインキャッシュとか考えれば妥当。他に数百MBオーダーで消費してるサイトは無かった。)
多くのサイトは数バイト~KBオーダーなのに、こいつら何保存してんのか不気味すぎる。
(追記)
各自の環境の消費量を教えてくれた方々や有意義なコメントを下さった方々ありがとうございます。
始めにお断りしておくべきだったかもしれませんが、自分はソフトウェア系ではありますが、Webエンジニアではありません。認識が浅かったり、古かったり、そもそも間違ってる可能性もあります。
CookieじゃなくてCacheStorageやんけと突っ込みもいただいていますが、「LocalStorageとかも含むのか知らんけど」と書いておいた意図は(どのような技術要素かはどうでもよくて)ユーザー端末に保存されるデータボリュームについての話を意図しています。ChromeのCookie絡みの設定画面での表示なのでこのような書き方をしましたが、解り難かったのならごめんなさいね。冗長ながらも認識齟齬を招かないように平易な表現で書くと、「ユーザの明示的な承諾なくユーザー端末に保存されるデータがデカイんだが」って話です。
で、各自の環境で「ユーザの明示的な承諾なくユーザー端末に保存されるデータ」が数GBオーダーにも及ぶという事例が少なからず報告されて、自分の環境だけではない事象だということが判りました。
さらにtbsとpresident以外にもいくつかのサイトが同様に肥大化していることも知れました。
結果的にはid:hinaloeさんの解説が解りやすかったです。ありがとうございます。
https://blog.hinaloe.net/2023/04/27/chrome-too-large-cache-storage/
CacheStorageがChromeの表示と、実際のディスク消費量と一致していないことが原因であると理解しました。
追試してみたところ私の環境ではChromeの開発者ツールでの表示が74MBで実際のWindowsのファイルシステム上は33.9MB消費されました。
実際のストレージの消費は表示値の半分程度ということになり、id:hinaloeさんの1.4GBに対して5MBのように実際の約0.3%という結果とは大きく乖離がありますので、各環境で大きく違いそうな気がします。
%USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default\Service Worker\CacheStorage
※配下のどのディレクトリが対象サイトのものなのか一意に特定する情報が無さそうなので、Chrome開発者ツールのApplicationタブの左上の方にあるService Workersを選択すると、右側にReceived YYYY/M/D HH:MM:SSみたいな表記が有るので当該時刻に変更されたタイムスタンプを持つディレクトリを特定するような感じになるかと思います。
ついでに開発者ツールを触っていて気付いたベースで書いておくと、
といった感じで、ユーザが見たものをキャッシュしているのではなくて、先読みしてるような挙動に思えます。
ロード時間短縮でUX改善を狙ったものかもしれませんが、個人的にはそれを1か月も保持し続けるのは過剰な感じがしますが世の中的にはどうなんでしょうね?
(追記2)
hinaloe氏の投稿で紹介されているStackOverflowの投稿やそのリンク先のChromiumのバグレポートのやり取りまで目を通してみると、特に理由の説明なく平均7MBがパディングされると書かれた投稿があります。
https://stackoverflow.com/questions/39109789/what-limitations-apply-to-opaque-responses
https://bugs.chromium.org/p/chromium/issues/detail?id=796060
該当するソースコードは↓のようです。
この中で、ComputeRandomResponsePadding()という関数を呼び出しておりその実体は↓のようです。
この関数は符号無し64bit整数の乱数(つまり、0~18446744073709551615のいずれか)を14431 * 1024 = 14777344で割った剰余(つまり、0~14777343≒約14MiB)を返却します。
これがパディング値として採用されることになりますが、乱数が正規分布している前提で、平均すると(最大値14MiBの半分で)約7MBになるよねってことだと思われます。
故にChromeの設定画面から確認できるCookie等(LocalStorageとかCacheStorageとか諸々含む)のサイズは、概算してCacheStorageに存在するファイル数×平均7MBが過大計上されていることになりそうです。
これでChromeの設定画面から確認できるサイズと、実際のファイルシステム上で消費されているサイズの違いは合理的に説明できますが、TBS等の特定のサイトだけデカくみえる理由の説明にはならないのです。
なんなんすかね?
とある弁護士がデータベース等を使ってないみたいな言い訳をしているようなので。
詭弁と表現したのは今日データベースと表現されると一般的にはリレーショナルデータベースシステムや階層型データベースシステムを指すが、データベースという語義を原意的に広く解釈するとNT File SystemやApple File System、Extended File Systemなどのファイルシステムもデータベースシステムの一種として捉えることが可能ではある。
可能ではあるとするのは前述の通り、今日の情報技術者等の一般的な認識ではMySQLやMariaDB、NoSQLなどのデータベースシステムと解釈され、ファイルシステムとデータベースシステムは別概念として捉えることが常識的な判断であり感性なのだ。
ただ、現代社会でデータベースシステムを一切利用せずに取引するのはおおよそ不可能であることはデータベースシステムを熟知している者であればあるほど痛感するものであり、詭弁として挙げた通りにデータベースシステムという語義を途方もなく広く解釈するとファイルシステムもデータベースシステムなので、高度な汎用計算機たるコンピュータやスマートフォンを活用してしまうと我々、そして件の弁護士はデータベースシステムを利用していると言わざる得ないのだ。
ちなみにEメールクライアントやマルチメディアソフトのiTunesなどへデータの送受信や読み書きするだけでデータベースと相当されるものが生成される。Appleなどは情報技術者界隈でデータベースシステムを一新したがることへ悪い意味での定評があり、一般的なユーザーであってもiTunesのライブラリが壊れるなどと言った経験があるだろう。
筆者は法律の専門家ではないためシステムが自動的に生成するデータベースはユーザーが故意に作ったデータベースではないためユーザーがデータベース等を利用していないとする主張が妥当なのかどうなのか判定できない。
付け加えるなら筆者の学んだことや経験などを考慮すると、他者からファイルシステムもデータベースシステムの一種と主張されれば、100歩譲って言わんとすることは理解できるものの違和感が拭えなくファイルシステムとデータベースシステムは違うだろと言い返したくなる。そういう意味で詭弁なのだ。
気がついたことがあって、中国語ではかなり専門的なIT用語も漢字で彼ら独自の訳語を作って使っている
インストール:安装 AWS S3とかaliyun OSSのバケット:桶 とか、
方や我が国のIT用語は英語を日本語の音素で無理やり発音したもの(いわゆるカタカナ英語)を借用しているため意味不明の呪文になってしまっている。
別に用語として定着して意味が通じればそれでいいじゃないかと思うかもしれないけど、意味不明の呪文をそのまま使わないといけないから原義へアクセスすることが不可能になっている。
例えばinstall が in + stall で ITの文脈で使われる前は「家畜を囲いの中に入れたり機械を据え付けること」を指していて、それがソフトウェアの構成ファイルを決められたファイルシステムの中の決められた場所に入れてコンピューター上で使えるようにすることを意味するようになった。
インストールをインストロールと言い間違えるおっさんがネタになったりすることがこのことの弊害を端的によく表していると思う。
最近コンピューターサイエンスがプログラマーに必要か否かみたいな話が上がっているが、そもそもコンピューターサイエンスって何だよ。どこまでの範囲をさしてんの?
ググって出てきた情報を整理しただけなので詳しい人、補足・訂正よろしく!
https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf
CS2013はACM/IEEE-CSによるカリキュラム標準。
ACM(計算機協会)はコンピュータ分野全般の国際学会、IEEE-CSはIEEE(米国電気電子学会)の中にあるテクニカルソサエティ。
https://www.ipsj.or.jp/12kyoiku/J07/20090407/J07_Report-200902/4/J07-CS_report-20090120.pdf
J07-CSは一般社団法人情報処理学会がCC2001CSをベースにアレンジを加えたカリキュラム標準。今はCS2013を反映したJ17-CSがあるらしいけどその辺は良く分からん。
https://www.ipa.go.jp/files/000024060.pdf
J07ーCSから抜粋。CS2013と比較するとナレッジエリアがあったり無かったり。
まぁ、下っ端プログラマには要らないだろうけど、いわゆるシステムエンジニアとかアーキテクトとか言われるレベルの仕事するには、なるべく知っとかないといけないよね。
オレの場合は、大学はかろうじて理系の一角だったけど、学問的にコンピュータサイエンスを学んだことはなくて、某IT会社でなかば業務上の必要に迫られ、なかば趣味的な興味本位もありで、ちょっとずつ勉強した。
で、もう20年くらい前だし、すでに廃止されてる(と思う)ので、守秘義務違反とかの面倒なことにならなそうだと想定してぶっちゃけると、大手携帯会社のショップで各店舗独自のプロモーション打ったりするためのWebシステムの開発に関わったことがある。
顧客の(および自分とこの)エライ人なんかに、システムの設計の根拠(この方式が最善なのか?もっと安く早くやれる方法はないのか?などなど)を常に問いかけられ、説明説得しなきゃならない。そこでコンピュータサイエンスに基づいて理路整然と話をすると、ちゃんと信頼してもらえるし、納得してカネ払ってもらえるw
そこで使ったのが、以下のような各種理論だ:
などなど... 自分史上最高に残業させられたこの仕事やってた年の年収は、900万円台おしくも1000万には届かなかったねぇw
--追記--
コンピュータサイエンスがらみの思い出でもう一個面白い(とオレが思う)ネタがあるので、ついでに書いとこうw
これは、上で書いた携帯会社のシステムよりだいぶ前のことになるが、とあるグループウェアの開発に関わってたとき、メールをFAXに向けて出力するドライバを書いたことがある。昔のことなのでオープンソースもあんまり普及してないし、タダでお手軽に使えるライブラリが見つからなかったので、「車輪の再発明」っぽいけど自分でハフマン符号化によるデータ圧縮のアルゴリズムを勉強して作ったのだ。
Win32のAPIとか呼び出して、ビットマップにテキストを描画させたとこから、ドットをちまちま数えて、白のドットがいくつ続いてたらこのコード、黒がいくつ続いてたらあのコード...って可変長のビットパターンをつなぎ合わせてファイルに書き出す...みたいな。これが理論通りにうまいこと動作して、FAXから文書が出てきた時はとっても楽しかったw
OSというと、基本的にファイルシステム、GUIないしCLIインターフェース、ネットワーク通信(はまだなくてもいいか?)、その下にあるハードウェアの制御などが機能としては一般的なものになると思うけど、少なくとも今そこまで出来ているとは考えにくいな。
この辺見る限り、スマートコントラクトについては合っていそうだけど。
https://ethereum.org/ja/developers/docs/smart-contracts/
イーサリアムのアドレスにあるということなので、これをメモリアドレスと見なしているのだと思うが、現在の定義ではOSは上でハードウェアの制御と書いたように基本的には単体の物理マシン上にインストールされるもの(仮想マシンの場合はハードウェアを下のハイパーバイザがエミュレートしたりバイパスしたりするはず)なので、分散システムであるブロックチェーンとは相性が悪いんじゃないかな。
少なくとも、イーサリアムのスマートコントラクトを自分のマシン上に持ってくるために、OSの下にネットワーク通信が出来る「何か」が存在する必要があるのでは?現在これはOSが担う機能なのだけど。
言ってることはなんとなく分からないでもないけど、少なくとも現時点で広く認知されている「OS」になるとはあまり思えないな。
名著「UNIXという考え方 - UNIX哲学」は本当に名著なのか? 〜 著者のガンカーズは何者なのかとことん調べてみた - Qiita
この記事はよく調べてあるなぁと思う反面,事実関係の間違いも多く当時の空気感など欠けていると思う部分がいくつかある。事実関係に関しては追い切れないので参考文献を挙げるにとどめておくが,空気感のほうはいくつか書いておく。なお当該記事の「当時と今では状況が全然違うんだから,安易に『UNIX 哲学』とかいうな」という主旨には大賛成である。
初期の UNIX の歴史について興味がある向きには次の書籍をお薦めする。
Peter H. Salus『A Quarter Century of UNIX』(1994, Addison-Wesley Publishing)
和訳の『UNIXの1/4世紀』(Peter H. Salus, QUIPU LLC 訳, 2000, アスキー) は絶版のうえ訳も微妙なので薦めづらいが,原書は The Unix Heritage Society (tuhs) で PDF が無償公開されているので,英語が苦にならないのなら読んでみるといい。
また同じく tuhs で無償公開されている Don Libes and Sandy Ressler『Life with UNIX』(1989, Prentice Hall)を読めば80年代終りの UNIX の状況(XENIX についてもしっかり言及されている)や利用者目線での雰囲気もある程度判るだろう。
元記事で一番気になるのが「哲学」という語の捉え方。この言葉の強さに引きずられているように読める。でもこれ,当時は設計の基本的な考え方くらいの意味でわりとよく使われていた言葉なんだよね。たとえば米 BYTE 誌のアーカイブを “philosophy” で全文検索するとこんな感じ。
https://archive.org/details/byte-magazine?query=philosophy&sin=TXT&sort=date
ほぼ毎号のように出現していたのが判るだろう。
もっとも猫も杓子も「哲学」を振りかざしていたわけではないし,UNIX の開発者たちが「哲学」の語を好んで使っていたのも間違いないように思う。傍証の一つが AT&T の定期刊行物『The Bell System Technical Journal』の1978年7, 8月号だ。元記事で言及されているマキルロイの Forword の初出がこれで,ネットのアーカイブから PDF が入手できる。
この号は二部構成になっていて第一部が Atlanta Fiber System に関する論文12本(全172ページ),第二部が UNIX に関する(Preface や Foreword を含む)論文22本(全416ページ)となっている。さて前述の PDF は OCR されているので “philosophy” で全文検索してみると8箇所見つかる。これが見事に全部 UNIX の論文なのだ。もちろん論文の性質もページ数も違うからこれだけで確定的なことはいえないが「日常的に使っていたんだろうなぁ」という推測は成り立つだろう。じつはマキルロイの哲学とされている部分は “Style” であり “philosophy” の語は一切使われていないというのもちょっと面白い。UNIX の開発者たちがなぜ「哲学」という語を好んだか正確なところは判らないが,それまでにない新しい考え方に基づいた OS を開発しているという意識があれば,そういう言葉を選ぶのが自然な時代だったことは間違いない。
UNIX が認知され拡がっていく過程で「哲学」も知られるようになっていった。自分が好むものの良さを他人にも識ってもらいたい,あわよくば他人もそれを好むようになって欲しいという布教活動は今も昔を変らないわけで「哲学」はその便利なツールとなったわけだ。元記事ではガンカースの著作を「外部の人間が後から打ち立てた哲学」と表現しているが,そんなたいしたものではない。マキルロイの論文に影響を受けた布教のためのああいう説教は到るところにあった。たとえば前掲の『Life with UNIX』にもしっかり Philosophy の項がある。また日本で最初期の UNIX 解説本のひとつである,村井純・井上尚司・砂原秀樹『プロフェッショナル UNIX』(1986,アスキー)には冒頭次のような一節がある。
オペレーティング・システムは,コンピュータを使うものにとっての環境を形成する基盤であるから,そのうえで生活する者の個性を尊重し,より良い環境へと作り上げて行く課程を支援するような素材を提供するソフトウェアでなければならない。この主張こそが,UNIX のオペレーティング・システムとしての個性ではないだろうか。
「より良い環境へと作り上げて行く課程を支援するような素材を提供するソフトウェア」とはテキストを入出力フォーマットとする単機能のコマンド群のことで,これらをパイプでつなげたりシェルスクリプトでまとめたりすることで「そのうえで生活する者の個性を尊重し」た「より良い環境へと作り上げて行く」ということだ。こういった説教はありふれたものであった。たんにそれを「哲学」の語を用いて書籍にまとめたのが,たまたまガンカースだったというだけのことである。
そしてじつは UNIX の場合,布教活動とはべつに「哲学」を広めなければならない切実な理由があった。これを説明するのは非常に面倒くさい。当時と今ではあまりにも環境が違うのだが,その違いが判らないと切実さが伝わらないからだ。マア頑張ってみよう。
UNIX は PDP というミニコンピュータ(ミニコン)上に開発された。このミニコンを使うためには専用の部屋に行く必要がある。その部屋は,もちろん場所によって違うわけだが,マアおおよそ学校の教室くらいの大きさだ。長机が何列か並んでおり,そのうえにはブラウン管ディスプレイとキーボードを備えた機器が等間隔に置かれている。壁際にはプリンタが何台かあるだろう。通っていた学校にコンピュータ室などと呼ばれる部屋があったならそれを思い浮かべればだいたい合ってる。ただし置かれている機器はコンピュータではなくコンピュータに接続するための端末装置(ターミナル)だ。端末装置のキーボードで打った文字がコンピュータに送られコンピュータが表示した文字がそのディスプレイに表示される。現在 Unix 系 OS で CLI を使うときターミナルとか xterm という名のアプリケーションを用いるがこれらは端末装置のエミュレータで,もともとは実体のある装置だったわけだ。
さてコンピュータ室にたいていは隣接するかたちでマシンルームなどと呼ばれる六畳くらいの部屋がある。窓ガラスで仕切られたこの部屋には箪笥や洗濯機くらいの大きさの装置が何台か置かれている。これがコンピュータ本体だ。もっともコンピュータが何台もあるわけではない。この箪笥が CPU でそっちの洗濯機がハードディスク,あの机に置かれているタイプライタが管理用コンソールといった具合に何台かある装置全部で一台のコンピュータになる。どこが〝ミニ〟だと突っ込みたくなるかもしれないが「六畳で収まるなんて,なんてミニ!」という時代のお話だ。
端末装置それぞれから(USB のご先祖様の)RS-232 という規格のアオダイショウみたいなケーブルが伸び,マシンルームに置かれたターミナルマルチプレクサと呼ばれるスーツケースに台数分のアオダイショウが刺さってコンピュータとの通信を行う。コンピュータと多数の端末装置を含めたこれら全体をサイトと呼び,root 権限を持って管理業務を行う人をシステム管理者あるいはスーパーユーザと呼んだ。
結構上手に説明できたと思うのだが雰囲気は伝わっただろうか。ここで重要なのは一台のコンピュータを数十人が一斉に使っていたという事実だ。洗濯機とかアオダイショウとかは,マアどうでもいい。
当時の UNIX の評価を一言で表すと〝自由で不安定な OS〟となる。メーカお仕着せではなく自分好みの「より良い環境」を作りあげる自由。さらに他のメインフレームやミニコン用 OS に比べると一般ユーザ権限でできることが圧倒的に多かった。そしてその代償が不安定さ。今では考えられないが UNIX のその不安定さゆえにプロ用 OS ではないと考える向きは多かったし「でも UNIX ってすぐ落ちるじゃん」というのは UNIX アンチ定番のディスりだった。UNIX の落とし方,みたいな情報がなんとなく廻ってきたものだ。
こういった雰囲気を鮮やかに伝えてくれるのが,高野豊『root から / へのメッセージ』(1991,アスキー)だ。当時アスキーが発行していた雑誌『UNIX MAGAZINE』に連載されていた氏のエッセイの1986年11月号から1988年10月号掲載分までをまとめた書籍である。著者の高野氏は勤務先の松下電器で1980年ごろから UNIX サイトのスーパーユーザを務めており,日本では最古参の一人である。この本の中で高野氏は繰返し UNIX の自由さと不安定さに言及している。すこし長くなるが,その中の一つを引用しよう。
CPU は,システムにとって重要な共有資源であるが,この CPU を実質的に停めてしまうことが UNIX ではいとも簡単にできる。たとえば,cc コマンドを10個くらい同時に走らせてみたらよい。VAX-11/780 といえども,同時に実行できるコンパイルはせいぜい3つか4つである。それ以上実行することも当然可能ではあるが,他に与える影響が無視できなくなる。つまり,てきめんに vi のカーソルが動かなくなる。あるいは,すこし大きめなディレクトリ上での ls コマンドの出力が表示されるまでに煙草を1本吸い終えてしまったり,タイムアウトでログインが撥ねつけられたりといったバカげた現象が起きだすのである。こういった状態になると,UNIX は破壊されたに等しい。真夜中,独りで VAX を占有して使っているのなら何をやろうとかまわない。しかし,20人30人と多数の人間が使っているときに勝手をやられると非常に困るのである。当人の仕事が遅れるのは自業自得だとしても,そのとばっちりで他のエディタまで止まってしまうと,もはやどの仕事も進行しなくなる。
ディスクについても同様なことがいえる。UNIX では,ファイルシステムを使いはたすまで大きなファイルを自由に作ることができる。したがって,自分のプロセスがいったいどのくらいの容量のファイルを作り出すのか見当もつけられないようなアマチュアが使うと悲惨なことになる。ディスクを使いはたすと,コンソール・タイプライターにエラー・メッセージが出力されるが,夜中にそれが発生して,コンソール・タイプライターが一晩中エラー・メッセージを打ち続け,朝マシンルームに行ってみると紙を一箱打ち尽くしてしまい,ピーピーと悲しげな声を上げて人を呼んでいた光景を私は何度も見てきた。こうなると,それをしでかした本人のプロセスは当然のこととしても,同じディスクで走っている他のプロセスも先に進めなくなってしまう。すこしでも負荷を夜間にまわそうとする善意は逆転してしまい,わずかでも仕事を先に進めようとする意図も完璧に打ち砕かれてしまうのである。
そして,こうした不安定さが「哲学」を必要としたのだ。自分が利用しているサイトに「cc コマンドを10個くらい同時に走らせ」たり「自分のプロセスがいったいどのくらいの容量のファイルを作り出すのか見当もつけられないようなアマチュア」がいるとその累は自分にも及んでしまう。だからサイトの利用者全員に UNIX の設計の基本的な考え方を理解してもらうことが,自分のために必要だった。UNIX の伝道がより苛烈だった理由のひとつがここにあるのだ。
ミニコン上で誕生した UNIX は 4.3BSD(1986)で最高潮を迎える。注意したいのはミニコン時代の UNIX は Research UNIX と CSRG BSD みたいな区別をせずにまとめて UNIX として扱われていたことだ。実際『プロフェッショナル UNIX』も『root から〜』も UNIX と記述されてはいるが実際には BSD を扱っている。べつに当時の人が無知だったわけではない。なにしろ BSD を利用するためにはまず AT&T から UNIX のライセンスを購入し,そのうえでカリフォルニア大学バークレー校(UCB)から BSD を入手しなければならなかったからその関係は当然広く知られていた。ベル研で発明された UNIX を外部の人たちも含めみんなで改良し,それら全体が UNIX であるという考え方が自然だっただけである。『Life with UNIX』のような英語の文献によく登場する “Berkeley UNIX” という言い回しが当時の気分をよく表している。UNIX vs BSD みたいな捉え方は法廷闘争を経た90年代以降の感覚だ。
もっともそういう70年代風味の牧歌的風景はミニコン世界限定の話であった。BSD そのものはミニコン用のものしかなかったが,そのコードを受け継いだ BSD 系 Unix や AT&T が推し進める System V などがワークステーション市場を舞台に80年代中盤から激しく覇権を争うようになる。いわゆる Unix 戦争で,PC 用 Unix であるマイクロソフトの XENIX も当然参戦した。ミニコン世界が牧歌的だったのは,ぶっちゃけていえば先のない技術だったからだ。ただ Unix 戦争はあくまでも標準という聖杯を争う戦いであり,AT&T と BSD 系 Unix の Sun Microsystems が共同で System V Release 4.0 (SVR4) を作りあげたように後の法廷闘争とは趣が違う。
こうしたミニコン UNIX からワークステーション Unix への転変は Unix そのものや文化にも変化をもたらした。まず激しい競争は Unix の高機能化を加速した。商品として判りやすい惹句が「あれもできます,これもできます」なのは誰もが知っている。もちろん安定性を増すために quota のような利用者の自由を制限する機能も含まれていた。またワークステーション Unix は現在の Unix 系 OS と同様同時に一人が使うものであり前述の布教の必要性は大幅に減じた。達人たちのみの楽園から万人に開かれた道具に変ったのだ。こういった変化を体感したければ『root から〜』と水越賢治『スーパーユーザの日々』(1993,オーム社)を読み比べてみるといい。『スーパーユーザの日々』はワークステーション Unix のシステム管理の入門書だ。この本ではたんに知識を羅列するかわりに架空のソフトウェアハウス(開発会社)を舞台に新卒社員が先輩社員からシステム管理を学ぶという体裁をとっており,そのおかげで架空の話とはいえ90年代前半の雰囲気が堪能できる。出版年でいえば『root から〜』と二年しか違わない『スーパーユーザの日々』の落差は “dog year” と称された当時の激烈な変化まで体感できるだろう。
当時はよくいわれたのに今やほとんど聞かれなくなったものがある。マキルロイの論文の結論部分に書かれたそれは,1973年に出版されたイギリスの経済学者エルンスト・シューマッハーの著作の題名で,中学生の英語力があれば十分に理解できる平明な一文だ。
Small is beautiful.
マキルロイは『人月の神話』を引いて一定の留保をつけてはいるものの,これが UNIX 哲学の背骨であることに違いはない。機能をありったけ詰め込もうとして失敗した “kitchen-in-a-sink” な MULTI•cs のアンチテーゼである UNI•x にとって,これ以上のスローガンがあるだろうか?
ひるがえって現在の Unix 系 OS をみれば,ブクブクと肥え太ったシステムコール,全容を俯瞰するだけでも一苦労するライブラリインターフェイス,一生使うことのないオプションスイッチまみれのコマンド群。UNIX が仮想敵とした OS そのものだ。そのことについてとくになにも思わない。ハードウェアは長足の進歩を遂げ,コンピュータの応用範囲は途方もなく拡がった。UNIX が変らなければたんに打ち棄てられ,歴史書を飾る一項目になっただけだ。ただ現在「UNIX 哲学」を語るならそうした背景は理解していなければならないし,どれだけ繊細な注意を払ったところで〝つまみ食い〟になってしまうことは自覚すべきだ。
ニュースサイトで調べました的な。
文章といい、技術知識といい、調査不足といい、洞察のなさといい、本当にひどい。
この枠で若い有能なライターに書かせてあげればどれだけ社会貢献になるか・・・
老人がコネでポジションにとどまると、まさに他人や社会に迷惑をかけてしまうという一例だなあ。
もしかしたら、WindowsはPCからローカルという考え方を排除しようとしているのかもしれない。かつてアプリは必ずローカルにあった。ファイルもローカルにあった。だからネットワークに接続していないPCでもそれなりに便利に使うことができた。
今、インターネットに接続していないPCというのはほぼ考えられない。あれもできないこれもできないという環境の中でいつもの作業をこなすのは不可能に近い。極端な話、ローカルに何もなくてもブラウザがあればなんとかなる。かくしてWindows OSは、ファイルシステムを捨て、ファイルを捨て、アプリを捨てるつもりなんだろう。Windows 11は、その兆しとなるOSだ。
今はまだ、ゲームのリッチな表現や、長大な撮影済み動画素材の編集などで、ローカルパワーが求められてはいるが、それが永遠に続くことはなさそうだ。
それでもローカルパワーは必要だ。大量のデータトラフィックをさばき、それを目の前のユーザーのストレスを最小限にするよう瞬時にレンダリングして表示する。データのストリームの処理はエッジで引き受けないとクラウド側のリソースは破綻する。
https://pc.watch.impress.co.jp/docs/column/config/1379224.html
スーパーコンピュータシステムのファイル消失のお詫び
2021年12月14日 17時32分 から 2021年12月16日 12時43分にかけて,スーパーコンピュータシステムのストレージをバックアップするプログラム(日本ヒューレット・パッカード合同会社製)の不具合により,スーパーコンピュータシステムの大容量ストレージ(/LARGE0) の一部データを意図せず削除する事故が発生しました.
皆さまに大変なご迷惑をおかけすることになり,深くお詫び申し上げます.
今後,再びこのような事態の生じることのないよう再発防止に取り組む所存ですので,ご理解をいただきますよう,どうぞよろしくお願いいたします.
・ファイル削除期間:2021年12月14日 17時32分 ~ 2021年12月16日 12時43分
・消失対象ファイル:2021年12月3日 17時32分以降,更新がなかったファイル
・影響グループ数:14グループ (うち,4グループはバックアップによる復元不可)
http://www.iimc.kyoto-u.ac.jp/ja/whatsnew/trouble/detail/211216056978.html
スーパーコンピュータシステムの納入会社である日本ヒューレット・パッカード合同会社によるバックアッププログラムの機能改修において,不用意なプログラムの修正とその適用手順に問題があったことで,本来は不要になった過去のバックアップログファイルを削除する処理が,/LARGE0 ディレクトリ配下のファイル群を削除してしまう処理として誤動作しました.
日本ヒューレット・パッカード合同会社から提出された報告書を掲載します.
Lustreファイルシステムのファイル消失について (日本ヒューレット・パッカード合同会社)
今後の取り組み
現在バックアップ処理を停止しておりますが,プログラムの問題を改善し,確実に再発しない対策をした上で1月末までにはバックアップを再開する予定です.
ファイル消失後にバックアップが実行されてしまった領域のファイルの復元ができない状況となったことから,将来的にはこれまでのミラーリングによるバックアップだけでなく,1世代分の増分バックアップを残す等の機能強化を検討いたします.機能面だけでなく,再発防止に向けた運用管理についても改善に取り組みます.
一方で,機器故障や災害等によるファイル消失の可能性も含めて完全な対策は困難であるため,利用者の皆様におかれましても,重要ファイルについては別システムへのバックアップをお願い致します.
仮想システムを構築するにあたり、CIFS しか使えない NAS をバックアップ用に選定してきた SI 屋さんが居たので、CIFS と iSCSI のどちらが早いのか、試してみました。
テストに使う NAS は QNAP の Turbo NAS TS110
http://www.tekwind.co.jp/products/entry_6719.php
です。もう6年以上愛用して、カビが生えてもおかしく無い程に古いし, Marvell 800Mhz という低スペックな Qnap NASです。 100Mbps 時代のモノです。
昨年、HDDがお亡くなりになったので、3Tb の HDD に交換しました。ファームウェアはこんなに古い機械でも、QNAP シリーズの最新バージョンが利用できます。
iSCSI は、今あまり見なくなりましたが SCSI ケーブル規格や、SASケーブル接続のハードディスクを、一般的なIPネットワークで規格で仮想化したものです。
マウントするホストシステム側は iSCSI initiator, ディスクストレージの機能を提供する側を iSCSI Target と呼びます。
ホストから「マウントするしない」はイニシエータ側のソフトウェア的な操作で行います。これは便利な機能で、ディスクの故障などで、一時的に物理的に取り外さなければいけない場合でも、ホストからの操作だけで実際のケーブル結線の脱着を行う必要がないので、今時での SAS の外付けディスクドライブの様に、ホストもシャットダウンして電源を切り、結線を外して修理、交換する、という必要がないので、ディスクデバイスの修理をホストの電源を止めないで実施できると言う、実に便利な事ができます。
という事で、仮想環境では実に使いやすいストレージデバイスなのです。
マウントするホスト側から見ると単純に SCSI/SAS のハードディスクに過ぎません。iSCSI のストレージをマウントしてからは、通常の増設ディスクの様にフォーマットして、ホスト側で使う一般的な XFS, ext4, NTFS などのフォーマットでフォーマットする必要があります。
Linux の iSCSI ターゲット側からは、内部にターゲットとして使う「巨大なファイル」が、どん! とあるだけです。この巨大ファイルを、イニシエータ側に仮想ディスクイメージとして提供しています。当然シンプルな仮想イメージなので、ファイルそのものをバックアップコピーすれば、ストレージのイメージそのもののバックアップができます。
※ qnap NAS の場合、iSCSI イメージは、 /share/HDx_DATA/.@iscsi.img の下にドンと作られるようです。
[Solved]How to mount iSCSI file?
https://forum.qnap.com/viewtopic.php?f=180&t=25322
[/share/HDA_DATA/.@iscsi.img] # pwd
[/share/HDA_DATA/.@iscsi.img] #
[/share/HDA_DATA/.@iscsi.img] # ls -l
-rw------- 1 admin administ 6442450944 Nov 12 2017 iSCSI-2015ace1-5a078d66.000
-rw------- 1 admin administ 1073741824 Jun 24 09:52 iSCSI-lun4-5d0de534.000
-rw------- 1 admin administ 107374182400 Nov 4 2015 iSCSI-nss01-56399e1a.000
-rw------- 1 admin administ 5368709120 Nov 11 2017 iSCSI-nss2015-5a06cf6d.000
-rw------- 1 admin administ 21474836480 Jun 22 17:11 iSCSI-test-56b3ce90.000
-rw------- 1 admin administ 5368709120 Jun 22 17:11 iSCSI-test-56b3ce90.001
[/share/HDA_DATA/.@iscsi.img] #
※ とても重要
CIFS/NFS のファイル共有NAS と違い、iSCSI でマウントして一つのターゲットを制御できるのは、一つのホスト、一つのイニシエータだけです。複数のホストからイニシエータでマウントする(できちゃいます)と、ファイルの排他制御は行われないので、ファイルシステム自体の不整合が起こります。
つまりファイル共有という目的には向いていない、という事です。あくまでも iSCSI ターゲットはネットワーク上の仮想ディスクです。
もっとも、一つのホストからマウントしてファイルを保存して、いったんオフラインにして、ターゲットを別なホストからマウントする、という事はできます。また、ターゲットは一つの iSCSI デバイスで複数作れるので、1台の iSCSI 装置に複数のターゲットを実装して、複数のホストから別々のターゲットイメージをマウントする事は問題ありません。
極端な話、ホストのハイパーバイザーは USB メモリやSANブートさせて、後はマウントした iSCSI の仮想イメージ上で、仮想マシンを動かす、HDDレスなハイパーバイザー運用もできます。
物理的な転送速度は、ネットワークの速度とディスクデバイスの性能に依存します。当然 10Gb base のネットワークカード、HUB、高規格なケーブルを使えば、論理的な性能は 10Gbps です。大抵は NAS の性能がそこまで出ないのですけどね。ヨドバシカメラあたりで売っている 4,000 円程度の 1G HUB でも、そこそこの性能が出てしまいます。
距離は、IPがつながればどこでもなので、ホストコンピュータとメインのストレージを自社のサーバールームに置き、イニシエータを動かし、バックアップ用の iSCSI ターゲットをデータセンターに置く、なんてこともできます。
【送料無料】QNAP TS-431P2(ホワイト) NAS 4ベイモデル クアッドコア CPU / LAN 2ポート搭載 (TS431P2)
価格:56,145円
感想(0件)
iSCSI の耳慣れない言葉に LUN (論理ユニット番号 : Logical Unit Number)というのがあります。
昔の SCSI は、 SCSI バスアダプタに7番のIDを振り、残りの 0 ~ 6 のディスクや CD, Tape などに ID を振り分ける物理的な3ビットのディップスイッチやジャンパ端子が付いていました。これが SCSI アドレスです。
これが実に難物でした。特に、複数の SCSI バスアダプタカードをデュプレクス設定する場合、割り込み番号も別々にするので、手が滑ってジャンパピンを飛ばして床を這いまわって探したり、難解なディップスイッチを前に数日悩んだものです。
つまり一つのSCSIバスには 0~7の合計8台(うち大抵7番はSCSI バスカード)の物理ユニットデバイスがつながって別々に見えたという仕組みだったわけです。
ところが SCSI バスを使った Raid コントローラが出てくると、ディスクの鈴なりが、一つの物理デバイスに見えてしまうわけです。これを「論理的な仮想番号」に分割して、システムからは、単一の鈴なり Raid ディスクを複数の論理番号に分割したわけですね。
これが LUN というヤツです。
iSCSI 機器のターゲットも、内部のソフトウェア的に複数の論理デバイスに分割して、複数のホストコンピュータから複数の物理デバイスのように見せかけるわけです。
別々な LUN は一つ、あるいは複数の iSCSI 機器によって、複数のホストに別々のディスクデバイスとして見せかけるンです。
https://en.wikipedia.org/wiki/Logical_unit_number
Qnap NAS の場合、iSCSI ターゲットはウィザード形式で簡単に作成できます。EXT4 ファイルシステム上で、オンラインでも簡単にサイズの拡大ができるので、 Windows の Storage Server のように NTFS の VHD 形式ではないので、そこそこ性能が出ますが、いかんせん古さと遅さは否めません。
Qnap NAS の iSCSI ターゲットの設定は、偉そうな Linux 系サイトに書いてある程、面倒なことはありません。ストレージマネージャから iSCSI タブにあるウィザードに従って iSCSI ターゲット名に任意の名前を付けると IQN にその文字列が追加されるだけです。わざわざ vi エディタに「正確に」綴りを間違えずに設定する必要もありません。ここでは Chap 認証は付けませんでした。
仮想化時代の NAS 選び - やっぱり iSCSI は早い。_a0056607_16405779.jpg
機械は古いのですが、逆に言うと、「古くて遅い」ため、サーバーとNASとの接続プロトコルの性能差が、如実に現れる事になります。
QNAP TVS-951X 10GBASE-T/NBASE-Tポート内蔵
Windows10 の Microsoft 製 iSCSI イニシエータは「コントロールパネル」>「システムとセキュリティ」>「管理ツール」の中にあるので、ここで、設定済の iSCSI 「ターゲットを」 「検索」して選んで「接続」します。Chap 認証を付けておいた場合はターゲットで設定したパスワードが必要でしょう。
仮想化時代の NAS 選び - やっぱり iSCSI は早い。_a0056607_16412132.jpg
新規に作成して、接続した後は、フォーマットされていないため、ディスクマネージャからフォーマットして使います。ちなみに、フォーマットして利用した iSCSI ターゲットの仮想ディスクは、他のマシンでマウントすることもできます。つまりHDDを取り外して、他のPCに繋げる事と同じことですね。
PR
ちなみに opeSUSE で使うにはこんな感じになりました。
open SUSE Leap 15.1 で iSCSI NASを使ってハマった
https://islandcnt.exblog.jp/239328437/
一番イラつくのは、巨大なファイルの転送でしょう。という事で 3G 程ある SUSE Linux のインストール用DVDの ISO ファイルを CIFS でコピーしてみます。
仮想化時代の NAS 選び - やっぱり iSCSI は早い。_a0056607_16414334.jpg
3分11秒かかりました。1Gビットネットワークで 12~3% 程度の帯域を使って通信しています。明らかに古いNAS の性能が足を引っ張っているようです。
スループットは 150Mbps 程度で全体の最大15%程度でしょうか。
仮想化時代の NAS 選び - やっぱり iSCSI は早い。_a0056607_16415832.jpg
仮想化時代の NAS 選び - やっぱり iSCSI は早い。_a0056607_16422170.jpg
初速は出るのですが、その後は、ボロイ TS-110 の性能がモロに出ます。それでも 20 MB/s から 25 MB/s 程度は出ています。
仮想化時代の NAS 選び - やっぱり iSCSI は早い。_a0056607_16423835.jpg
2分25秒でした。 大体20%程度のスループットです。
--
数字に弱い私の脳みそですが、 iSCSI は CIFS より 1.5倍くらい早い、という事が言えます。
Zabbix で QNAP TS-110 の I/O を見てみると、前半の CIFS アクセスより後半の iSCSI アクセスの山が高い事がよくわかります。
仮想化時代の NAS 選び - やっぱり iSCSI は早い。_a0056607_16425860.jpg
CIFS を使ったリモートディスクのマウントは、他のPCからもアクセスができる、というメリットがありますが、iSCSI は単一のホストからのアクセスしかできません。<--- これ重要.... -- もっとも、ターゲットストレージを複数作って複数のサーバーから異なるデータ領域にアクセスはできますが -- バックアップ用途や、サーバーの増設ストレージとして考えれば、良い選択であると言えます。
もっとも、iSCSI デバイスそのものは、ターゲット単位で別々なホストから接続できます。しかし同じターゲットで別々のホストからイニシエータから繋ぐと、とても笑いごとにならない事態になるので、普通やりません。
ハイパーバイザー同士で一つのターゲットを共有してライブマイグレーションはしたことはあります。
こうした性能のわずかな違いが、仮想化システムのハイエンドな領域で違いとなって出てきます。なお Qnap でも openiSCSI でも Windows Storage Server でも取った領域そのままのサイズのでかいファイルが作成されるようです。
国産 NAS の「ハイエンド」と称する「LANxxxx」などのモデルでは Windows Storage Server を使って NTFS フォーマットしています。Windows Storage Server は見た目 Windows サーバーそのものなのですが、ところどころちゃんとデチューンされているようで、SOHO向けが限度です。
こういった国産 NAS メーカーの製品カタログでは、「ハイエンド」は Windows Storage Server を搭載して、低価格のNASは Unix 系のシステムで「低価格」を謳っていますが、そもそも、上位モデルは、CPUやメモリの性能が高いものが使われています。性能が違うのは当たり前なのですが、あまり性能が出ないだろうと思います。
Windows Storage Server じゃなくて、ちゃんとした Windows Server と CAL 買えよな、という事なのですね。
このあたりは独自OSを NAS としてチューニングした Qnap や Synology, asuster などの iSCSI 機能付きの NAS を中規模ネットワークのミドルレンジの NAS として利用したほうが良いと思います。
仮想環境でのネットワークアタッチストレージ(NAS)は、本回線(構内LAN)とは切り離し、ストレージ専用のネットワークとして独立して運用させるのが基本です。サーバーとNAS間で凄まじい通信が発生します。サーバーNICが2ポート以上のものが推奨されます。
iSCSI はあくまでもネットワーク上のストレージのみの機能を提供するものであり、ファイル共有の手段ではない、という事です。
NAS をCIFSで使うと NAS が持つ独自のアクセス権限を設定しなければなりません。セキュリティも当然 NAS 独自の機能で設定します。
iSCSI はあくまでも「外付け SCSI デバイス」のネットワーク版なので、マウントする側のOSそのもののファイルシステム、セキュリティ機能、アクセス制限がホスト側の機能をそのまま利用できます。セキュリティ的には、マウントする際のパスワード制限しかないので、独自のストレージネットワーク内に配置すべきで、ユーザが使う構内ネットワークに配置すべきではありません。
VSCodeとLanguageServerProtocolによって、人類は多様なプログラミング言語に対して安価でお手軽なIDE機能を手に入れた。
このような富豪的プログラミング環境において、「一つのファイルは最大400行!」がオールドファッションセオリーと化したことは明らかである。
そも、IDEとは何か。
人類は脳領域をテキストファイルに拡張することに成功したが、その頂きは未だ遠い。
ただ思い出す、と、テキストファイル群中から期待する箇所を装置に出力する、の間の容赦ない時間スケールの隔絶。
IDEはこの隔絶を埋めることができる。
思い出したい、と念じると同時に人はgdとキーを叩き、定義ジャンプする。
この時、人がジャンプしているのはファイルシステムのインデックスではない。
時間だ。
時間を跳躍したのだ。
・感じるのは自由
あなたの身体はあなたが管理しているものなので、感じたり思ったり内部でなにかをするのは問題ないです
「感じる自由は、ある」
その音声が拡散されてだれかに届いたりだれかの声がとどいたりすることを前提に管理されている方の自由です
黙れと言われたら黙るべきで、話していいといわれたら話してもよいはずです
たぶん管理側は~とかこういうルールが明記されているからおそらく~というのは~の部分が「あなたの自由」によるものなのでそれはいけません
ちゃんと管理側に許可をもらって権利を得てから自由を行使しましょう
面倒で難しいのは、これがウィンドウズのファイルシステムみたいに上位からの継承があったりなかったり、途中で権限を持つものが変わっていたり
すなおに直近の管理者に許可を得ればいいだけではない場合もあるので
注意をすべきで気にかけて自由とはなにかを問うときはその最上位から近くの現場までの経緯や相対的な位置と関係性を把握することにつとめるべきでしょう
簡単に言うとP2PのWebサイトを立ち上げる、あるいは利用する際に関わるプロトコルらしい。
中央サーバが存在しないことが利点だが、その代わりにコンテンツの保証というか担保がない。
このためIPFSの解説にはインセンティブを発生させるためにFilecoinが用意されているとしている。
が、普通に考えても不要になったコンテンツは分散型ファイルシステムから消える運命で、
個人的にはこれだけで世界中のインターネットが運営されることに懐疑的。
例えばWikipediaがあるい需要を終えてほとんどの人がアクセスしなくなったとして
いわゆるシードに当たる存在がいなくなった時点でWikipediaは消え去ってしまう。
これ、解釈としては間違ってるんだろうか?
最初のプログラミング言語として最もおすすめなのは、Bourne (Again) Shell。通称sh(bash)です。shはUNIXの標準的なシェルであり、bashはその拡張です。現在、多くのLinuxディストリビューションでは、bashが標準のシェルです。以下、これらのシェルの上で動作するコマンド言語およびそれによって作られたプログラムを指して「シェルスクリプト」と呼ぶことにします。
シェルスクリプトを最初のプログラミング言語におすすめする理由は、主にその実用性にあります。ほとんどのプログラミング学習者にとって、プログラミングで実現したいことは、「10000以下の素数を求める」などの教科書の課題のようなものではなく、大量のファイルから情報を検索するとか、インターネットから定期的にコンテンツを取得する、などの具体的なタスクのはずです。シェルスクリプトを使えば、後者のような実用的なプログラムを手軽に作成できます。一方、多くのプログラミング入門書には、制御構文などの細かい説明はあっても、後者のようなトピックはあまり載っていません。というのも、そのような機能は汎用的なプログラミング言語(C、Java、Python、Rubyなど)のコアの機能ではないからです。それらの機能は通常、ライブラリによって提供されます。したがって、汎用的なプログラミング言語で実用的なことをしようと思えば、外部モジュールの読み込みや、場合によってはパッケージ管理ツールを使ったライブラリのインストール方法などを学ばなければいけません。これらは、初学者にはいささかハードルが高いです(たとえば、Webフロントエンドのツール群を初学者が独学でインストールするなどは、ほぼ不可能でしょう)。一方、シェルスクリプトでは、grep、sed、awkのようなシェル上のユーティリティは全て、他の言語における組み込みの関数と同様です。つまり、モジュールのインポートや初期化処理などを行わずに使用することができます。
また、シェルスクリプトは、より本格的な言語やフレームワークへステップアップする過程としても非常に適しています。プログラミング入門書ではほとんど語られないことですが、プログラミングにおいては「プログラミング言語以外の技術」がプログラミング言語自体と同様に重要です。たとえば、ファイルやディレクトリを操作するには、OSのファイルシステムにアクセスしなければいけませんし、インターネットからコンテンツを取得するには、HTTPというネットワークプロトコルを知らなければいけません。シェルスクリプトを使う場合、それら「プログラミング言語以外の技術」を自然に利用します。それらは、プロのエンジニアを目指す上でも欠かせない知識です。また、多くのプログラミング言語では、制御構文を用いて変数の値を更新していくプログラミングスタイルが取られます。一方、シェルスクリプトでは、コマンドの出力を他のコマンドの入力に渡してデータを変換するプログラミングスタイルが取られます。後者のスタイルは、現代のソフトウェア開発では多くの場合、良いスタイルだと認識されています。シェルスクリプトを最初に学ぶことで、そのような良いプログラミングスタイルが身につきます。