Có thể các phân vùng gốc và nhà có các hệ thống tập tin khác nhau và được đặt trên các thiết bị vật lý riêng biệt?


10

Hãy tưởng tượng tôi định dạng root bằng hệ thống tập tin ext3 trên một phân vùng riêng tồn tại trên ổ cứng SATA và thư mục chính trên phân vùng btrfs khác tồn tại trên SSD Intel.

Tôi đã tải xuống một tệp từ Internet và tạm thời lưu nó vào /tmp(trong hệ thống tệp gốc), sau đó tôi quyết định chuyển nó vào thư mục chính của tôi (phân vùng thứ hai).

Tôi có thể cảm thấy quá trình đau đớn xảy ra trong nền để làm cho một mvlệnh đơn giản như vậy hoạt động.

Vì vậy, đầu tiên, có thể cho root và home có các hệ thống tập tin khác nhau? Thứ hai, giả sử câu trả lời cho câu hỏi trước đó là "có", làm thế nào để hệ điều hành quản lý tất cả những gì chuyển đổi từ ext3tới btrfsvà sau đó sử dụng trình điều khiển thiết bị khác nhau với nhiều loại đĩa khác nhau (HDD và SSD)?


3
Nó được thực hiện với các lớp. Lớp hệ thống tập tin được xây dựng trên lớp thiết bị khối. Bạn có thể sử dụng bất kỳ hệ thống tập tin phù hợp trong lớp hệ thống tập tin. Bạn có thể sử dụng bất kỳ thiết bị khối phù hợp trong lớp thiết bị khối đó. Mỗi điểm gắn kết có thể có hệ thống tập tin và thiết bị riêng.
mùn cưa

@sawdust, đó là một điều rất thú vị mà bạn đã chỉ ra, lớp hệ thống tập tin và lớp thiết bị khối. Làm thế nào để họ liên quan? Bất kỳ bài đọc sẽ hữu ích.
Karim Manaouil

Không biết RẤT NHIỀU về các hệ thống tệp, nhưng tôi cho rằng quy trình sẽ không khác với sao chép tệp vào ổ đĩa FAT32 bên ngoài
Blaine


Tại sao bạn vẫn sử dụng ext3 vào năm 2017 khi việc nâng cấp lên ext4 quá đơn giản?
David Foerster

Câu trả lời:


25

Câu trả lời là có, bạn có thể có bất kỳ thư mục nào trên bất kỳ thiết bị nào, chạy bất kỳ hệ thống tệp nào mà HĐH có thể hỗ trợ.

Vì vậy, bạn có thể có / /var /home /optvà thậm chí /home/afr0cktrên các thiết bị khác nhau, các phân vùng khác nhau, các hệ thống tệp khác nhau.

Không chỉ bạn có thể, nhưng nó là phổ biến. Ví dụ, luôn luôn nên giữ /var/hometrên các phân vùng khác nhau /vì những thứ này rất có thể vô tình tiêu tốn dung lượng đĩa - nếu chúng lấp đầy, nó sẽ không ảnh hưởng đến hệ thống quá nhiều. Nếu chúng nằm trên cùng một phân vùng với root, nó có thể khiến hệ thống dừng lại.

Và bạn có thể muốn các thư mục khác nhau chạy trên các thiết bị khác nhau vì lý do tốc độ. Và sử dụng các hệ thống tập tin khác nhau cho các mục đích khác nhau. Ví dụ, có lẽ ext4 là những gì bạn muốn cho các tệp HĐH, vì chúng không thay đổi nhiều, nhưng bạn có thể muốn btrfs cho / home để bạn có thể giữ ảnh chụp nhanh để sao lưu. Đây là tất cả các quyết định có thể được đưa ra bởi mỗi người cho trường hợp sử dụng cụ thể của họ.

Phần không gian người dùng của HĐH không cần phải hiểu các loại thiết bị và hệ thống tệp khác nhau. Tất cả những gì nó yêu cầu kernel di chuyển một tập tin và kernel sắp xếp mọi thứ từ đó. Vì vậy, mvlệnh (ví dụ) là hệ thống tập tin và loại bất khả tri. Nhân gọi bất cứ trình điều khiển nào là cần thiết để đọc và ghi vào các phân vùng khác nhau.


7
Hữu ích để chỉ ra rằng mv(1)đầu tiên cố gắng vào rename(2)tập tin. Sau đó, nó rơi trở lại để sao chép và xóa. Vì vậy, cố gắng đổi tên là làm thế nào mvđể biết liệu nó có thể theo cách thức bất khả tri của FS hay không. ( rename(2)luôn thất bại khi di chuyển giữa các thiết bị khác nhau, cho dù chúng có sử dụng cùng trình điều khiển hệ thống tệp hay không, @ afr0k.)
Peter Cordes

1
@PeterCordes huh, tôi không biết đổi tên là một điều. Tôi đã luôn sử dụng mv để đổi tên mọi thứ.

