文件管理(以Unix系統爲例)


圖片均來自網絡,如有侵權,請告知刪除。

1) 什麼是文件?

如何把數據長期的存儲在外部儲存介質之上(比如硬盤)

  • 什麼是文件

    一組相關數據的集合。

    在操作系統眼中,文件是一個字節流(或者是一個字符流)

  • 文件的類型

    • 普通文件(ordinary):習慣上簡稱文件
    • 目錄\文件夾(directory):能夠容納別的文件
    • 設備(special file):輸入輸出設備,鼠標鍵盤等等,邏輯設備(null設備、硬盤分區)

Alt

  • 文件的組成部分

    • 名字

      1. unix中 \不能做文件名,windows不能用 / 作爲文件名
      2. unix中不區分擴展名
    • 屬性

      1. 操作系統會設置一個單獨的地方存儲文件的屬性

      2. 在unix中使用 i-node 存放文件的屬性,通過 i-node 可以找到文件的數據,所有 i-node 會集中存放,與文件一一對應。
        Alt

      3. 創建時間、修改時間、主人、大小

    • 內容


2)如何管理文件的信息?

如何把文件的 數據名字屬性 關聯在一起呢?

  • 文件系統的塊

    用數據塊存放文件的內容

  • 存儲方式

    • 鏈式(查找困難)

    • 順序存儲(修改困難)

    unix中的存儲方式:多級索引

    • 優點: 大文件大、小文件快

      Alt

    i-node(128字節,後60個字節存放15個指針)

    • 前12個指針指向12k的數據

    • 第13個指針(1級索引指針)指向256k數據

    • 第14個指針(2級索引指針)指向64M數據

    • 第15個指針(3級索引指針)指向16G數據

    • 訪問更大的數據 \to 改變數據塊的大小


3)什麼是目錄?

  • 目錄的結構

    目錄也是一種文件,是一個樹狀結構。

    • 一級目錄:多個文件放在一起,文件不能重名
    • 二級目錄:區分user,每個用戶的文件不能重名
    • 多級目錄:根目錄 \to 多個子目錄 \to … ,存放不同的文件
  • 目錄的內容

    存放此目錄下 文件名字i-node 的編號,通過 i-node 編號可以找到唯一的文件數據,但是 i-node 沒有文件的名字,unix中文件名字和文件內容 分開存放Alt

  • unix中文件共享(鏈接文件)

    多個文件名字指向同一個i-node


4)如何管理目錄?

windows使用盤符,unix沒有盤符的概念,下述以unix爲例:

  • 目錄的表達形式

    1. /表示根目錄下的文件,從根目錄開始的叫 絕對路徑,如:

      /home/tux1/doc/test

    2. 從當前目錄開始的 相對路徑

      doc/mon_report (當前目錄下有一個叫doc的文件夾)

      …/tux3/pgms (…表示當前的父目錄 )

      ./test (.表示當前目錄)

      ~/test (~表示當前登陸者的主目錄)

  • 命令管理目錄

    • pwd (Print Working Directory):打印當前目錄

    • cd (Change Directory):在目錄之間來回移動,後邊可以跟相對路徑或者絕對路徑

      cd doc (相對路徑)

      cd /home/tux1/doc (絕對路徑)

      cd ~tux1/doc (與上兩個作用相同)

      cd (不寫參數代表回到主目錄)

      cd … (到上一級目錄)

      cd - (回退到以前的目錄)

    • mkdir (Make Directory):添加目錄

    • rmdir (Remove Directory):刪除目錄,要求目錄必須是空目錄,除了..(父目錄別名)和.(此目錄別名)

      -p選項用來操作多個目錄,例:

      mkdir -p dir1/dir2/dir3 (一口氣創建多個目錄)

      rmdir -p dir1/dir2/dir3(一口氣刪除多個目錄)

    • ls:列出目錄內容

      • -l:以長方式顯示文件詳細屬性
      • -a:顯示所有文件(包括隱藏文件)
      • -t:按照修改日期排序文件
      • -R:遞歸的顯示
      • -i:顯示文件的 i-node

