Czy możliwe jest, aby partycje root i home miały różne systemy plików i były zlokalizowane na oddzielnych urządzeniach fizycznych?

10

Wyobraź sobie, że sformatowałem katalog główny systemem plików ext3 na osobnej partycji, która istnieje na dysku SATA HDD, a katalog osobisty na innej partycji btrfs, która tak naprawdę istnieje na dysku SSD firmy Intel.

Pobrałem plik z Internetu i tymczasowo zapisałem go /tmp(w głównym systemie plików), a następnie postanowiłem przenieść go do mojego katalogu domowego (druga partycja).

Wyczuwam w tle bolesny proces, dzięki któremu tak proste mvpolecenie działa.

Po pierwsze, czy root i home mogą mieć różne systemy plików? Po drugie, zakładając, że odpowiedź na poprzednie pytanie jest „tak”, w jaki sposób system operacyjny zarządza wszystkim, że przejście od ext3do btrfs, a następnie przy użyciu różnych sterowników dla różnych typów dysków (HDD i SSD)?

Karim Manaouil
źródło
3
Robi się to z warstwami. Warstwa systemu plików jest wbudowana w warstwę urządzenia blokowego. Możesz użyć dowolnego odpowiedniego systemu plików w warstwie systemu plików. Możesz użyć dowolnego odpowiedniego urządzenia blokowego w tej warstwie urządzeń blokowych. Każdy punkt montowania może mieć własny system plików i urządzenie.
trociny
@sawdust, to bardzo interesująca rzecz, na którą wskazałeś, warstwa systemu plików i warstwa urządzenia blokującego. Jak się odnoszą? Wszelkie odczyty będą pomocne.
Karim Manaouil
Nie wiem zbyt wiele o systemach plików, ale zakładam, że proces ten nie różni się tak bardzo od kopiowania plików na zewnętrzny dysk FAT32
Blaine
Dlaczego nadal używasz ext3 w 2017 roku, skoro aktualizacja do ext4 jest tak prosta?
David Foerster,

Odpowiedzi:

25

Odpowiedź brzmi: tak, możesz mieć dowolny katalog na dowolnym urządzeniu, z dowolnym systemem plików obsługiwanym przez system operacyjny.

Możesz więc mieć, / /var /home /opta nawet /home/afr0ckna różnych urządzeniach, różnych partycjach, różnych systemach plików.

Nie tylko możesz, ale jest to powszechne. Na przykład, zawsze zalecane jest, aby utrzymać /vari /homena różnych partycjach, aby /jak to najprawdopodobniej przypadkowo zużywają miejsca na dysku - jeśli wypełni się, że nie ma wpływu na system zbyt dużo. Jeśli znajdują się na tej samej partycji co root, może to spowodować zatrzymanie systemu.

I możesz chcieć, aby różne katalogi działały na różnych urządzeniach ze względu na szybkość. I używaj różnych systemów plików do różnych celów. Na przykład, być może ext4 jest tym, czego potrzebujesz dla plików systemu operacyjnego, ponieważ niewiele się zmieniają, ale możesz chcieć btrfs dla / home, abyś mógł zachować migawki dla kopii zapasowych. Są to wszystkie decyzje, które każda osoba może podjąć w konkretnym przypadku użycia.

Część systemu operacyjnego w przestrzeni użytkownika nie musi rozumieć różnych typów urządzeń i systemów plików. Wszystko, co robi, wymaga od jądra przeniesienia pliku, a jądro organizuje wszystko stamtąd. Tak więc mvpolecenie (na przykład) jest agnostyczne dla systemu plików i typu urządzenia. Jądro wywołuje wszystkie sterowniki potrzebne do odczytu i zapisu na różnych partycjach.

Paweł
źródło
7
Warto zauważyć, że mv(1)pierwsza próba rename(2)pliku. Potem wraca do kopiowania i usuwania. Tak więc próba zmiany nazwy polega mvna ustaleniu, czy jest to możliwe w sposób agnostyczny FS. ( rename(2)zawsze kończy się niepowodzeniem podczas przechodzenia między różnymi urządzeniami, niezależnie od tego, czy używają tego samego sterownika systemu plików, czy nie, @ afr0k.)
Peter Cordes
1
@PeterCordes huh, nie wiedziałem, że zmiana nazwy to coś. Zawsze używałem mv do zmiany nazw rzeczy.
5
@stanri: mvnie rozwidla / nie wykonuje rename(1)polecenia, po prostu próbuje rename(2)wywołać system. Nie ma standardowego renamepolecenia powłoki. W niektórych systemach jest to polecenie zmiany nazwy pliku z wieloma podstawieniami z pliku ut-linux. Nie mówiłem o poleceniu powłoki, tylko o tym, jak mvdziała wewnętrznie.
Peter Cordes,
Nawet / usr może znajdować się na innej partycji, dlatego niektóre naprawdę niezbędne rzeczy znajdują się w / bin / lib i / sbin - czy wszystkie instalatory będą to obsługiwały, to inna sprawa.
rackandboneman
7

