Hệ thống tệp vs phân vùng vs thư mục


29

Tôi chưa quen với Linux vì vậy xin lỗi tôi vì sự nhầm lẫn có thể bạn gặp phải trong câu hỏi này.

Theo những gì tôi hiểu, hệ thống tập tin chỉ định cách phân vùng lưu trữ / quản lý tệp, với các tiêu chuẩn như ext2, ext3, reiserfs, xfs, v.v. Thỉnh thoảng tôi thấy mọi người dường như đề cập đến từng " directory" như

    /boot filesystem
    /usr/bin filesystem
    /root filesystem
    /bin filesystem

Tại sao chúng ta sẽ đề cập đến những điều này như filesystems?

Nếu mỗi trong số chúng là một phân vùng, điều đó làm tôi bối rối vì theo như tôi biết, /usr/usr/bincó xu hướng ở trong cùng một phân vùng, nhưng tôi thấy mọi người đề cập đến cả hai /usr filesystem/usr/bin filesystem.

Nếu filesystemở đây tương đương với Window directory, thì tôi không rõ vì hệ thống tập tin rõ ràng không chỉ là thư mục. Ngoài ra, theo như tôi biết, Linux không có directorykhái niệm; tất cả đều là file


Tôi chưa bao giờ thấy một ví dụ của "hệ thống tập tin / root". Bất cứ hệ thống tập tin nào được gắn kết tại "/" là "hệ thống tập tin gốc". Một số điểm gắn kết có khả năng khác trên bản phân phối Linux hiện đại sẽ là "/ boot", "/ home" và "/ mnt / xx" hoặc "/ media / xx" cho các giá trị khác nhau của "xx". Các hạt nhân 2.x + (?) Sẽ có "/ Proc" và "/ sys", Systemd có các điểm gắn kết "/ var / run / nnnn" cho các UID số khác nhau nnnn. Các bản cài đặt Unix cũ hơn có thể gắn "/ usr" thông qua NFS, nhưng điều đó không thể xảy ra trên bản phân phối Linux cá nhân. "/ bin" và "/ usr / bin" thường không phải là các điểm gắn kết riêng biệt.
David

Có một / root , không có? Bạn có nghĩa là nó không bao giờ ở trong một hệ thống tập tin riêng biệt?
Kenny

Đúng. "/ root" là thư mục chính tiêu chuẩn cho người dùng "root", nhưng nó thường chỉ là một thư mục khác trên hệ thống tập tin gốc.
David

Chủ đề này đã được thảo luận rộng rãi trên Ask Ubuntu , IMNSHO, thật ngớ ngẩn, vì, AFAIK, các khái niệm không có gì khác biệt trên Ubuntu mà chúng thuộc bất kỳ dạng Unix hay Linux nào khác. Ví dụ, núi mount là gì? đã được hỏi chỉ vài ngày trước.
Scott

Tôi khá ấn tượng với các câu hỏi. Xuất phát từ ít kiến ​​thức bạn có thể hiểu được khá nhiều vào thời điểm này và bạn đã bỏ lỡ kết luận rằng "/ root filesystem" có thể đề cập đến hệ thống tập tin mà phân vùng được gắn vào /root, tôi nghĩ rằng có thể bỏ qua việc xem xét sự phức tạp của tình hình.
erikbwork

Câu trả lời:


13

Như tôi đã viết trong https://superuser.com/a/293160/38062 :

Vấn đề ở đây là từ "hệ thống tập tin". Trong thế giới POSIX / Unix / Linux, nó được sử dụng để chỉ một số điều khác nhau.

  1. "Hệ thống tập tin" đôi khi là toàn bộ hệ thống các tập tin, được bắt nguồn từ /và được trình bày cho các phần mềm ứng dụng bởi nhân hệ điều hành. Với ý nghĩa này, mọi người nói về các hệ điều hành POSIX có một " cây hệ thống tập tin duy nhất " chẳng hạn.
  2. Một "hệ thống tập tin" đôi khi là một (hoặc nhiều) lát của một (hoặc một vài) DASD (một) bộ sưu tập các lĩnh vực đĩa liền kề được định dạng như một đĩa với một định dạng nhất định - như được phân định bởi một số phân vùng đĩa kế hoạch. Với ý nghĩa này, mọi người nói về "định dạng /usrhệ thống tập tin của tôi ". " /usr" ở đây là điểm gắn kết (dự kiến) của âm lượng hoặc (trong một số sơ đồ phân vùng) nhãn nhận dạng của nó.
  3. Một "hệ thống tập tin" đôi khi là một tập tin trừu tượng của các tập tin và thư mục, được trình bày bởi trình điều khiển hệ thống tập tin (tức là lớp VFS) cho phần còn lại của hệ thống. Với ý nghĩa này, người ta nói về, nói, "gắn kết các hệ thống tập tin proc trên /proc" hoặc "sử dụng một tmpfs hệ thống tập tin cho /tmp".

