スパースファイルを作る

投稿者: | 12月 20, 2023

ついに、親が亡くなった。それも自宅で自分の誕生日の前日に。最期の12時間は親子2人での大格闘だったかもしれない。その動画が監視カメラのデータとして残っているが、もう見たくないが消せないなぁ。2年間会社に内緒で介護をしていたが、最期の2年間は人生で一番濃かった。介護休暇を周知徹底させるとか国が動いているが、しっかり親の面倒を見たい、看取りたいのであれば、絶対自分は介護離職をすることを勧める。自宅で看取るのは、それくらい贅沢だったと思う。大抵、人や会社に相談すると施設の話を言われるが、今のご時世、施設や病院は歩いて入って、面会ができないか、面会する時間もかなりわずかでご遺体で退去となる。お医者さんに、周りからそういう話をされたがと相談したが、「この場で、親の目の前で、親を捨てることができますか?」と。まぁ施設は致し方はないケースもあるとしても、まるまる丸投げとなるとそうなる。会社というか世間といては、丸投げを期待する。本人のどこまでの覚悟があって、どこからは任せたいという話がわからない人が言うとそうなる。そのお医者さんも、自分の状況を全て知っていたからそう言っただけだった。なので、施設はいけないと言うわけではなく、どんな状況で、誰が言ったかで解釈が異なる話。自分の場合、施設に入れるということはそう言う状況になるよということだった。なので、親が亡くなったその日も顔色変えずに仕事をしていた。

親が亡くなると、介護で満たしていた時間や気持ちがなくなり、心にすぽーっと空っぽな空間ができる。今回は、ファイルシステムに「すぽーっと空の空間を作る」には?という話である。ファイルを施設に入れてもできない。

 

閑話休題

 

ファイルには、実際にディスクを消費しているサイズとコマンドで表示されるファイルサイズは実は別だったりする。(大抵はほとんど同じだが。)この仕組みを使うと、ディスクの消費は0バイトだが、ファイルサイズは100GBというものが作れたりする。0で値を埋めていて、サイズを作っているのとは違う。ほんとサイズは0byteになる。

作り方

Windows

まず、作りたいサイズをbyteで16進数にした値を作成する。

0xF000000000=1030792151040byte=960GB

ちなみに作成できるのは、0xFFFFFFFFFFだと0.98TB (ほぼ1TB) まで。

 

PowerShellで以下を実行(以下の0xF000000000=960GB)

New-Item -ItemType file tempfile
FSUtil Sparse SetFlag tempfile
FSUtil Sparse queryflag testfile
FSUtil Sparse SetRange tempfile 0 0xF000000000
FSUtil File SetEOF tempfile 0xF000000000
FSUtil Sparse queryrange testfile

こうすると、以下のファイルができる。

ディスク上のサイズは0バイトで、サイズは、 960GB

ちなみに、出来上がったファイルをコピーすると、レポートされるファイルサイズを要求される。普通にコピーをしてもspase属性は維持されない。コピーをするなら都度作ったほうがいい。どうせ0なので。

 

 

Linux

truncateコマンドを使う。

Windowsと同じく960GBにしてみた。

truncate -s 960G testfile

 

確認は、duでもできるが、ls -lhsとすると、実際にディスクを消費しているサイズとレポートされるサイズがわかる。

ちなみに、Linuxのスパースファイルは、コピーをしてもsparse属性は維持される。しかし、都度コピーしても同じかと。

 

というわけで、これで自分の心とファイルに「すぽーっと空の空間」ができた。

 

 

コメントを残す