5
@stanri: mvkhông fork / thực thi rename(1)lệnh, nó chỉ thử rename(2)cuộc gọi hệ thống. Không có renamelệnh shell tiêu chuẩn . Trên một số hệ thống, đó là lệnh đổi tên nhiều tệp thay thế mẫu từ produc-linux. Tôi đã không nói về lệnh shell, chỉ là cách thức mvhoạt động bên trong.
Peter Cordes

Thậm chí / usr có thể nằm trên một phân vùng khác, đó là lý do tại sao một số nội dung thực sự cần thiết nằm trong / bin / lib và / sbin - liệu tất cả các trình cài đặt sẽ hỗ trợ nó là vấn đề khác.
rackandboneman

7

Có, các hệ thống tệp riêng biệt (điểm gắn kết) có thể là các loại hệ thống tệp khác nhau.  /procluôn luôn là một procfshệ thống tập tin và /sysluôn luôn là a sysfs. Các hệ thống tệp tạm thời (đôi khi bao gồm /tmp) thường tmpfsvà trong cài đặt nhóm làm việc, thông thường các thư mục nhà của người dùng (và thư mục sản phẩm công việc của họ) là nfshoặc các loại hệ thống tệp từ xa (mạng / chia sẻ) khác.

Không có sự quản lý đặc biệt nào cho HĐH. Lên đến một điểm, ở cấp độ người dùng, tất cả các hệ thống tệp trông giống nhau, theo nghĩa là một lsdanh sách sẽ trông khá giống nhau trong bất kỳ thư mục nào. Ngoài thời điểm đó, các hệ thống tập tin không tương tác. Ngay cả giữa hai hệ thống tệp (phân vùng) trên cùng một đĩa vật lý, cùng loại hệ thống tệp, không có liên kết 1 . Ví dụ, di chuyển một tệp từ một hệ thống tệp (điểm gắn kết) sang một hệ thống khác luôn liên quan đến việc tạo một bản sao và xóa bản gốc. Không quan trọng nếu chúng là phân vùng trên các đĩa khác nhau. Không quan trọng nếu một trong số đó là HDD và một là SSD. Không quan trọng nếu một ext3và một làbtrfs. Không quan trọng nếu một bên trong (bên trong vỏ máy tính) và một bên ngoài (một vài inch bên ngoài, được kết nối bằng cáp) - hoặc từ xa (truy cập qua mạng).

Nói về mạng, nó hơi giống với ssh. Nó đọc từ bàn phím và gửi các ký tự bạn gõ vào mạng. Đồng thời, nó đọc từ mạng và hiển thị kết quả trên màn hình.

Hoặc xem xét điều này: hãy tưởng tượng bạn đang nghe điện thoại và bạn đang hòa giải một cuộc trò chuyện giữa người này với điện thoại khác và một người khác trong phòng. Nó không phải là một vấn đề lớn đâu.
________
1 ngoại trừ các liên kết tượng trưng - nhưng chúng có thể vượt qua ranh giới hệ thống tập tin.


1
Tôi phần lớn đồng ý với câu trả lời của bạn, nhưng nó không thực sự điển hình cho / tmp là một tmpfs (mặc dù có thể được đặt như thế trên một số bản phát hành) - nó thường tắt phân vùng gốc và được dọn sạch khi khởi động. Ubuntu tand Redhat loại distro sử dụng / dev / shm làm tmpfs,
davidgo

Tôi đã nhầm lẫn. Tôi đã cập nhật câu trả lời của tôi.
G-Man nói 'Phục hồi Monica'

1
@davidgo: Bản phân phối Linux nào không được mặc định /tmptrên tmpfs? Tôi cũng nghĩ rằng đó là cách thực hành tiêu chuẩn khá nhiều, vì bạn luôn có thể đặt đồ vào /var/tmp(mặc dù điều đó không được làm sạch khi khởi động). Tôi không phải là chuyên gia về mặc định phân phối chéo, chỉ là Debian / Ubuntu và Arch. Với những cộng với RedHat, nó bao gồm một phần lớn các hệ thống Linux được cài đặt ngoài đó (nhưng không lớn bằng một phần lớn trong tổng số các bản phát hành).
Peter Cordes

(bỏ qua các hệ thống nhúng) Tôi chỉ sử dụng Centos và Ubuntu thường xuyên - cả hai đều sử dụng đĩa cho / tmp. - Tôi khá chắc chắn điều này có nghĩa là Debian, Redhat và Mint đều sẽ tuân theo cùng một quy ước. Thiết bị Android của tôi không có / tmp
davidgo

2
@PeterCordes Sự trỗi dậy của tmpfsLinux chỉ gần đây trong khoảng từ 5 - 7 năm trở lại đây. ví dụ: Fedora đã thảo luận về sự thay đổi trên wiki của họ ~ 2012 và tôi tin rằng nó đã được giới thiệu trong Debian Wheezy.
Bob
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.