5)文件如何使用?

  • 創建別名

    硬連接:根據名字和i-node存在的對應關係,使得i-node可以對應多個名字

    符號連接:相當於快捷方式,兩個i-node不同

    目錄不能建硬連接,只能創建符號連接。

    硬連接不能跨文件系統,符號連接可以。

  • 管理文件命令

    • touch:創建文件

    • cp:拷貝文件

      兩種格式

      cp file1 file2 … dir (把file1,file2拷貝到dir,dir是已經存在的目錄)

      cp file1 file2 (把file1拷貝到file2中)

      • -R:拷貝目錄

      • -i:拷貝時如果已有同名文件則信息提示

    • mv:移動文件

      mv file1 file2 (把file1重命名爲file2)

    • rm:刪除link

      假如abc、xyz對應的i-node相同,則執行rm abc之後,xyz依然存在

      只有一個i-nodelink數降爲0的時候,這個數據才真正從硬盤上被刪掉

    • cat:查看文件內容


6)文件的權限管理

  • 文件、組、用戶

    • 用戶(users):登陸系統的用戶名、密碼對應的用戶
    • 組(group):每個人屬於多個組,每個組對應多個人(多對多的關係)。每個人都有一個基本的組(主要組),每個人僅有一個主要組。
    • 文件有且僅有一個主人,屬於且僅屬於一個組,文件的主人(owner)爲創建文件的人,文件的組爲主人的主組。
  • 對於一個文件來說,有三類人,他們的權限分別爲:

    1. 主人
    2. 主組的其他人
    3. 主組之外的人
  • 文件的權限只能由 root 或者 主人 修改,權限的查看:ls -l

Alt
Alt

  • file type中 d 代表目錄,-代表普通文件,後邊的權限含義爲:
    • 對於文件:
      • r:讀文件
      • w:修改文件內容
      • x:執行文件(unix中可執行文件有兩種,1.文件本身是二進制可執行格式,2.文件是腳本格式)
    • 對於目錄(把目錄比作房間):
      • r:查看目錄下有哪些文件,但是不能拿到 i-node(看到房間的東西),可以ls
      • w:刪除或增加目錄下的文件(從房間搬入搬出東西)
      • x:進入目錄,可以獲得文件的詳細信息(進入房間中來)
指令 源目錄所需權限 源文件所需權限 目標目錄所需權限
cd x N/A N/A
ls x,r N/A N/A
mkdir,rmdir x,w N/A N/A
cat,less x r N/A
cp x r x,w
cp -r x,r r x,w
mv x,w None x,w
vi x,r r,w N/A
rm x,w None N/A
  • 權限的修改

    • 符號表示法

      chmod u+w,g-x,o= file (對file文件,user增加w,group減少x,other權限清空,替換爲等號後邊的權限)

      chmod a-w (all 減少w權,也可以寫成chmod -w)

    • 二進制數表示法

Alt
> chmod 750 file

  • 缺省權限的設置

    umask:掩碼

    普通文件創建後的權限:rw-rw-rw(666)

    創建後的權限:666-umask

    普通目錄創建後的權限:rwxrwxrwx(777)

    創建後的權限:777-umask


7)什麼是文件系統?

  • 文件系統

    ​ 存放文件和目錄的地方,結構一般都是樹狀的目錄樹。

    ​ 一個文件系統只有一個根目錄。文件系統的容器用來存放文件系統,假設文件和目錄是水,文件系統是塑料袋,那麼容器就是裝塑料袋的木桶。文件系統的容器一般都放在塊設備上,典型的塊設備有,硬盤、軟盤、光盤,硬盤上的分區、內存中劃分的區域等等。

    ​ 文件系統有很多,操作系統會使用虛擬文件系統層,來屏蔽各種不同的文件系統的區別,爲用戶提供統一的接口來使用文件系統。

  • 典型的unix文件系統:ext2

    ​ 體現了unix管理文件的基本思想,整個系統會被分爲大小相等的若干個,塊的大小初始化時指定,默認大小爲1k。

    ​ 塊的用途:

    • superblock:整個文件系統的基本屬性(塊的大小,根目錄位置、空閒塊的起點、空閒i-node的起點),ext2中規定每8192塊會放一個superblock的備份,每次更新全部superblock。
    • i-node:指向文件數據,塊的大小假設爲1k的話,每一個i-node塊中可以容納8個i-node
    • indirect block:間接指針索引塊
    • data block:數據塊

    初始化時需要劃分i-node塊存放數據的塊(間接指針索引塊和數據塊)的比例,設置bytes-per-inode,假設爲4096,表示每4096字節中有128字節爲i-node塊

  • 磁盤配合

    一個用戶或者一個組在文件系統中最多可以存放多少數據。超過硬限制報error,超過軟限制報warning。