Bạn đang thấy ý nghĩa số 1 khi bạn thấy " /usr/binhệ thống tập tin". Đó là một cây hệ thống tập tin bắt nguồn từ thư mục /usr/bin. Vâng, Linux rất nhiều không có khái niệm về thư mục.

Ý nghĩa số 2 và ý nghĩa số 3 là những gì bạn đọc sai. Mọi người không nói về /usr/binbộ dữ liệu trên đĩa, được phân định bằng cách cắt / phân vùng đĩa. Họ cũng không nói về /usr/binmột loại trình điều khiển hệ thống tập tin cụ thể, hoặc một định dạng âm lượng đĩa cụ thể.

đọc thêm

  • Ramesh Bangia (2010). "hệ thống tập tin". Từ điển Công nghệ thông tin . Ấn phẩm Laxmi, Ltd. ISBNIDIA 380298153. p. 224.
  • Hệ thống tập tin . "Định nghĩa cơ sở". Các thông số kỹ thuật cơ sở nhóm mở . Vấn đề 7 IEEE 1003.1. Nhóm mở. 2013.
  • Bình Nguyên (2004-08-16). "hệ thống tập tin". Từ điển Linux . Phiên bản 0.16. tr. 616.

7

Tất nhiên Linux sử dụng khái niệm thư mục. Khái niệm về thư mục giống như trong Windows.

Khái niệm về hệ thống tập tin cũng rất giống với những gì được sử dụng trong Windows. Windows thường sử dụng NTFS hoặc FAT - Linux thường sử dụng ext2, ext3, ext4, v.v., đó là tất cả sự khác biệt.

Điều khác biệt là, trong Linux, các tệp / thư mục từ tất cả các phần có sẵn được tổ chức thành một cây duy nhất. Trong Windows, bạn đề cập đến các phân vùng khác nhau bằng cách sử dụng một chữ cái, từ "a:", "c:", trong đường dẫn đầy đủ của Linux tới bất kỳ tệp có sẵn nào bắt đầu bằng "/" - thư mục gốc. Ví dụ, có một phân vùng riêng trên hdd của bạn với các tệp được sử dụng để khởi động hệ thống: bạn chạy lệnh 'mount' với các đối số phù hợp và nội dung của phân vùng này sẽ khả dụng tại đường dẫn "/ boot /". Vì vậy, các đường dẫn "/ boot" và "/ home" có thể tham chiếu đến dữ liệu trên các phân vùng khác nhau, các phân vùng này có thể có các hệ thống tệp khác nhau. Có lẽ gây ra sự hiểu lầm của bạn.

Các thư mục được đặt trên cùng một phân vùng sẽ luôn "có cùng hệ thống tệp". Khi ai đó nói về hệ thống tập tin của một số thư mục, đó thực sự là về hệ thống tập tin của phân vùng nơi thư mục này được đặt.

(Chỉnh sửa nhỏ và có thể không quan trọng: đôi khi hệ thống tệp là ảo và không có phân vùng tương ứng. Ví dụ "/ Proc" chứa một cái gì đó, trông rất giống các tệp, nhưng các "tệp" này là ảo, chúng không cư trú trên bất kỳ ổ cứng nào và chứa thông tin về các tiến trình đang chạy. Và có một hệ thống tệp "Procfs" đặc biệt cung cấp giao diện giống như tệp thông thường cho dữ liệu này)


Bạn đã đề cập đến "hệ thống tập tin của một thư mục", nó xếp tầng cho tất cả các thư mục con của nó. Có thể một thư mục và thư mục con của nó có hệ thống tập tin khác nhau? Ví dụ / A/ a / b , với / b là một phân vùng khác với F2 hệ thống tập tin riêng của mình gắn với một hệ thống tập tin có F1?
Kenny

