ハードリンクの問題

iMacのファイルサーバとして,Linuxを立ち上げています.

ファイル共有として,AFP (Apple Filing Protocol)をLinuxに導入しています.


Linuxの中に保存されているファイルは,特にpdfやMS-officeファイルはハードリンクを使って,同一のファイルを

作成日時,作成者,目的別の3種類の分類をして,別々のフォルダーに入れています.ハードリンクなので,実体はひとつです.


問題点1.たとえば,imacから,ファイルサーバにあるwordファイルを編集して保存すると,3つリンクがあるはずのものが

リンクが切れてしまいます.


問題点2. これは,さらに深刻な問題です.iMacのファインダからハードリンクされている3つのファイルのうち一つを削除すると,

残りの二つも見えなくなります.ファイルが存在しているのにもかかわらず.

ただし,一度AFP接続を切って,再接続するとファイルが存在が見えるようになります.


よろしくお願いいたします.

田中

iMac, OS X Mountain Lion (10.8.2)

投稿日 2014/08/01 01:56

返信
返信: 11

2014/08/01 04:04 Tanaka_Kurochan への返信

問題点1.たとえば,imacから,ファイルサーバにあるwordファイルを編集して保存すると,3つリンクがあるはずのものが

リンクが切れてしまいます.

どうやら、Darwin単独でも再現出来るので、Darwin側のバグのようです。 (OSX 10.8.5とOSX 10.9.4で確認しました。)


Apple - フィードバック

2014/08/01 06:16 Tanaka_Kurochan への返信

> 問題点1.


Office アプリはファイルを更新する場合でも、ファイルに変更を加えている段階で、全く新しいファイルとして臨時のファイル名で保存しており、変更が完了した時点(ユーザが保存とした時点)で最後に名前を元のものに変更してます。なので、この過程でリンクが切れるのは仕方ないのでは?ファイルシステムの問題というよりは、Officeのファイル更新の仕方に関係しているように思います。Office側からは、この方式は、意図しない事故でファイルがなくなる(消えてしまう)のを防ぐためにこんな方式でやっているのではないかと思います。


> 問題点2


本来、ハードリンクなら、実態は一つの同じファイルですから(ファイルはノード番号で指定される)、一つを消せば、全部が消えるのはハードリンクの仕様では?

(むしろ、消えないのが理解出来ません)

おっしゃるような振る舞いにしたいのなら、シンボリックリンクにすべきでは?

シンボリックリンクなら、しかるべきノードには元ファイルを指示するノード番号が書き込まれてますので、削除しても、そのリンクが消えるだけになるのでは?

シンボリックリンクなら、MacOSXのエイリアスみたいな振る舞いになるのでは?

2014/08/01 06:46 はに への返信

> 問題点1.


Office アプリはファイルを更新する場合でも、ファイルに変更を加えている段階で、全く新しいファイルとして臨時のファイル名で保存しており、変更が完了した時点(ユーザが保存とした時点)で最後に名前を元のものに変更してます。なので、この過程でリンクが切れるのは仕方ないのでは?ファイルシステムの問題というよりは、Officeのファイル更新の仕方に関係しているように思います。Office側からは、この方式は、意図しない事故でファイルがなくなる(消えてしまう)のを防ぐためにこんな方式でやっているのではないかと思います。

ハードリンクの動作が、Linuxと挙動が異なっているかと思います。

Linuxの場合だと、マスタ・リンク1・リンク2・リンク3のテキストファイルを用意し、リンク3を任意の値に更新するとマスタ・リンク1・リンク2はリンク3の更新内容が反映します。

Macの場合だと、質問者様と同じくNGになります。

2014/08/01 07:07 蝦夷_オカメの親 への返信

調査結果の補足です。


Macの場合ですと、vi/nanoとかのコマンドラインで実行するエディタなどでは、ハードリンクとして機能しているようです。

問題は、GUIのテキストエディタなどで編集した場合に不具合を引き起こしているようです。

2014/08/01 09:26 はに への返信

はに様,蝦夷_オカメの親様,


詳しい調査,およびご親切なコメント,ありがとうございます.

問題点1について

たぶん,それが正しい答えなのでしょうね.Unixの場合は,ハードリンクの実体はひとつなので,それを編集すればどのファイルを見ても編集が反映されていますが,Officeの場合は,保存するときに,元のファイルを消して,一時ファイルで置き換えるのですね.


はに様の問題点2についての回答ですが,ハードリンクの概念を間違って理解されているように見受けられます.

Unixでは,ハードリンクされているファイル群に対して,一つ削除しても,すべてが消えることはありません.

最後の一つを消すまで,実体は残ります.これはUnixの仕様です.

シンボリックリンクが危険なのは,親のファイルを消してしまうとすべてが消えてしまう点にあります.

ハードリンクでは,そのような事故は起こりません.


しかし,この問題をよく考えてみますと,一度AFP接続を切って,再接続するとファイルが存在が見えるようになります.

したがって,そんなに深刻ではないような気がしてきました.

しかし,実用上は困るのです.ファイルサーバーや仕事でつかうiMacは基本的に電源は一年中切らない(onのまま)ですので,

たまにファイルが消えてしまったと勘違いして,あわてふためくことがたびたびあります.

Macにマウントされているフォルダーには,あるはずのファイルが隠れて見えないだけなのですが,

結局,Unix上で記憶をたどりながら,find コマンドを駆使して見つけ出しますことになります.

これもやはり,MacOSファイルシステムの仕様なのでしょうか.いったいどういう仕組みになっているのでしょう.

2014/08/01 16:36 Tanaka_Kurochan への返信

Officeの場合は,保存するときに,元のファイルを消して,一時ファイルで置き換えるのですね.

Mac版LibreOffice 4.3.0で検証して見ましたが、ハードリンクは壊れませんでした。


テンポラリファイルを保存する際、置換するアプリは、ハードリンクは壊れるようです。


<Linux側の検証結果>

・openSUSE 13.1のKWriteではハードリンクは壊れました。

・openSUSE 13.1のLibreOfficeではハードリンクは壊れません。

・CentOS 6.5、Ubuntu 14.04のGeditではハードリンクは壊れません。

2014/08/01 16:45 Tanaka_Kurochan への返信

> 最後の一つを消すまで,実体は残ります


そうでした。ぼけてました。

MacOSXでも、TimeMachineはハードリンクを駆使してます。これではファインダーでファイルを消しても(やっちゃいけないことになってます)、他のハードリンクされた同じファイルは消えることはありません。なので、AFPでうまく動作しないというのは、Linux上のAFPの振る舞いに関係している可能性があるのでは?AFPは何で動作させてるのでしょうか?netatalkとかですか?バージョンとか新しくすると振る舞いが変わるとかの可能性は?

あるいはOSXサーバでも同じなのでしょうか?

2014/08/01 21:00 Tanaka_Kurochan への返信

Tanaka_Kurochan による書き込み:


Unixの場合は,ハードリンクの実体はひとつなので,それを編集すればどのファイルを見ても編集が反映されていますが,Officeの場合は,保存するときに,元のファイルを消して,一時ファイルで置き換えるのですね.

UNIXであろうと、編集の場合、一時ファイルを作っていると思いますけど、


問題は、

・MS-Officeがそもそもネットワークに対応しているのかどうか(ファイル属性(ハードリンク)を承継するようになっているかどうか)

・UNIX上のAFPサービスがファイル属性(ハードリンク)の承継をサポートしているか。

では?

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

ハードリンクの問題

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。