Jeśli będziesz robił twarde linki, zwróć uwagę na prawa do tego pliku. Informacja, właściciel, grupa, tryb, rozszerzone atrybuty, czas i lista ACL (jeśli go używasz) są przechowywane w INODE. Różne są tylko nazwy plików, ponieważ są one przechowywane w strukturze katalogów, a inne wskazują na właściwości INODE. To powoduje, że wszystkie nazwy plików powiązane z tym samym i-węzłem mają takie same prawa dostępu. Powinieneś zapobiec modyfikacji tego pliku, ponieważ każdy użytkownik może uszkodzić plik na innym. To jest proste. Wystarczy, że każdy użytkownik umieści inny plik pod tą samą nazwą. Numer i-węzła jest następnie zapisywany, a oryginalna zawartość pliku jest niszczona (zastępowana) dla wszystkich nazw podlinkowanych.
Lepszym sposobem jest deduplikacja na warstwie systemu plików. Możesz użyć BTRFS (ostatnio bardzo popularny), OCFS lub podobnego. Spójrz na stronę: https://en.wikipedia.org/wiki/Comparison_of_file_systems , szczególnie w tabeli Funkcje i deduplikacja danych w kolumnie. Możesz kliknąć i posortować :)
Spójrz szczególnie na system plików ZFS. Jest dostępny jako BEZPIECZNIK, ale w ten sposób działa bardzo wolno. Jeśli potrzebujesz natywnego wsparcia, zajrzyj na stronę http://zfsonlinux.org/ . Następnie musisz załatać jądro, a następnie zainstalować narzędzia ZFS do zarządzania. Nie rozumiem, dlaczego Linux nie obsługuje sterowników, jest to droga dla wielu innych systemów operacyjnych / jąder.
Systemy plików obsługują deduplikację na dwa sposoby, deduplikują pliki lub bloki. ZFS obsługuje blok. Oznacza to, że tę samą treść, która powtarza się w tym samym pliku, można deduplikować. Innym sposobem jest czas deduplikacji danych, może to być tryb online (zfs) lub offline (btrfs).
Zauważ, że deduplikacja zużywa pamięć RAM. Dlatego zapisywanie plików na woluminie ZFS zamontowanym za pomocą FUSE powoduje dramatycznie niską wydajność. Jest to opisane w dokumentacji. Ale możesz ustawić online włączanie / wyłączanie deduplikacji na poziomie głośności. Jeśli zauważysz, że jakieś dane powinny zostać deduplikowane, po prostu włącz deduplikację, przepisz jakiś plik do dowolnego pliku tymczasowego i ostatecznie zastąp. po tym możesz wyłączyć deduplikację i przywrócić pełną wydajność. Oczywiście do pamięci można dodać dowolne dyski pamięci podręcznej. Mogą to być bardzo szybkie dyski obrotowe lub dyski SSD. Oczywiście mogą to być bardzo małe dyski. W prawdziwej pracy jest to zamiennik pamięci RAM :)
Pod Linuksem powinieneś zadbać o ZFS, ponieważ nie wszystkie działają tak, jak powinny, szczególnie gdy zarządzasz systemem plików, tworzysz migawki itp., Ale jeśli wykonujesz konfigurację i nie zmieniasz jej, wszystko działa poprawnie. Innym sposobem jest zmiana Linuksa na opensolaris, natywnie obsługuje on ZFS :) To, co jest bardzo miłe w ZFS, działa zarówno jako system plików, jak i menedżer wolumenów podobny do LVM. Nie potrzebujesz go podczas korzystania z ZFS. Zobacz dokumentację, jeśli chcesz dowiedzieć się więcej.
Zwróć uwagę na różnicę między ZFS i BTRFS. ZFS jest starszy i bardziej dojrzały, niestety tylko pod Solaris i OpenSolaris (niestety uduszony przez oracle). BTRFS jest młodszy, ale ostatnio bardzo dobrze obsługiwany. Polecam świeże jądro. ZFS ma deduplikację online, która powoduje spowolnienie zapisu, ponieważ wszystko jest obliczane online. BTRFS obsługuje dedupliakcję off-line. Następnie oszczędza to wydajność, ale gdy host nie ma nic do roboty, od czasu do czasu uruchamiasz narzędzie do wykonywania deduplikacji. A BTRFS jest natywnie tworzony pod Linuksem. Może to dla ciebie lepszy FS :)