磁盤結構
設備類型:
塊設備:block,存取單位“塊”,例如,磁盤
字符設備:char,存取單位“字符”,鍵盤
設備文件:關聯至一個設備驅動程序,進而能夠跟之對應硬件設備進行通信
設備號碼:
主設備號:major number,表示設備類型
次設備號:minor number 標識同一類型的不同設備
硬盤接口類型
并行接口:
IDE:133MB/s B指的是字節,等于8位
SCSI:640MB/s
串口:
SATA:6Gbps b指的是位
SAS:6Gbps
USB:480MB/s
設備文件
磁盤設備的設備文件命名:/dev/DEV_FILE
IDE:/dev/hd
SCSI,SATA.SAS,USB:/dev/sd
不同設備:a-z
/dev/sda, /dev/sdb,…..
同一設備上的不同分區:1.2.3….
/dev/sda1,/dev/sda2,….
磁盤結構
head:磁頭2^8=256
磁盤上文件的讀取就是通過磁頭和盤片的接觸來實現的,用接觸可能不對,但是比較形象,好理解
track:磁道2^10=1024
cylinder: 柱面 2*6=64
secotr:扇區,512bytes
磁盤空間大小=磁頭數*磁道數*每磁道扇區數*扇區大小
使用分區空間
設備識別
設備分區
創建文件系統
標記文件系統
在 在/etc/fstab 文件中創建條目
掛載新的文件系統
磁盤分區優點:
優化I/O 性能
實現磁盤空間配額限制
提高修復速度
隔離系統和程序
安裝多個OS
采用不同文件系統
分區方式:MBR和GPT
MBR:Master Boot Record,使用32位表示扇區數,分區最大容量不超過2T
如何分區:柱面
MBR在磁盤的0磁道0扇區上,512btyes,其中446bytes存放:boot loader
64bytes存放分區表,16個bytes標識一個分區,所有一般系統只能分64/16=4
個主分區,就是因為這里只能分成4個,最后的2bytes存放55AA,不要小看這兩個bytes
,如果損壞了,分區表會顯示不出來
4個主分區:3主分區+1擴展(N和邏輯分區)
MBR分區結構(可以更直觀理解)
GPT分區
GPT:GUID(Globals Unique Identifiers) partition table
支持128個分區,使用64位表示扇區數,支持8Z(512Byte/blokc) 64Z(4096Byte/block)
使用128位UUID表示磁盤和分區GPT分區表自動備份在頭和尾兩份,并有CRC校驗位
UEFI(統一擴展固定接口)硬件GPT,是操作系統啟動
EFI部分又可以分為4個區域:EFI信息區(GPT頭)、分區表、GPT分區、備份區域
GPT分區結構:
在GPT分區中的第一個數據塊中有一個 protective MBR(PMBR),其作用為當使用不支持GPT的分區工具時,
整個磁盤將顯示為受保護的分區,以防止分區表及磁盤數據遭到破壞。UEFI并不從PMBR中獲取GPT磁盤的分
區信息,它有自己的分區表,即GPT分區表。
GPT分區數量為128個,取用的64位表示,即每個分區最大空間為2^64位,無法想象的大,GPT在磁盤的末端
有一個本分分區表,保證了分區信息不容易丟失
管理分區
列出塊設備
lsblk
創建分區使用:
fdisk創建MBR分區,也支持GPT,對于一個硬盤,最多只能管理15個分區
gdisk創建GPT分區
GNU parted高級分區操作(創建,復制,調整大小等等)
patprobe :重新設置內存中的內核分區表版本
fdisk /dev/sdb
gfisk /dev/sdb 類fdisk的GPT分區工具
# fdisk -l [-u] [device…]
子命令:
p 分區列表
l 查看
t 更改分區類型
n 創建新分區
d 刪除分區
w 保存并退出
q 不保存并退出
在centos7上start和end是以扇區為單位,在centos6上是以柱面為單位的
使用t調整分區,一下例子為將分區5調整為swap分區
當使用fdisl增加或刪除分區時,如果出現Warning提示,要使用partprobe等命令重新設置(讀?。﹥却嬷械膬群朔謪^表
如果不使用時,新修改的分區時不顯示的,查看命令是查看不到新修改的分區
注意:在已經分區并且已經掛載其中中的某個分區的磁盤設備上創建的新分區,內核可能在創建完成后無法直接識別;
查看內核是否已經識別新的分區:
cat /pro/partations
通知內核重新讀取硬盤分區表
centos5 :partprobe
chentos7: partx ,kpartx
partx -a [設備] 增加時使用(有時候需要連續讀取兩次才能成功)
kpartx -af [設備]
partx -d [設備] 刪除時使用
parted命令
parted 的操作都是實時生效的,小心使用,不做詳細說明
用法:parted [ 選項]… [備 設備 [令 命令 [ 參數]…]…]
parted /dev/sdb mklabel gpt|msdos
parted /dev/sdb print
parted /dev/sdb mkpart primary 1 200 (默認M) )
parted /dev/sdb rm 1
parted -l
文件系統
文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。
操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統
從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件促出并對存入的文件進行保護
和檢索的系統。幾天來說,他負責為用戶建立文件,存入,讀出,修改,存儲文件,控制文件的存取,安全控制,
日志,壓縮,加密等
文件系統類型:
linux文件系統:ext2,ext3,ext4,xfs(centos7),btrfs(目前最好的,但是出于驗證階段),reiseerfs,
jfs,swasp
偽文件系統:proc,sysfs,tmpfs,hugapagefs
光盤:iso9660
Windows:fat32,ntfs
Unix:FFS UFS JFS2
網絡文件系統:NFS,CIFS
集群文件系統:GFS2,OCFS2(oracle)
分布式文件系統: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
centos7支持的文件系統
centos6支持的文件系統
VFS: linux的虛擬文件系統,linux與各個文件系統的中間層,實現了linux支持各個文件系統的使用
創建文件系統
文件系統管理工具:
創建文件系統工具
mkfs
mkfs.ext2,mkfs.ext3,mkfs.ext4,mkfs.xfs
檢測及修復文件系統工具
fsck
fsck.ext2,fsck.ext3,….
查看其屬性的工具
dumpe2fs tune2fs
調整文件系統特性
tune2fs
內核級文件系統組成部分:
文件系統驅動:有內核提供
文件系統管理工具:由用戶空間的應用程序提供
ext系列文件系統的管理工具:
mkfs.ext2(無日志功能),mkfs.ext3,mkfs.ext4
mkfs -t ext2 = mkfs.ext2
mkfs -t ext3 = mkfs.ext3
[root@localhost ~]# mkfs.ext2 /dev/sd6 mke2fs 1.41.12 (17-May-2010) Could not stat /dev/sd6 --- No such file or directory The device apparently does not exist; did you specify it correctly? [root@localhost ~]# mkfs.ext2 /dev/sda6 mke2fs 1.41.12 (17-May-2010) Filesystem label= ===>文件系統標簽 OS type: Linux ===>操作系統 Block size=4096 (log=2) ===>塊大小 Fragment size=4096 (log=2) ===>分塊大小 Stride=0 blocks, Stripe width=0 blocks 642112 inodes, 2564367 blocks =====>inode數量和塊數量 128218 blocks (5.00%) reserved for the super user ===>給管理員預留的空間 First data block=0 ====>第一個數據塊編號為0 Maximum filesystem blocks=2629828608 ====>最大文件系統塊編號 79 block groups ===>塊組數量 32768 blocks per group, 32768 fragments per group ====>每個塊組中有多少個塊 8128 inodes per group ===>每個塊組中有多少個inode Superblock backups stored on blocks: ===>超級塊存放在那個數據塊上 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 24 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@localhost ~]#
創建ext3,ext4,文件系統時,和上面一樣,只是多了一項日志功能
Creating journal (32768 blocks): done
blkid命令
-L LABEL: 根據LABEL定位設備
-U UUID : 根據UUID定位設備
查看文件系統
如果此文件系統沒有數據,可以直接使用mkfs.ext3格式化為ext3文件系統
mkfs.ext3 /dev/sd6
ext4和ext3相比差不多,只是性能上強大了許多
在centos6上默認是不支持xfs文件系統的,我們使用yum install xfsprogs命令,在centos6上安裝xfsprogs
使之可以使用xfs文件系統,看看效果
ext系列專用文件系統管理工具:mke2fs
mke2fs [options] device
-t {ext2|ext3|ext4}指明要創建的文件系統
以下全部都可以用來創建ext系列的文件系統:
mkfs.ext3 = mkfs -t ext3 = mke2fs -t ext3 =mke2fs -j(專用于ext3)
-b{1024|2048|4096}:指明文件系統的塊大小;現在默認4096
-L LABLE:指明卷標
-j:創建有日志功能的文件系統ext3
-i #:每多少字節一個inode,指明inode與字節的比率
-N #:直接指明要給此文件系統創建的inode的數量
-O [^]feature:以指定的特性創建目標文件系統,不加“^”表示啟用此特性,加了表示禁用此特性
-m #:指定預留的空間的百分比;直接給數字 %5就輸出 -m 5
注意:不要用tune2fs查看xfs文件系統,tune2fs只能在ext系列文件系統上使用
[root@localhost ~]# blkid /dev/sda6 /dev/sda6: UUID="5ffc43fa-fa65-4060-b99d-9015da2f52d5" TYPE="xfs" [root@localhost ~]# mke2fs -t ext4 -L laozihenfan -b 2048 /dev/sda6 mke2fs 1.41.12 (17-May-2010) Filesystem label=laozihenfan ====>指明卷標 OS type: Linux Block size=2048 (log=1) =====>指明塊大小2048 Fragment size=2048 (log=1) Stride=0 blocks, Stripe width=0 blocks 643072 inodes, 5128734 blocks 256436 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=542113792 314 block groups 16384 blocks per group, 16384 fragments per group 2048 inodes per group Superblock backups stored on blocks: 16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 2048000, 3981312 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 24 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@localhost ~]#
e2lable ;管理ext系列文件系統的卷標
可增加修改
tune2fs命令:查看或修改ext系列文件系統的某些屬性
注意:只能是某些屬性,例如:塊大小創建后不可修改;
選項:
-l:顯示超級塊中的信息;
-j:將ext2升級為ext3
-L lable:修改卷標
-m #:調整預留給管理員空間的百分比(默認5%)
-O[^]feather:開啟或關閉某種特性;關閉了日志就變成了ext2,開啟了有變成了ext3(ext2和3的區別就在于有無日志)
-o[^] mount_options:開啟或關閉某種默認掛載選項
dumpe2fs命令:顯示ext系列文件系統的屬性信息
-h:只顯示超級塊中的信息
檢測并修復文件系統
因進程意外終止或系統崩潰等原因導致定稿操作非正常終止時,可能會造成文件損壞,此時,
應該檢測并修復文件系統;建議離線進行
e2fsck:只能對ext系列文件系統有效
-y:對所有問題自動回答為yes
-f:即使文件系統處于clean狀態,也要強制檢測
-p:自動修復
fsck:通用型
-t:指明文件系統類型
-a:自動修復
-r:交互式修復錯誤
總結:
創建 :mkfs.ext2, mkfs -t
檢測:fsck.xfs
掛載mount
掛載:將額外文件系統與根文件系統某個現存的目錄建立起關聯關系,進而使得此目錄作為
其他文件訪問入口的行為
卸載:將某文件系統與當前根文件系統的關聯關系預以移除
根文件系統之外的其他文件系統要想能夠被訪問,都必須通過“關聯”只根文件系統上的某個目錄來實現
,此關聯操作即為“掛載”,此目錄即為“掛載點”
掛載點:用于作為另一個文件系統的訪問入口
1.事先存在
2.應該使用未被或者不會被其他進程使用到的目錄
3.掛載點下原有的文件會被隱藏
mount命令:
mount:顯示當前系統已經掛載的設備及掛載點
掛載/dev/sda6 到/mnt下
mount /dev/sda6 /mnt
命令選項:
-r:readonly,只讀掛載
-w:read and write 讀寫掛載(默認為讀寫)
-n:默認情況下,設備怪在或卸載的操作會同步更新至/etc/mtab文件中
加上-n選項用于禁用此特性(即不更新至/etx/mtab中)
-t vfstype:指明要掛載的設備上的文件系統的類型,可省略,因為mount會通過blkid來判斷
要掛載的設備的文件系統類型
-L:掛載時以卷標的方式指明設備
mount -L LABEL /mnt
-U:掛載時以UUID的方式指明設備
mount -U UUID /mnt
-o 0ptions:掛載選項
async :異步模式
sync :同步模式, 內存更改時,同時寫磁盤
atime/noatime :包含目錄和文件
diratime/nodiratime :目錄的訪問時間戳
auto/noauto :是否支持自動掛載, 是否支持-a 選項
exec/noexec :是否支持將文件系統上運行應用程序
dev/nodev :是否支持在此文件系統上使用設備文件
suid/nosuid :不否支持suid 和sgid 權限
remount :重新掛載
ro :只讀
rw: : 讀寫
user/nouser :是否允許普通用戶掛載此設備,默認管理員才能掛載
acl :啟用此文件系統上的acl 功能
Defaults :相當于rw, nosuid, dev, exec, auto, nouser, async
掛載目錄:
可以實現將目錄綁定之另一個目錄上,作為其臨時訪問入口
mount –bind 源目錄 目標目錄
umount:卸載某文件系統
umount /mnt
無法卸載處于繁忙狀態的掛載點(正在被進程訪問到的掛載點無法被卸載)
查看正在訪問指定文件系統的進程
lsof mount
fuser -v mount
終止使用正在訪問知道的文件系統的進程:
fuser -km
查看掛載情況:
findmnt
掛載未完待續….
原創文章,作者:qiuwei,如若轉載,請注明出處:http://www.www58058.com/40224