ZFS mozgatás másolás nélkül

Sziasztok,

Kezdő ZFS felhasználóként a következőket tettem: két régi, kisebb HDD-ről egy nagy SSD-re másoltam anyagokat.

Ezt úgy tettem, hogy az ssd_pool/root datasetbe tettem a hdd1 anyagait, a ssd_pool/root/hdd2-be pedig a hdd2 anyagait, hogy miért az már lényegtelen, így sikerült send/recv-elni a régi HDDkról.

A kérdésem, hogy miképpen tudom megszüntetni az ssd_pool/root/hdd2-t, azáltal, hogy a rajta található fájlokat az ssd_pool/root-be szeretném átmozgatni.

Amikor megpróbáltam, akkor észrevettem, hogy ez fizikai másolással jár, amit nem igazán értek, hiszen a mozgatás még ext4-nél is egy gyors művelet volt, csak áttette a bejegyzést egy másik könyvtárba és kész.

Van eset, amikor az egyszerű mv is másolás nélkül megy ZFS-en? Beállításokon, a datasetek elrendezésén múlik? (tekintve, hogy szülő-gyerek módon vannak a datasetek, főleg nem kellene akadály legyen ez..)

Valami más mód amivel tudok másolásmentesen mozgatni? (clone?)

Azért érdekel, mert egyrészt nem szeretném az SSD-t feleslegesen írni, másrészt mi történik, ha nincs annyi szabad hely, hogy egy adott fájl kétszer is elférjen mielőtt törölné az eredetit?

Nekem idáig úgy tűnt, hogy a pool az, ami a fizikai hardverrel van közelebbi kapcsolatban, a datasetek inkább logikai elválasztást jelentenek. De több helyen is azt olvastam, hogy mozgatás szempontjából két dataset az mint két önálló fájlrendszer funkcionál.

Valaki légyszives homályosítson fel! :)

Hozzászólások

Szerkesztve: 2021. 10. 07., cs – 22:38

Szerintem az inode-átpakolásos mozgatás csak adott fizikai adathordozón belül működik. Te pedig egy olyan adathordozóra akarsz adatot mozgatni, ahol az még nincs jelen.

Debian - The "What?!" starts not!
http://nyizsa.blogspot.com

Amit leirtal, nem biztos, h tutira ertem.

 

> Nekem idáig úgy tűnt, hogy a pool az, ami a fizikai hardverrel van közelebbi kapcsolatban, a datasetek inkább logikai elválasztást jelentenek. De több helyen is azt olvastam, hogy mozgatás szempontjából két dataset az mint két önálló fájlrendszer funkcionál.

A pool-ban vannak a disk-ek. A pool-on vannak a dataset-ek, amik valoban olyanok, mint kulon filerendszerek (particiokon filerendszer).

Pool-ok kozott file-okat mozgatni csak masolas+torlessel tudsz. Pool-ok kozott tudsz datasetek-eket is mozgatni (masolni).

 

Azonos pool-on belul dataset-ek kozott szinten csak masolas+torles segitsevel tudsz mozgatni. Azonos pool-on belul dataset-et tudsz mozgatni (zfs rename).

 

Azonos dataset-en belul tudsz mozgatni file-okat, mintha azonos particion belul csinalnad pl. ext4-en.

Lehet hogy furcsa ez a kérdés, de több tutorialban is pl azt írják, hogy tedd a fájlrendszer rootot egy datasetre, azán az idő előrehaladtával ha szükséges további gyerek dataseteket csinálhatok, pl mondjuk a /var/lib/postgresql-t ami eddig a rooton volt egyszerű könyvtár, külön datasetre teszem (mondjuk ha a root dataset neve ssd/root, akkor ez lehet ssd/var/lib/postgresl). A tutorialokban ilyenkor azt írják, hogy ekkor a gyerek dataset az a szülőn belül van logikailag (a propertyk öröklődnek, ha a szülő mérete le van korlátozva, az a gyereket is lekorlátozza, stb.). Ebből én azt vontam le (ezek szerint tévesen), hogy ilyen esetekben a két dataset között valamiféle szorosabb kapcsolat van, amely inkább arról szól, hogy finomítani tudom az örökölt propertyket, külön tudom snapshotolni a hierarchyban feljebb levő datasettől, stb. Ezért feltételeztem, hogy miért is ne tudna ez esetben mozgatni (nem másolni+törölni) a kettő között.

De még ha nem is lenne szülő-gyerek viszony a datasetek között, ha a dataset beállításai azonosak (tömörítés, stb.) akkor se látom, hogy miért ne lehetne mozgatni a fájlt, hiszen ugyanazon a poolon belül van, ugyanazon a hardveren.

Gondolom a válasz a ZFS belső felépítésével van kapcsolatban? Hogy a datasetek adatait tényleg teljesen elkülönítve tárolja a hardveren?

Szerkesztve: 2021. 10. 08., p – 10:17

De több helyen is azt olvastam, hogy mozgatás szempontjából két dataset az mint két önálló fájlrendszer funkcionál. ... külön tudom snapshotolni a hierarchyban feljebb levő datasettől

Jól látszik , ha a snapshotokat megnézed. Minden datasetnek önálló snapsotja van, a "gyerek" dataset-nek is.

Kipróbálhatod,  dataset gyökérben # cd .zfs (zfs rejtett könyvtárban lesznek a snapsotok).