磁盤存儲
設備類型
1.塊設備
以塊為單位進行存儲和讀取,相當於批量存和批量讀
2.字符設備
以一個字節或者一個字符為單位進行讀取和寫入.
cp -a /dev/sda /data/sda
mknod /data/sda b 8 1 創建特殊類型的文件
3.硬盤結構
1.磁頭在盤片上進行從里到外-左右移動
2.盤片進行高速旋轉
3.磁道 圈和圈之間的空隙(類似於操場的跑道) 每個磁道分成多少個扇區需要占用6個位來存儲,最大值是2^6=64
4.扇區 每個扇區512字節 每個磁道被划分成多個扇區
5.柱面 不同盤片之間的相同磁道組成一個柱面
4.硬盤的使用
1.分區
2.創建文件系統(格式化)
3.掛載 (把設備名和目錄名關聯起來)
4.硬盤如果不進行格式化,那么往硬盤上存儲和讀取數據的時候只能以二進制(0和1)方式來進行,而不能以文件的方式進行訪問.
5. hexdump -C /dev/sda | less 直接以二進制或者相關進制的方式來讀取硬盤上的數據.
5.分區方式
分區必須是在一個連續的空間
4個主分區 或者 3個主分區+1個擴展分區+N個邏輯分區
1.MBR分區
1. hexdump -C /dev/sda -n 512 查看磁盤上前面的512個字節內容
2. dd if=/dev/sda of=/data/mbr_bak bs=1 count=512 讀取二進制文件內容,每次讀取一個字節 總共讀取512個字節
3. dd if=/dev/zero of=/dev/sda bs=1 count=512 用0設備讀取數據寫到其它二進制文件,每次寫入一個字節,總共寫512個字節
4. dd if=/data/mbr_bak of=/dev/sda bs=1 count=512 恢復二進制文件內容
5. dd if=/dev/zero of=/dev/sda bs=1 count=2 seek=510 把第511和512個字節清0
2.GPT分區
4個區域:EFI信息區(GPT頭)、分區表、GPT分區、備份區域
6.管理分區
列出塊設備 lsblk
fdisk創建 MBR分區
gdisk創建 GPT分區
parted高級分區操作
partprobe 同步內存和磁盤上的分區表信息 centos6上無效
partx -a /dev/DEVICE centos6 同步新增分區
partx -d /dev/DEVICE centos6 同步刪除分區
7.分區表存儲在兩個地方,一個在內存,一個存儲在磁盤.
fdisk 查看磁盤上的分區表信息
lsblk 等其它命令查看的是內存上的分區表信息
文件系統
操作系統中負責管理和存儲文件信息的軟件結 構稱為文件管理系統,簡稱文件系統
如果沒有文件系統,那么我們只能以0和1二進制的方式來訪問磁盤上的內容不能以文件的方式來訪問磁盤數據.
分布式文件系統
把一個文件打散,均勻的存儲在不同的機器上.具有對文件備份和容錯的功能.
日志型文件系統
日志的功能就是記錄了用戶對數據的一切操作
如果沒有日志系統,用戶把數據從磁盤調入內存進行修改后,如果在系統還沒開始從內存寫入磁盤的時候出現異常,那么只會丟到內存的修改,
磁盤上的原數據並沒有被損壞。
如果在系統已經開始從內存寫入磁盤的過程中出現異常,那么內存中的數據會丟失,同時磁盤上的原文件內容也會被損壞.
日志系統會在硬盤上單獨開辟一塊空間進行日志存儲(journal)日志和文件是分離的,通過日志可以避免系統異常而導致損壞文件,保證系統的穩定性.
虛擬文件系統
封裝了各種不同類型文件系統的API給用戶統一調用使用戶無需關心底層系統,如用戶執行ls cp等命令,會首先把命令發送給虛擬文件系統
然后由虛擬系統進行翻譯再發送給不同類型的底層文件系統來執行
buffer和cache
1. 當用戶訪問一個文件的時候,磁盤會先把文件存入磁盤的緩存中,然后內存再從磁盤的緩存中讀取數據.
2. buffer是為了提高寫數據的性能 先把內存中需要寫入磁盤的數據存放到buffer中,然后再批量寫入磁盤.
3. cache是為了提高讀數據的性能 先把需要讀取的數據存放到cache中,下次讀取的時候直接從cache中讀取.
集群文件系統
默認情況下,當多個服務器同時訪問同一塊磁盤上的同一個文件,就會造成這個文件的數據損壞. 集群文件系統就是為了解決這個問題
塊組和簇(windows)的基本概念
文件系統分配給文件的最小單位,一個文件再小也要占用的最少磁盤空間.