Về việc các thư mục nằm trên cùng một phân vùng trên thực tế là một phần của cùng một hệ thống tệp có thể hơi mờ đối với một số hệ thống tệp rất hiện đại như ZFS hoặc btrfs; bạn có thể có một khối ZFS với một số hệ thống tệp chia sẻ nó, với các điểm gắn kết hoàn toàn riêng biệt của chúng.
Charles Duffy

@Kenny Vâng, bạn nói đúng. Ví dụ trực tiếp: Tôi chèn một đĩa compact vào ổ đĩa cd. Linux của tôi gắn CD ở "/ mount / cdrom". Thư mục "/ mount" (và mọi tệp tôi tạo trong đó) nằm trên ổ cứng của tôi. Nhưng nội dung "/ mount / cdrom" đã có trên CD.
lesnik

6

Một đĩa được chia thành một hoặc nhiều phân vùng . Đối với Windows, thường chỉ có một, có thể có phân vùng khôi phục ẩn ở đâu đó. Phân vùng là một khu vực tiếp giáp logic của đĩa, ví dụ: "sector 1 đến 10.000.000".

Trên một phân vùng có thể được xây dựng một hệ thống tập tin. Đối với Windows, đây là NTFS hoặc FAT; đối với Linux, đây là một trong những extphiên bản hoặc nhiều tùy chọn khác.

Bên trong một hệ thống tập tin là các tập tin và thư mục. Linux có các thư mục, tôi không biết làm thế nào bạn có ý tưởng rằng nó không có.

Làm thế nào để một hệ điều hành trình bày nhiều phân vùng trên nhiều đĩa cho người dùng? Trên Windows, điều này được thực hiện với ký tự ổ đĩa : C:, D:vv Trên Linux, không có ký tự ổ đĩa và tất cả mọi thứ được thực hiện với điểm lắp : tại một thư mục cụ thể, truy cập định tuyến lại đến một hệ thống tập tin khác nhau (+) Thông thường nếu bạn chèn một đĩa CD. hoặc thanh USB nó sẽ xuất hiện ở đâu đó bên dưới /mediahoặc /mnt.

/usr/usr/binthường sẽ nằm trên cùng một hệ thống tập tin nhưng không bắt buộc phải như vậy. Mọi người có thể có nghĩa là "hệ thống tập tin có chứa /usr/binthư mục" khi họ sử dụng cụm từ đó.

(+) Bạn cũng có thể làm điều này với các điểm nối NTFS, nhưng mọi người hiếm khi làm điều đó. Cho đến khi họ hết ký tự ổ đĩa.


Sửa lỗi cho tôi nếu tôi sai: Trên Linux, 1 đĩa vật lý có thể được chia thành nhiều phân vùng, mỗi phân vùng có hệ thống tệp riêng? Tương tự như cách một ổ cứng trên Windows chứa một số phân vùng, một phân vùng có thể là FAT và NTFS khác?
Kenny

1
Vâng, bạn đã đúng: nhưng nó không giống nhau, nó chính xác là cùng một cơ chế cơ bản. Các máy khởi động kép có thể có các phân vùng NTFS và ext3 trên cùng một đĩa và trình quản lý đĩa của mỗi hệ điều hành sẽ nhìn thấy cùng một bộ phân vùng. Chỉ là Windows không thể thấy gắn kết các phân vùng ext3 để xem các tệp.
pjc50

3

Có thể giữ toàn bộ hệ thống Linux trên một phân vùng, với tất cả các thư mục con nằm trên một hệ thống tệp.

Cũng có thể trải rộng nó trên một số phân vùng, với các thư mục nhất định nằm trên các hệ thống tập tin khác nhau. Ví dụ, nó phổ biến để đưa /home, /tmp, /usr, và /vartrên hệ thống tập tin riêng biệt. Để giải quyết một trong những câu hỏi của bạn, đôi khi /usr/bincũng sẽ nằm trên hệ thống tệp của chính nó.

Có những lợi thế cho chương trình này. Ví dụ: nếu /varlấp đầy rất nhiều email, phần còn lại của hệ thống sẽ không bị ảnh hưởng. Tương tự như vậy, nếu một hệ thống tệp bị hỏng do sự cố hoặc do sự cố, các hệ thống tệp khác vẫn tốt và việc khôi phục hệ thống dễ dàng hơn.

