文件系統和掛載
node
-----------------------------------------------------------------------------------------------------------------------------------------------centos
I/O Ports: I/O設備地址緩存
一切皆文件:open(), read(), write(), close()安全
設備類型:網絡
塊設備:block,存取單位「塊」,磁盤數據結構
字符設備:char,存取單位「字符」,鍵盤oracle
設備文件:關聯至一個設備驅動程序,進而可以跟與之對應硬件設備進行通訊dom
設備號碼:異步
主設備號:major number, 標識設備類型async
次設備號:minor number, 標識同一類型下的不一樣設備
硬盤接口類型
並行:
IDE:133MB/s
SCSI:640MB/s
串口:
SATA:6Gbps
SAS:6Gbps
USB:480MB/s
rpm: rotations
per minute
機械硬盤(HDD):Hard Disk Drive,便是傳統普通硬盤,主要由:盤片,磁頭,盤片轉軸及控制電機,磁頭控制器,數據轉換器,接口,緩存等幾個部分組成。機械硬盤中全部的盤片都裝在一個旋轉軸上,每張盤片之間是平行的,在每一個盤片的存儲面上有一個磁頭,磁頭與盤片之間的距離比頭髮絲的直徑還小,全部的磁頭聯在一個磁頭控制器上,由磁頭控制器負責各個磁頭的運動。磁頭可沿盤片的半徑方向運動,加上盤片每分鐘幾千轉的高速旋轉,磁頭就能夠定位在盤片的指定位置上進行數據的讀寫操做。數據經過磁頭由電磁流來改變極性方式被電磁流寫到磁盤上,也能夠經過相反方式讀取。硬盤爲精密設備,進入硬盤的空氣必須過濾
固態硬盤(SSD):Solid State Drive,用固態電子存儲芯片陣列而製成的硬盤,由控制單元和存儲單元(FLASH芯片、DRAM芯片)組成。固態硬盤在接口的規範和定義、功能及使用方法上與普通硬盤的徹底相同,在產品外形和尺寸上也與普通硬盤一致
相較於HDD,SSD在防震抗摔、傳輸速率、功耗、重量、噪音上有明顯優點,SSD傳輸速率性能是HDD的2倍
相較於SSD,HDD在價格、容量、使用壽命上佔有絕對優點
硬盤有價,數據無價,目前SSD不能徹底取代HHD
設備文件
磁盤設備的設備文件命名:/dev/DEV_FILE
SCSI, SATA, SAS,IDE,USB: /dev/sd
虛擬磁盤:/dev/vd
不一樣磁盤標識:a-z,aa,ab…,/dev/sda, /dev/sdb, ...
同一設備上的不一樣分區:1,2, ...,/dev/sda1, /dev/sda5
硬盤存儲術語
head:磁頭
track:磁道
cylinder: 柱面
sector: 扇區,512bytes
機械硬盤結構
固態硬盤(SSD)和機械硬盤(HDD)
硬盤存儲術語
區位記錄磁盤扇區結構
CHS和LBA
CHS
採用24bit位尋址
其中前10位表示cylinder,中間8位表示head,後面6位表示sector
最大尋址空間8GB
LBA(logical block addressing)
LBA是一個整數,經過轉換成CHS格式完成磁盤具體尋址
LBA採用48個bit位尋址
最大尋址空間128PB
因爲CHS尋址方式的尋址空間在大概8GB之內,因此在磁盤容量小於大概8GB時,可使用CHS尋址方式或是LBA尋址方式;在磁盤容量大於大概8GB時,則只能使用LBA尋址方式
使用分區空間
設備識別
設備分區
建立文件系統
標記文件系統
在/etc/fstab文件中建立條目
掛載新的文件系統
磁盤分區
爲何分區
優化I/O性能
實現磁盤空間配額限制
提升修復速度
隔離系統和程序
安裝多個OS
採用不一樣文件系統
分區
兩種分區方式:MBR,GPT
MBR: Master Boot Record,1982年,使用32位表示扇區數,分區不超過2T
如何分區:按柱面
0磁道0扇區:512bytes
446bytes: boot loader
64bytes:分區表
16bytes: 標識一個分區
2bytes: 55AA
4個主分區;3主分區+1擴展(N個邏輯分區)
MBR分區結構
硬盤主引導記錄MBR由4個部分組成;
主引導程序(偏移地址0000H--0088H),它負責從活動分區中裝載,並運行系統引導程序;
出錯信息數據區,偏移地址0089H--00E1H爲出錯信息,00E2H--01BDH全爲0字節;
分區表(DPT,Disk Partition Table)含4個分區項,偏移地址01BEH--01FDH,每一個分區表項長16個字節,共64字節爲分區項一、分區項二、分區項三、分區項4;
結束標誌字,偏移地址01FE--01FF的2個字節值爲結束標誌55AA。
GPT分區
GPT:GUID(Globals Unique Identifiers)partition table 支持128個分區,使用64位,支持8Z(512Byte/block )64Z (4096Byte/block)
使用128位UUID(Universally Unique Identifier) 表示磁盤和分區GPT分區表自動備份在頭和尾兩份,並有CRC校驗位
UEFI (統一擴展固件接口)硬件支持GPT,使操做系統啓動
管理分區
列出塊設備
lsblk
建立分區使用:
fdisk建立MBR分區
gdisk建立GPT分區
parted高級分區操做
partprobe-從新設置內存中的內核分區表版本
parted命令
parted的操做都是實時生效的,當心使用
用法:parted [選項]... [設備[命令[參數]...]...]
parted /dev/sdbmklabelgpt|msdos
parted /dev/sdbprint
parted /dev/sdbmkpartprimary 1 200 (默認M)
parted /dev/sdbrm1
parted –l 列出分區信息
分區工具fdisk和gdisk
gdisk/dev/sdb類fdisk的GPT分區工具
fdisk-l [-u] [device...] 查看分區
fdisk/dev/sdb管理分區
子命令:
p 分區列表
t 更改分區類型
n 建立新分區
d 刪除分區
v 校驗分區
u 轉換單位
w 保存並退出
q 不保存並退出
同步分區表
查看內核是否已經識別新的分區:cat /proc/partations
centos6通知內核從新讀取硬盤分區表
新增分區用
partx-a /dev/DEVICE
kpartx-a /dev/DEVICE -f: force
刪除分區用
partx-d --nrM-N /dev/DEVICE
CentOS 5,7: 使用partprobe
partprobe[/dev/DEVICE]
文件系統
文件系統是操做系統用於明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操做系統中負責管理和存儲文件信息的軟件結構稱爲文件管理系統,簡稱文件系統;
從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲並對存入的文件進行保護和檢索的系統。具體地說,它負責爲用戶創建文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日誌,壓縮,加密等;
支持的文件系統:/lib/modules/`uname–r`/kernel/fs;
各類文件系統:https://en.wikipedia.org/wiki/Comparison_of_file_systems
Linux文件系統:
ext2(Extended file system) :適用於那些分區容量不是太大,更新也不頻繁的狀況,例如/boot 分區。
ext3:是ext2 的改進版本,其支持日誌功能,可以幫助系統從非正常關機致使的異常中恢復。它一般被用做通用的文件系統
ext4:是ext 文件系統的最新版。提供了不少新的特性,包括納秒級時間戳、建立和使用巨型文件(16TB)、最大1EB的文件系統,以及速度的提高
xfs:SGI,支持最大8EB的文件系統
btrfs(Oracle), reiserfs, jfs(AIX), swap
光盤:iso9660
Windows:FAT32, exFAT,NTFS
Unix: FFS(fast), UFS(unix), JFS2
網絡文件系統:NFS, CIFS
集羣文件系統:GFS2, OCFS2(oracle)
分佈式文件系統:fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
RAW:未經處理或者未經格式化產生的文件系統
文件系統分類
根據其是否支持"journal"功能:
日誌型文件系統: ext3, ext4, xfs, ...
非日誌型文件系統: ext2, vfat
文件系統的組成部分:
內核中的模塊:ext4, xfs, vfat
用戶空間的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
Linux的虛擬文件系統:VFS
查前支持的文件系統:cat /proc/filesystems
建立文件系統
mkfs命令:
(1) mkfs.FS_TYPE/dev/DEVICE
ext4
xfs
btrfs
vfat
(2) mkfs-t FS_TYPE /dev/DEVICE
-L 'LABEL': 設定卷標
mke2fs:ext系列文件系統專用管理工具
-t {ext2|ext3|ext4}
-b {1024|2048|4096}
-L 'LABEL'
-j: 至關於-t ext3
mkfs.ext3 = mkfs-t ext3 = mke2fs -j = mke2fs -t ext3
-i#: 爲數據空間中每多少個字節建立一個inode;此大小不該該小於block的大小
-N #:指定分區中建立多少個inode
-I 一個inode記錄佔用的磁盤空間大小,128---4096
-m #: 默認5%,爲管理人員預留空間佔總空間的百分比
-O FEATURE[,...]:啓用指定特性
-O ^FEATURE:關閉指定特性
文件系統標籤
指向設備的另外一種方法
與設備無關
blkid:塊設備屬性信息查看
blkid[OPTION]... [DEVICE]
-U UUID: 根據指定的UUID來查找對應的設備
-L LABEL:根據指定的LABEL來查找對應的設備
e2label:管理ext系列文件系統的LABEL
e2label DEVICE [LABEL]
findfs:查找分區
findfs[options] LABEL=<label>
findfs[options] UUID=<uuid>
tune2fs
tune2fs:從新設定ext系列文件系統可調整參數的值
-l:查看指定文件系統超級塊信息;super block
-L 'LABEL':修改卷標
-m #:修預留給管理員的空間百分比
-j: 將ext2升級爲ext3
-O: 文件系統屬性啓用或禁用,–O ^has_journal
-o: 調整文件系統的默認掛載選項,–o ^acl
-U UUID: 修改UUID號
dumpe2fs:
塊分組管理,32768塊
-h:查看超級塊信息,不顯示分組信息
文件系統檢測和修復
常發生於死機或者非正常關機以後
掛載爲文件系統標記爲「no clean」
注意:必定不要在掛載狀態下修復
fsck: File System Check
fsck.FS_TYPE
fsck-t FS_TYPE
-p: 自動修復錯誤
-r: 交互式修復錯誤
FS_TYPE必定要與分區上已經文件類型相同
e2fsck:ext系列文件專用的檢測修復工具
-y:自動回答爲yes
-f:強制修復
掛載mount
掛載:將額外文件系統與根文件系統某現存的目錄創建起關聯關係,進而使得此目錄作爲其它文件訪問入口的行爲
卸載:爲解除此關聯關係的過程
把設備關聯掛載點:mount Point
mount
卸載時:可以使用設備,也可使用掛載點
umount
掛載點下原有文件在掛載完成後會被臨時隱藏
掛載點目錄通常爲空
掛載方法:mount DEVICE MOUNT_POINT
mount:經過查看/etc/mtab文件顯示當前已掛載的全部設備
mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:指明要掛載的設備;
(1) 設備文件:例如/dev/sda5
(2) 卷標:-L 'LABEL', 例如-L 'MYDATA'
(3) UUID, -U 'UUID':例如-U '0c50523c-43f1-45e7-85c0-a126711d406e'
(4) 僞文件系統名稱:proc, sysfs, devtmpfs, configfs
dir:掛載點
事先存在;建議使用空目錄
進程正在使用中的設備沒法被卸載
mount
-t vsftype:指定要掛載的設備上的文件系統類型
-r: readonly,只讀掛載
-w: read and write, 讀寫掛載
-n: 不更新/etc/mtab,mount不可見
-a:自動掛載全部支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能)
-L 'LABEL': 以卷標指定掛載設備
-U 'UUID': 以UUID指定要掛載的設備
-B, --bind: 綁定目錄到另外一個目錄上
查看內核追蹤到的已掛載的全部設備
cat /proc/mounts
mount經常使用命令選項
-o options:(掛載文件系統的選項),多個選項使用逗號分隔
async:異步模式sync:同步模式,內存更改時,同時寫磁盤
atime/noatime:包含目錄和文件
diratime/nodiratime:目錄的訪問時間戳
auto/noauto:是否支持自動掛載,是否支持-a選項
exec/noexec:是否支持將文件系統上運行應用程序
dev/nodev:是否支持在此文件系統上使用設備文件
suid/nosuid:是否支持suid和sgid權限
remount:從新掛載
ro:只讀rw:讀寫
user/nouser:是否容許普通用戶掛載此設備,/etc/fstab使用
acl:啓用此文件系統上的acl功能
loop: 使用loop設備
defaults:至關於rw, suid, dev, exec, auto, nouser, async
卸載命令
查看掛載狀況
findmntMOUNT_POINT|device
查看正在訪問指定文件系統的進程
lsofMOUNT_POINT
fuser -v MOUNT_POINT
終止全部在正訪問指定的文件系統的進程
fuser -km MOUNT_POINT
卸載
umountDEVICE
umountMOUNT_POINT
掛載點和/etc/fstab
配置文件系統體系
被mount、fsck和其它程序使用
系統重啓時保留文件系統體系
能夠在設備欄使用文件系統卷標
使用mount -a 命令掛載/etc/fstab中的全部文件系統
文件掛載配置文件
/etc/fstab每行定義一個要掛載的文件系統
1、要掛載的設備或僞文件系統
設備文件
LABEL:LABEL=""
UUID:UUID=""
僞文件系統名稱:proc, sysfs
2、掛載點
3、文件系統類型:ext4,xfs,nfs,none
4、掛載選項:defaults,acl,bind
5、轉儲頻率:0:不作備份1:天天轉儲2:每隔一天轉儲
6、fsck檢查的文件系統的順序:容許的數字是0, 1, 和2
0:不自檢
1:首先自檢;通常只有rootfs才用
2:非rootfs使用
處理交換文件和分區
交換分區是系統RAM的補充
基本設置包括:
建立交換分區或者文件
使用mkswap寫入特殊簽名
在/etc/fstab文件中添加適當的條目
使用swapon-a 激活交換空間
掛載交換分區
啓用:swapon
swapon[OPTION]... [DEVICE]
-a:激活全部的交換分區
-p PRIORITY:指定優先級
/etc/fstab:pri=value
禁用:swapoff[OPTION]... [DEVICE]
SWAP的優先級
能夠指定swap分區0到32767的優先級,值越大優先級越高
若是用戶沒有指定,那麼核心會自動給swap指定一個優先級,這個優先級從-1開始,每加入一個新的沒有用戶指定優先級的swap,會給這個優先級 減一
先添加的swap的缺省優先級比較高,除非用戶本身指定一個優先級,而用戶指定的優先級(是正數)永遠高於核心缺省指定的優先級(是負數)
優化性能:分佈存放,高性能磁盤存放
移動介質
掛載意味着使外來的文件系統看起來如同是主目錄樹的一部分
訪問前、介質必須被掛載
摘除時,介質必須被卸載
按照默認設置,非根用戶只能掛載某些設備(光盤、DVD、軟盤、USB等等)
掛載點一般在/media 或/mnt下
使用光盤
在圖形環境下自動啓動掛載/run/media/<user>/<label>
不然就必須被手工掛載
mount /dev/cdrom/mnt/
eject命令卸載或彈出磁盤
建立ISO文件
cp/dev/cdrom/root/centos7.iso
mkisofs -r -o /root/etc.iso /etc
刻錄光盤
wodim–v –eject centos.iso
掛載USB介質
查看USB設備是否識別
lsusb
被內核探測爲SCSI設備
/dev/sdaX、/dev/sdbX、或相似的設備文件
在圖形環境中自動掛載
圖標在[計算機]窗口中建立
掛載在/run/media/<user>/<label>
手動掛載
mount /dev/sdb1 /mnt
常見工具
文件系統空間佔用等信息的查看工具:
df[OPTION]... [FILE]...
-H 以1000爲單位
-T 文件系統類型
-h: human-readable
-i:inodesinstead of blocks
-P: 以Posix兼容的格式輸出
查看某目錄整體空間佔用狀態:
du [OPTION]... DIR
-h: human-readable
-s: summary --max-depth
工具dd
dd命令:convert and copy a file
用法:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
bs=#:block size, 複製單元大小
count=#:複製多少個bs
of=file寫到所命名的文件而不是到標準輸出
if=file從所命名文件讀取而不是從標準輸入
bs=size指定塊大小(既是是ibs也是obs)
ibs=size一次讀size個byte
obs=size 一次寫size個byte
cbs=size 一次轉化size個byte
skip=blocks從開頭忽略blocks個ibs大小的塊
seek=blocks從開頭忽略blocks個obs大小的塊
count=n只拷貝n個記錄
conv=conversion[,conversion...] 用指定的參數轉換文件
轉換參數:
ascii轉換EBCDIC 爲ASCII
ebcdic轉換ASCII 爲EBCDIC
lcase把大寫字符轉換爲小寫字符
ucase把小寫字符轉換爲大寫字符
nocreat不建立輸出文件
noerror出錯時不中止
notrunc不截短輸出文件
sync 把每一個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊
備份MBR:
dd if=/dev/sdaof=/tmp/mbr.bakbs=512 count=1
破壞MBR中的bootloader:
dd if=/dev/zero of=/dev/sdabs=64 count=1 seek=446
有一個大與2K的二進制文件fileA。如今想從第64個字節位置開始讀取,須要讀取的大小是128Byts。又有fileB, 想把上面讀取到的128Bytes寫到 第32個字節開始的位置,替換128Bytes,實現以下:
dd if=fileAof=fileBbs=1 count=128 skip=63 seek=31 conv=notrunc
備份:
dd if=/dev/sdxof=/dev/sdy
將本地的/dev/sdx整盤備份到/dev/sdy
dd if=/dev/sdxof=/path/to/image
將/dev/sdx全盤數據備份到指定路徑的image文件
dd if=/dev/sdx| gzip>/path/to/image.gz
備份/dev/sdx全盤數據,並利用gzip壓縮,保存到指定路徑
恢復:
dd if=/path/to/image of=/dev/sdx
將備份文件恢復到指定盤
gzip-dc /path/to/image.gz | ddof=/dev/sdx
將壓縮的備份文件恢復到指定盤
拷貝內存資料到硬盤
dd if=/dev/mem of=/root/mem.binbs=1024
將內存裏的數據拷貝到root目錄下的mem.bin文件
從光盤拷貝iso鏡像
dd if=/dev/cdromof=/root/cd.iso
拷貝光盤數據到root文件夾下,並保存爲cd.iso文件
銷燬磁盤數據
dd if=/dev/urandomof=/dev/sda1
利用隨機的數據填充硬盤,在某些必要的場合能夠用來銷燬數據,執行此操做之後,/dev/sda1將沒法掛載,建立和拷貝操做沒法執行
獲得最恰當的block size
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
經過比較dd指令輸出中命令的執行時間,便可肯定系統最佳的block size大小
測試硬盤寫速度
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
測試硬盤讀速度
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
修復硬盤
dd if=/dev/sda of=/dev/sda
當硬盤較長時間(好比1,2年)放置不使用後,磁盤上會產生消磁點。當磁頭讀到這些區域時會遇到困難,並可能致使I/O錯誤。當這種狀況影 響到硬盤的第一個扇區時,可能致使硬盤報廢。上邊的命令有可能使這些數據起死回生,且這個過程是安全高效的