圖片均來自網絡,如有侵權,請告知刪除。
1) 什麼是文件?
如何把數據長期的存儲在外部儲存介質之上(比如硬盤)
-
什麼是文件
一組相關數據的集合。
在操作系統眼中,文件是一個字節流(或者是一個字符流)
-
文件的類型
- 普通文件(ordinary):習慣上簡稱文件
- 目錄\文件夾(directory):能夠容納別的文件
- 設備(special file):輸入輸出設備,鼠標鍵盤等等,邏輯設備(null設備、硬盤分區)
-
文件的組成部分
-
名字
- unix中
\
不能做文件名,windows不能用:
和/
作爲文件名 - unix中不區分擴展名
- unix中
-
屬性
-
操作系統會設置一個單獨的地方存儲文件的屬性
-
在unix中使用
i-node
存放文件的屬性,通過i-node
可以找到文件的數據,所有i-node
會集中存放,與文件一一對應。
-
創建時間、修改時間、主人、大小
-
-
內容
-
2)如何管理文件的信息?
如何把文件的 數據、名字、屬性 關聯在一起呢?
-
文件系統的塊
用數據塊存放文件的內容
-
存儲方式
-
鏈式(查找困難)
-
順序存儲(修改困難)
unix中的存儲方式:多級索引
-
優點: 大文件大、小文件快
i-node(128字節,後60個字節存放15個指針)
-
前12個指針指向12k的數據
-
第13個指針(1級索引指針)指向256k數據
-
第14個指針(2級索引指針)指向64M數據
-
第15個指針(3級索引指針)指向16G數據
-
訪問更大的數據 改變數據塊的大小
-
3)什麼是目錄?
-
目錄的結構
目錄也是一種文件,是一個樹狀結構。
- 一級目錄:多個文件放在一起,文件不能重名
- 二級目錄:區分user,每個用戶的文件不能重名
- 多級目錄:根目錄 多個子目錄 … ,存放不同的文件
-
目錄的內容
存放此目錄下 文件名字 和
i-node
的編號,通過i-node
編號可以找到唯一的文件數據,但是i-node
沒有文件的名字,unix中文件名字和文件內容 分開存放 -
unix中文件共享(鏈接文件)
多個文件名字指向同一個
i-node
4)如何管理目錄?
windows使用盤符,unix沒有盤符的概念,下述以unix爲例:
-
目錄的表達形式
-
用
/
表示根目錄下的文件,從根目錄開始的叫 絕對路徑,如:/home/tux1/doc/test
-
從當前目錄開始的 相對路徑
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-node
的link
數降爲0的時候,這個數據才真正從硬盤上被刪掉 -
cat:查看文件內容
-
6)文件的權限管理
-
文件、組、用戶
- 用戶(users):登陸系統的用戶名、密碼對應的用戶
- 組(group):每個人屬於多個組,每個組對應多個人(多對多的關係)。每個人都有一個基本的組(主要組),每個人僅有一個主要組。
- 文件有且僅有一個主人,屬於且僅屬於一個組,文件的主人(owner)爲創建文件的人,文件的組爲主人的主組。
-
對於一個文件來說,有三類人,他們的權限分別爲:
- 主人
- 主組的其他人
- 主組之外的人
-
文件的權限只能由 root 或者 主人 修改,權限的查看:
ls -l
- file type中
d
代表目錄,-
代表普通文件,後邊的權限含義爲:- 對於文件:
- r:讀文件
- w:修改文件內容
- x:執行文件(unix中可執行文件有兩種,1.文件本身是二進制可執行格式,2.文件是腳本格式)
- 對於目錄(把目錄比作房間):
- r:查看目錄下有哪些文件,但是不能拿到
i-node
(看到房間的東西),可以ls
- w:刪除或增加目錄下的文件(從房間搬入搬出東西)
- x:進入目錄,可以獲得文件的詳細信息(進入房間中來)
- r:查看目錄下有哪些文件,但是不能拿到
- 對於文件:
指令 | 源目錄所需權限 | 源文件所需權限 | 目標目錄所需權限 |
---|---|---|---|
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)
-
二進制數表示法
-
> 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中只有一個虛擬的根目錄,我們需要把文件系統掛載到已經存在的空目錄上。
- 掛載並不是拷貝,只是把文件的根目錄和文件系統的目錄粘到一起。
如果掛載到非空目錄上,原目錄中的文件將暫時被隱藏。
> mount 設備名字 空目錄名字(掛載文件系統,需要root權限)
>
> umount 設備的名字\mount點的名字 (卸載文件系統,相當於windows彈出u盤)
在unix中,根目錄、home都是文件系統。
9)備份與恢復
-
備份的重要性
數據的重要性往往比存放數據的設備價值要大,常用的技術就是給數據 冷備份(就是把數據複製一份)。
-
備份的基本策略
根據備份的數據量可以分爲:
- 數據備份:備份用戶的數據
- 系統備份:備份系統的數據
如果數據量還是太大,就考慮其他的備份策略:
- 增量備份:每次都備份與前一天的差異,恢復速度比全備份塊的多
- 差異備份:每次都備份與第一天的差異。
-
備份的工具
-
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
-
-
與邏輯卷管理的比較
- 分區式管理缺點:
- 空間大小劃分後無法更改,初期對硬盤空間的規劃帶來困難,如果採用第三方的分區管理工具還會帶來數據上的風險。
- 受硬盤大小的限制。
-
邏輯卷管理:邏輯卷取代了分區,成爲文件系統的容器。
-
優點:可以動態調整大小,可以充分利用零散硬盤空間,可以跨硬盤存放等等。
-
物理卷:獨立的硬盤,傳統意義上的分區。
- 卷組:一個或多個物理卷組合在一起。
- 物理塊:物理卷加入到卷組中, 把它上面的空間按照固定大小進行劃分,劃分出若干個大小相等的小塊作爲將來的儲存空間。
邏輯卷的大小=邏輯塊大小*邏輯塊個數,邏輯塊大小等於物理塊大小。
-