一點一滴學Linux:文件樹

Linux的設計理念是「一切皆文件」。也就是說,在Linux的世界里,面向使用者的資源都是一個一個的文件。比如硬碟、光碟機、顯示器以及硬碟中的文件夾和文件都被Linux統一的識別為「文件」。只不過這個文件各自都有自己的類型和用途。那麼Linux是如何將這些資源合理的整合併向使用者提供安全穩定的服務的呢?答案很簡單,就是Linux將所有可識別的資源(包括外設)做為特殊的文件,並掛載到相應文件樹的指定節點上去。那麼Linux文件樹又是什麼呢?我們一起來再來看一下:歡迎大家加入C++學習交流群598131849 群內有資料分享

假如我們的計算機上有4塊IDE介面硬碟,那麼它們則被Linux識別為hda、hdb、hdc和hdd這4個IDE硬碟文件被掛載(關於掛載我們將在下一節介紹)到/dev目錄下,如果每一塊硬碟各自有著不同的分區,則使用數字為其做編號。1~4為主分區,5及其以上的編號為擴展分區,例如hda這塊硬碟上有4個分區,兩個主分區和兩個擴展分區,那麼它們則被Linux識別為hda1、hda2、hda5、hda6以此類推。而對於SATA介面的硬碟則被Linux識別為sda、sdb、sdc、sdd等文件,並掛載到/dev目錄下,它們各自的分區也同樣被編號為sda1、sda2、sdb1、sdb2、sdc1、sdc2等。需要說明的是對於硬碟的分區表如果是msdos類型則只能有4個主分區,其它為擴展分區,而對於gpt類型的分區表則可以分個主分區,也就是物理分區。關於分區表的內容這裡只作簡單的說明,並不深入學習。對於IDE介面硬碟和SATA類型的硬碟在被Linux識別後則被表示為以下文件:

Advertisements

  • /dev/hda:IDE Primary Master

  • /dev/hda1:主分區

  • /dev/hda2:主分區

  • /dev/hda5:擴展分區

  • /dev/hda6:擴展分區

  • /dev/hdb:IDE Primary Slave

  • /dev/hdb1:主分區

  • /dev/hdb2:主分區

  • /dev/hdb5:擴展分區

  • /dev/hdb6:擴展分區

  • /dev/sda:SATA port0

  • /dev/sda1:主分區

  • /dev/sda2:主分區

  • /dev/sda5:擴展分區

  • /dev/sda6:擴展分區

  • /dev/sdb:SATA port1

  • /dev/sdb1:主分區

  • /dev/sdb2:主分區

  • /dev/sdb5:擴展分區

  • /dev/sdb6:擴展分區

    Advertisements

而我們在安裝Linux時,對硬碟進行自動分區內容為/、/home和swap,它們則作為為系統特殊分區在/dev/mapper目錄下:

  • /dev/mapper/fedora-root

  • /dev/mapper/fedora-home

  • /dev/mapper/fedora-swap

我們可以打開Fedora的Terminal,也就是終端程序,在裡面輸入以下命令查看hd硬碟設備和sd設備,以及系統分區:

$ls /dev/sd*

/dev/sda /dev/sda1 /dev/sda2

$ls /dev/mapper/

control fedora-home fedora-root fedora-swap

Linux在啟動時會自動識別fedora-root根分區,並將其作為文件系統文件樹的根節點「/」。然後會根據/etc/fstab分區表文件讀入相應的分區信息並將其掛載到相應的節點上。/etc/fstab文件是一個配置文件,並且是一個受保護文件,只有root用戶才有許可權修改它的內容,其他用戶只能查看。它裡面記錄了我們這台計算機中的存儲設備以什麼方式掛載到系統的文件樹中。這是一個非常重要的文件,Linux系統需要根據它的內容構建我們的存儲資源。我們可以通過cat命令來查看其內容:

$cat /etc/fstab

#device-spec mount-point fs-type options dump pass

/dev/mapper/fedora-root / ext4 defaults 1 1

UUID=e8b76-4d9c696dbe52 /boot ext4 defaults 1 2

/dev/mapper/fedora-home /home ext4 defaults 1 2

/dev/mapper/fedora-swap swap swap defaults 0 0

我們來看一下fstab文件中各項配置的含義:

  • device-spec:設備規格設備名稱、標籤、UUID或其他方式指定的分區或數據源。

  • mount-point:掛載點,也就是上面我們稱作文件樹的某一個節點,如:/、/home、/boot等。

  • fs-type:設備或磁碟分區類型,比如ext2、ext3、ext4、swap、smbfs、vfat、ntfs等。

  • options:掛載選項是指此設備或分區的掛載方式,比如:是否自動安裝在系統啟動,用戶是否可以安裝或訪問,是否可能被寫入或讀取,的大小等。

  • dump:轉儲程序,0表示文件系統將不自動備份,1表示自動備份。

  • pass:fsck程序是否檢查錯誤,0表示不檢查,1表示檢查。

從fstab文件里我們可以看出,我們有3個磁碟分區被掛載到了文件樹上,葉子節點分別是/、/boot、/home。那麼我們的系統文件樹則如下圖:

同時我們也可以使用df命令來查看分區掛載情況:

$df -lh

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/fedora-root 38G 3.0G 34G 9% /

devtmpfs 991M 0 991M 0% /dev

tmpfs 1001M 68K 1001M 1% /dev/shm

tmpfs 1001M 736K 1001M 1% /run

tmpfs 1001M 0 1001M 0% /sys/fs/cgroup

tmpfs 1001M 44K 1001M 1% /tmp

/dev/sda1 477M 131M 318M 30% /boot

/dev/mapper/fedora-home 19G 45M 18G 1% /home

tmpfs 201M 4.0K 201M 1% /run/user/989

tmpfs 201M 8.0K 201M 1% /run/user/1000

對於devtmpfs、tmpfs類型的文件系統我們暫時先不理會。可以看到/dev/mapper/fedora-root被掛載到了/上,/dev/mapper/fedora-home被掛載到了/home上,而/dev/sda1被掛載到了/boot上。當然,當你熟悉了Linux文件系統之後,也可以根據自己的喜好,將你的硬碟分為多個分區,並分別掛載到不用的目錄上,例如:

Filesystem Size Used Avail Use% Mounted on

/dev/sda1 1.9G 239M 1.6G 14% /boot

/dev/sda5 50G 66M 47G 1% /data

/dev/sda6 173G 96G 78G 56% /data/tool

/dev/sda7 98G 69G 30G 71% /data/work

/dev/sda8 190G 27G 161G 10% /data/media

/dev/sda9 60G 24G 33G 42% /data/media/pic

/dev/sda10 92G 18G 71G 14% /data/media/movie

/dev/sda11 128G 55G 74G 39% /data/work/music

Linux除了使用/etc/fstab配置文件來掛載文件系統之外,還有一種辦法來臨時掛載文件系統到文件樹上,就是使用mount命令。

Advertisements

你可能會喜歡