RHEL 5.4: directories linked, files zelfde inode nummer

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • 0siris
  • Registratie: Augustus 2000
  • Laatst online: 04-10 12:39
situatie:

RHEL 5.4:
/dir1/subdirA
/dir2/subdirB

files in /dir1/subdirA zijn dezelfde als /dir2/subdirB. In het verleden heb ik tussen de 2 dirs inderdaad met symlinks gewerkt, wellicht per ongeluk een keer niet met ln -s (symlinks), gewerkt, maar met ln (hardlinks).
beide dirs en files in die dirs hebben dezelfde inode, beide dirs bevinden zich in verschillende mountpoints, andere disken / partities, iets wat met hardlinks kennelijk niet mag buiten een disk om...

Het programma dat deze dirs vult, denkt in /dir1 te schrijven, in de praktijk komt dit dus ook in /dir2 uit.

Ik heb geen idee waar dit door komt: ik krijg het zelf niet voor elkaar om in een testsituatie dir1 naar dir2 te hardlinken. De manfile van ln waarschuwt ook dat dit niet perse hoeft te werken (zie de "-d" parameter). Ik heb gegoogled op hoe hardlinks werken, dat werkt kennelijk niet over disken heen, toch is het me kennelijk gelukt :|
Ik vond hier een mooie beschrijving:

Graag zou ik /dir2 verwijderen, maar vermoed dat ik hiermee ook de inhoud van /dir1 verwijder.

Helaas kan ik niet veel testen (productieserver die de komende tijd geen geplande downtime heeft). dus ideeen / verdere zaken die ik kan uitzoeken van wat hier gebeurt, worden zeer gewaardeerd!

Als meer info nodig is, hoor ik het graag.

ach...in een volgend leven lach je er om!


Acties:
  • 0 Henk 'm!

  • Rainmaker
  • Registratie: Augustus 2000
  • Laatst online: 14-07-2024

Rainmaker

RHCDS

Je kan geen hardlinks maken tussen 2 verschillende filesystems.

Wat je nu waarschijnlijk hebt is een hardlink tussen dir1 en dir2 op het filesystem van je root device.

Dat je hier dan nog andere disken in mount, maakt niet zozeer uit.

Een van de eigenschappen van een hardlink is dat als je er 1 verwijderd, de data juist nog gewoon bewaard blijft.