Khi hệ thống khởi động, lúc đầu chỉ có hệ thống tập tin gốc có sẵn. Các chương trình được giữ ở đó được chạy trong quá trình khởi động. Một trong những chương trình này mount, được chạy nhiều lần, sử dụng dữ liệu từ tệp /etc/fstab, bảng hệ thống tệp. Lấy một ví dụ: ban đầu, /homechỉ là một thư mục bình thường trong hệ thống tập tin gốc. Sau đó, chúng tôi chạy lệnh này với quyền root:

mount /dev/sda7 /home

Điều này cho hệ thống biết rằng hệ thống tập tin trên phân vùng /dev/sda7 nên được gắn trên thư mục /home. Vì vậy, bây giờ, mọi thứ trong hệ thống tập tin đó được coi là dưới /home.

Bạn có thể thấy những gì hiện đang được gắn kết bằng cách chạy df.


3

Đôi khi chúng ta đề cập đến những điều đó filesystems, bởi vì đôi khi những thư mục đó là điểm gắn kết. Quá nhiều cho câu hỏi duy nhất bạn hỏi ...

filesystem có thể đề cập đến hai điều khác nhau ... hoặc thực sự là hai khía cạnh rất khác nhau của cùng một điều:

  1. Cấu trúc logic được sử dụng để tổ chức dữ liệu trên phương tiện lưu trữ.
  2. Phương pháp được HĐH sử dụng để cung cấp các quy trình truy cập dữ liệu thống nhất.

Khái niệm về tập tin và thư mục là một phép ẩn dụ. Đối với một máy tính chỉ có dữ liệu và tất cả các phương tiện truyền thông không là gì ngoài các thiết bị có thể chứa dữ liệu. Một số thiết bị cho phép đọc và ghi dữ liệu (ví dụ: HDD), các thiết bị khác chỉ cho phép đọc dữ liệu (ví dụ: CD-ROM) và thậm chí có những thiết bị chỉ cho phép ghi dữ liệu (ví dụ: máy in). Chúng tôi sử dụng phép ẩn dụ tập tin và thư mục để cấu trúc dữ liệu, để chúng tôi có thể truy cập vào các khối dữ liệu nhỏ, thay vì mọi thứ cùng một lúc.

Các hệ thống tập tin chúng tôi đưa vào phương tiện lưu trữ, ví dụ ext4, xfs, fat làm phần cấu trúc. Chúng tôi sử dụng chúng để đặt nhãn trên khối dữ liệu (tệp) và để có một danh sách có cấu trúc nhất quán của tất cả các nhãn (thư mục). Danh sách có cấu trúc thực sự là một cái cây. Khía cạnh quan trọng nhất là một cái cây có chính xác một khởi đầu, gốc của nó. Duy trì cấu trúc này và đảm bảo dữ liệu vẫn còn có thể truy cập được là nhiệm vụ, đó là lý do tại sao không chỉ có một hương vị của hệ thống tập tin.

Khía cạnh khác của các hệ thống tập tin là, đó là công việc của HĐH để làm cho dữ liệu được lưu trữ trên các thiết bị lưu trữ có thể truy cập được đối với tất cả các chương trình. Điều này được thực hiện bởi hai điều:

  1. HĐH cung cấp chính xác một giao diện (lập trình) để truy cập và tương tác với các tệp và thư mục. Đối với các chương trình / quy trình, không quan trọng hệ thống tệp trên thiết bị lưu trữ là ext2, xfs, fat hay bất cứ thứ gì. Progams / process truy cập các tập tin và thư mục một cách thống nhất.

  2. HĐH tổ chức tất cả các phương tiện lưu trữ, tức là hệ thống tập tin của họ, trong một cấu trúc siêu cấp. Các chương trình truy cập các tệp và thư mục thông qua cấu trúc siêu cấp này và không cần phải tương tác trực tiếp với các thiết bị lưu trữ. Bằng cách đó, các chương trình không cần quan tâm đến việc dữ liệu thực sự nằm trên thiết bị nào. Cấu trúc siêu cấp này thường được gọi là "hệ thống tệp ảo" của hạt nhân.