8)使用文件系統

  • unix中文件系統的掛載(mount)以及卸載

    unix中只有一個虛擬的根目錄,我們需要把文件系統掛載到已經存在的空目錄上

    • 掛載並不是拷貝,只是把文件的根目錄和文件系統的目錄粘到一起。

Alt

如果掛載到非空目錄上,原目錄中的文件將暫時被隱藏。

> mount 設備名字 空目錄名字(掛載文件系統,需要root權限)
>
> umount 設備的名字\mount點的名字 (卸載文件系統,相當於windows彈出u盤)

在unix中,根目錄、home都是文件系統。


9)備份與恢復

  • 備份的重要性

    數據的重要性往往比存放數據的設備價值要大,常用的技術就是給數據 冷備份(就是把數據複製一份)

  • 備份的基本策略

    根據備份的數據量可以分爲:

    • 數據備份:備份用戶的數據
    • 系統備份:備份系統的數據

    如果數據量還是太大,就考慮其他的備份策略:

    • 增量備份:每次都備份與前一天的差異,恢復速度比全備份塊的多
    • 差異備份:每次都備份與第一天的差異。

Alt

  • 備份的工具

    • tar

      tar -cvf home.tar.gz /home

      c表示創建、v表示打包時同時顯示文件的名字,f表示指定一個文件的名字

      tar -xvf

      x表示解壓縮,提取

      壓縮時需要指定壓縮算法

      tar -cvf home.tar.gz /home (gzip)

      tar -cvf home.tar.bz2 /home(bzip2)

    • dd

      dd if= of= bs= (if是輸入文件,of是輸出文件)

      dd if=/dev/zero of=/dev/sda bs=1M

      dd if=/dev/urandom of=/dev/sda bs=1M 清空硬盤


10)硬盤的結構

  • 串行硬盤

    SAS串行硬盤一般用在服務器,SATA硬盤一般用在小型機,單碟比雙碟的速度快,世面上並行硬盤已經少見。

    傳統硬盤速度慢的原因:讀數據時採用磁頭臂移動、盤片的旋轉的方式,這都是機械運動,相對於光、電速度很慢。

  • 硬盤臂調度算法

    • 先到先服務:早提出的請求早響應,磁頭臂來回運動。
    • 最短尋道優先:先訪問最近的扇區,離得比較遠等待時間會很長。
    • 電梯算法:一直沿着一個方向運動,接收所有請求,走到頭後返回。由於中間的扇區要走兩次,因此兩邊的響應延遲。
    • c-scan:運動過程中響應所有請求,迅速回退到低地址,中間不迴應任何請求,再從頭響應請求。
  • 硬盤的分區

    • 最初只有四個分區,把分區信息記錄在硬盤的第一個分區。後來這四個分區不夠用,調整之後這四個變爲主分區,可以拿出一個主分區轉爲擴展分區,可以分成更多小分區,叫邏輯分區。因此現在的硬盤結構可以劃分爲:主分區最多四個,擴展分區小於等於1個,如果有擴展分區就佔了一個主分區的指標,邏輯分區可以多到幾十個。

    • 命名規則,四個主分區分別爲1234,邏輯分區從5開始。

      SDA1 :SD代表硬盤,A是第一個硬盤。

    • 觀察硬盤分區的命令

      sudo fdisk -l /dev/sds

  • 與邏輯卷管理的比較

    • 分區式管理缺點:
    1. 空間大小劃分後無法更改,初期對硬盤空間的規劃帶來困難,如果採用第三方的分區管理工具還會帶來數據上的風險。
    2. 受硬盤大小的限制。
  • 邏輯卷管理:邏輯卷取代了分區,成爲文件系統的容器。

    • 優點:可以動態調整大小,可以充分利用零散硬盤空間,可以跨硬盤存放等等。

    • 物理卷:獨立的硬盤,傳統意義上的分區。

      • 卷組:一個或多個物理卷組合在一起。
      • 物理塊:物理卷加入到卷組中, 把它上面的空間按照固定大小進行劃分,劃分出若干個大小相等的小塊作爲將來的儲存空間。

    邏輯卷的大小=邏輯塊大小*邏輯塊個數,邏輯塊大小等於物理塊大小。

Alt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章