code:
1
2
3
4
5
6
7
8
9
10
11
# echo bla > test
# ln test test2
# ls -li test*
4647271 -rw-r--r-- 2 root root 4 Feb  4 11:46 test
4647271 -rw-r--r-- 2 root root 4 Feb  4 11:46 test2
# cat test2 
bla
# rm test2 
rm: remove regular file `test2'? y
# cat test 
bla

We are pentium of borg. Division is futile. You will be approximated.


Acties:
  • 0 Henk 'm!

  • 0siris
  • Registratie: Augustus 2000
  • Laatst online: 04-10 12:39
Rainmaker schreef op vrijdag 04 februari 2011 @ 11:47:
Je kan geen hardlinks maken tussen 2 verschillende filesystems.
Mijn "situatie" is wel degelijk op verschillende filesystems. Ik schrijf expres "situatie", aangezien wat ik zie het meest op hardklinks lijkt, maar dat kan dus kennelijk niet :P
Wat je nu waarschijnlijk hebt is een hardlink tussen dir1 en dir2 op het filesystem van je root device.
't speelt zich niet af binnen zelfde filesystem rootdevice.
Een van de eigenschappen van een hardlink is dat als je er 1 verwijderd, de data juist nog gewoon bewaard blijft.
Daar lijk je gelijk in te hebben gezien hetgeen ik zojuist las. Maar wat heb ik nu aan m'n fiets hangen dan :?

ach...in een volgend leven lach je er om!


Acties:
  • 0 Henk 'm!

  • swbr
  • Registratie: Maart 2009
  • Laatst online: 05-10 15:37
Ik zou gewoon contact opnemen met RedHat support. Mijn ervaring is dat ze daar op alle vragen wel een antwoord weten te vinden.

Zeker aangezien het een productieserver betreft, daar zou ik niet zomaar lukraak mee gaan zitten klooien.

[ Voor 30% gewijzigd door swbr op 04-02-2011 13:28 ]

If you try and take a cat apart to see how it works, the first thing you have on your hands is a non-working cat. -DNA


Acties:
  • 0 Henk 'm!

  • silentsnake
  • Registratie: September 2003
  • Laatst online: 04-10 08:03
Antaresje schreef op vrijdag 04 februari 2011 @ 13:28:
Ik zou gewoon contact opnemen met RedHat support.
Dit. Je betaald die gasten niet voor niets.

Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 02-10 22:42

CAPSLOCK2000

zie teletekst pagina 888

Hardlinks tussen verschillende devices is echt onmogelijk. Als die inodes echt hetzelfde zijn dan zou mijn conclusie zijn dat ik een device ben 'verloren'.

is subdirA misschien een symlink naar subdirB (of andersom)?

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 03-10 18:29

deadinspace

The what goes where now?

0siris schreef op vrijdag 04 februari 2011 @ 11:42:
Het programma dat deze dirs vult, denkt in /dir1 te schrijven, in de praktijk komt dit dus ook in /dir2 uit.
Dat suggereert al dat het niet om hardlinks gaat; Een hardlink is feitelijk één file met meerdere namen. Als je die file wijzigt via één van zijn namen, dan verandert de inhoud ook als je hem via een van de andere namen benadert.

Maar hardlinks ontstaan niet spontaan voor nieuw aangemaakte files (ik neem aan dat je het daar over hebt).

Ik zou graag eens een ls -li output zien van "dezelfde" file in /dir1/subdirA en /dir2/subdirB:
$ ls -li /dir1/subdirA/eenfile /dir2/subdirB/eenfile


En verder kan de inhoud van /proc/mounts en /etc/mtab ons verder helpen:
$ cat /proc/mounts
$ cat /etc/mtab
Rainmaker schreef op vrijdag 04 februari 2011 @ 11:47:
Wat je nu waarschijnlijk hebt is een hardlink tussen dir1 en dir2 op het filesystem van je root device.
Je kunt in Linux (net als in de meeste andere Unices) geen hardlinks naar directories maken.

Acties:
  • 0 Henk 'm!

Verwijderd

Je kan een directory ook aan een andere directory 'mounten'.

code:
1
mount -o bind /van /naar

Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
deadinspace schreef op vrijdag 04 februari 2011 @ 16:30:
Dat suggereert al dat het niet om hardlinks gaat; Een hardlink is feitelijk één file met meerdere namen. Als je die file wijzigt via één van zijn namen, dan verandert de inhoud ook als je hem via een van de andere namen benadert.
Wat als de dirs zelf gehardlinked zijn?

Acties:
  • 0 Henk 'm!

  • Onno
  • Registratie: Juni 1999
  • Niet online
Je kunt directories niet hardlinken.

Acties:
  • 0 Henk 'm!

  • 0siris
  • Registratie: Augustus 2000
  • Laatst online: 04-10 12:39
om een lang verhaal kort te maken: vorige week is deze server eindelijk herstart, en het goede nieuws is dat het probleem weg is, het slechte dat ik er waarschijnlijk/hopelijk nooit meer achter kom wat het nou precies was ;)
Bedankt voor het meedenken in ieder geval.

ach...in een volgend leven lach je er om!


Acties:
  • 0 Henk 'm!

  • Big Mama
  • Registratie: Mei 2000
  • Laatst online: 19:54
Het commando 'ln' (in feite de systemcall die dat commando gebruikt) voorkomt dat je een directory hard linkt. Je kunt wel een symbolic link aanmaken met "ln -s", maar een symbolic link heeft zijn eigen inode-nummertje.

Een inode van het type directory kan wel meerdere namen hebben, maar die worden door het OS verzonnen. Bijvoorbeeld inode 12345 is een directory met de naam "pietje". Maar als die directory ook een subdirectory heeft, staat daarin de naam ".." die ook verwijst naar inode 12345. Zie daar, een directory die toch hard linked is.
Zonder met een editor in de inode-structuren te krassen kun je daar echter zelf geen invloed op uitoefenen.

Educated guess: omdat het na een reboot verdwenen was, denk ik dat iemand wat met het mount-commando aan het vogelen is geweest.

Computers follow your orders, not your intentions.

Pagina: 1