Tak, oddzielne systemy plików (punkty instalacji) mogą być różnymi typami systemów plików.  /procjest zawsze systemem procfsplików i /syszawsze jest sysfs. Przejściowe systemy plików (czasami łącznie /tmp) są często tmpfs, a w ustawieniach grupy roboczej często katalogami domowymi użytkownika (i katalogami produktów pracy) są nfsinne typy zdalnych (sieciowych / współdzielonych) systemów plików.

Nie ma żadnego specjalnego zarządzania dla systemu operacyjnego. Do pewnego stopnia, na poziomie użytkownika, wszystkie systemy plików wyglądają podobnie, w tym sensie, że lslista będzie wyglądać prawie tak samo w każdym katalogu. Poza tym systemy plików nie działają. Nawet między dwoma systemami plików (partycjami) na tym samym dysku fizycznym, tego samego typu systemu plików, nie ma powiązania 1 . Na przykład przenoszenie pliku z jednego systemu plików (punktu montowania) do innego zawsze wymaga wykonania kopii i usunięcia oryginału. Nie ma znaczenia, czy są to partycje na różnych dyskach. Nie ma znaczenia, czy jeden z nich jest dyskiem twardym, a drugi dyskiem SSD. Nie ma znaczenia, czy ktoś jest, ext3a kto jestbtrfs. Nie ma znaczenia, czy jeden jest wewnętrzny (wewnątrz obudowy komputera), a drugi zewnętrzny (kilka cali na zewnątrz, podłączony kablem) - czy zdalny (dostępny przez sieć).

Mówiąc o sieci, jest to trochę analogiczne do ssh. Odczytuje z klawiatury i wysyła wpisywane znaki do sieci. Jednocześnie odczytuje z sieci i wyświetla wyniki na ekranie.

Lub rozważ to: wyobraź sobie, że rozmawiasz przez telefon i prowadzisz rozmowę między osobą na drugim telefonie a inną osobą w pokoju. To nic wielkiego.
________
1 z wyjątkiem dowiązań symbolicznych - ale mogą one przekraczać granice systemu plików.

G-Man mówi „Przywróć Monikę”
źródło
1
W dużej mierze zgadzam się z twoją odpowiedzią, ale nie jest to tak naprawdę typowe, że / tmp jest tmpfs (chociaż może być ustawiony tak w niektórych dystrybucjach) - zwykle jest wyłączony z partycji root i czyszczony przy starcie systemu. Ubuntu tand typu redhat używa dystrybucji / dev / shm jako tmpfs,
davidgo
Byłem zmieszany. Zaktualizowałem swoją odpowiedź.
G-Man mówi „Reinstate Monica”
1
@davidgo: Jakie dystrybucje Linuksa nie są domyślnie ustawione /tmpna tmpfs? Pomyślałem też, że to dość standardowa praktyka, ponieważ zawsze możesz włożyć rzeczy /var/tmp(chociaż nie jest to czyszczone przy starcie). Nie jestem ekspertem od domyślnych ustawień cross-distro, tylko Debian / Ubuntu i Arch. Z tymi plus RedHat, który obejmuje dużą część zainstalowanych systemów Linux (ale nie tak bardzo dużą część całkowitej dystrybucji).
Peter Cordes,
(ignorowanie systemów osadzonych) Używam tylko Centos i Ubuntu regularnie - oba używają dysku dla / tmp. - Jestem prawie pewien, że oznacza to, że Debian, Redhat i Mint będą przestrzegać tej samej konwencji. Moje urządzenie z Androidem nie ma / tmp
davidgo
2
@PeterCordes Wzrost popularności tmpfsLinuksa nastąpił dopiero w ciągu ostatnich 5-7 lat. np. Fedora omawiała zmianę na swojej wiki ~ 2012 i wierzę, że została wprowadzona w Debian Wheezy.
Bob