Thêm hệ thống tệp của thiết bị lưu trữ vào hệ thống tệp ảo được gọi là "gắn kết" hệ thống tệp. Khi Linux của bạn khởi động, kernel sẽ tạo ra hệ thống tập tin ảo (VFS). Ngay sau khi tạo, nó trống và chỉ bao gồm điểm vào của nó, hay còn gọi là gốc của nó, được phiên âm /. Sau đó, kernel gắn kết một hệ thống tập tin ở gốc của VFS. Đây là một ramdisk hoặc ngay lập tức một hệ thống tập tin trên một phân vùng trên ổ cứng. Vì nó được thêm vào thư mục gốc của VFS, phân vùng này thường được gọi là hệ thống tập tin gốc.

Bây giờ đến phần mà các dòng bị mờ và chúng ta thấy rằng các hệ thống tệp trên các thiết bị lưu trữ và VFS của kernel thực sự là hai khía cạnh của cùng một tác vụ HĐH: Với việc gắn hệ thống tệp gốc, VFS chứa nhiều tệp và thư mục, tất cả đều có tồn tại trên phân vùng gốc. Tuy nhiên, mọi thư mục có thể trở thành "điểm gắn kết". Điểm gắn kết là nơi VFS đặt điểm nhập cảnh vào hệ thống tệp trên thiết bị lưu trữ. Điều này có nghĩa là bất cứ khi nào chúng tôi gắn hệ thống tệp trên một thư mục, chúng tôi sẽ nói với VFS rằng thay vì truy cập dữ liệu được lưu trữ trong thư mục đó, chúng tôi muốn truy cập dữ liệu trên một thiết bị lưu trữ khác. Điểm gắn kết thường là các thư mục trống, do đó chúng tôi không làm cho dữ liệu không thể truy cập được bằng cách gắn các hệ thống tệp khác lên trên.

Khi bạn cài đặt HĐH, tùy thuộc vào việc bạn muốn đặt tất cả dữ liệu vào một hệ thống tệp, sau đó trở thành hệ thống tệp gốc của bạn hay bạn muốn phân chia dữ liệu của mình giữa nhiều hệ thống tệp. Cái sau yêu cầu HĐH của bạn gắn kết tất cả các hệ thống tệp riêng lẻ, để làm cho tất cả dữ liệu có thể truy cập được. Làm thế nào bạn phân chia mọi thứ là một câu hỏi về cách bạn thiết kế hệ thống của bạn. Đây là lý do tại sao đôi khi các thư mục bạn biết từ cài đặt của bạn được gọi là hệ thống tập tin.

Đối với các máy tính chúng ta thường có ở nhà, việc chia cài đặt của bạn thành nhiều hệ thống tập tin là không cần thiết nữa. Vẫn có thể có lý do tốt để làm như vậy, nhưng điều này nằm ngoài phạm vi của bài đăng này.

Để giữ phần còn lại của bài đăng này ngắn: Phân vùng là một phương tiện khác để cấu trúc dữ liệu trên các thiết bị lưu trữ. Với các phân vùng, người ta sẽ khắc phục không gian lưu trữ liền kề từ một thiết bị lưu trữ vật lý và cung cấp chúng như các thiết bị lưu trữ riêng lẻ cho HĐH (trên đó người ta có thể đặt các hệ thống tệp để gắn vào VFS). Một lý do để làm điều này có thể là một người chỉ có một ổ cứng, nhưng muốn sử dụng nhiều hệ thống tập tin khác nhau. Phân vùng mà hệ thống tập tin gốc sống thường được gọi là phân vùng gốc.


1

Bạn đang làm một chút bối rối. Filesystemchỉ ra một cơ chế mà các tệp được đặt và sắp xếp trên một thiết bị lưu trữ hoặc trên bộ nhớ chung, như ổ cứng hoặc CD-ROM và, trong một số trường hợp, cũng trên RAM.

Ngay cả các cửa sổ cũng sử dụng các hệ thống tập tin như NTFS, hoặc trước đó , FAT.

Ví dụ của bạn cho thấy một thực tiễn phổ biến cho các hệ thống linux và unix, để có hệ thống riêng của chúng bao gồm các hệ thống tệp khác nhau được gắn trên các thư mục có tên mount point. Điều này cho phép, trong trường hợp có vấn đề, hạn chế thiệt hại cho một hoặc nhiều nhưng không phải cho tất cả các hệ thống tập tin.

Vì vậy, FS không tương đương với thư mục và trong linux cũng có các thư mục, đó là một loại tệp đặc biệt

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.