1.設備文件:關聯至一個設備驅動程序,進而與之相對應設備文件通信
2.設備號碼:
主設備號:major number 標識文件類型
次設別號:minor number 同一類型下不同設備
3磁盤組成結構:
.
磁頭數=盤面數
磁頭 2^8 256個磁頭
磁道 由外至內排序 最多1024 用10個二進制位標識
柱面 將扇區組成一個圓,即是柱面,柱面是分區的最小單位 512bytes*256*63=8M
扇區 一個磁道最多63個扇區 用6個2進制為表示
磁盤大?。?12*63*1024*256
分區inode、block、superblock、block group示意圖:
一個文件系統應該僅有一個superblock,但后續的block group也可能含有superblock,但后邊的只是前邊的備份,可以進行superblock的救援
5.MBR分區方式,使用32位標識扇區數,分區大小不超過2T
分區方式:按照柱面
0磁道0扇區:512bytes
446bytes: boot loader
64bytes:分區表 – -> 每16bytes: 標識一個分區
2bytes: 55AA 有此內容,說明有分區
mbr一般情況下需要備份
實例:實現相同大小磁盤/dev/sde擁有和/dev/sda相同分區情況
(1)把/dev/sda的mbr復制到/dev/sde
(2)顯示/dev/sdembr信息
(3)把mbr第511~512換為空
(4)發現/dev/sde分區信息沒有了,由此說明:mbr最后兩個字節必須存在且為“55aa”,否則即使分區信息正確,依然無法顯示分區信息
四個主分區:3個主分區+1個拓展分區
6.GPT分區方式
(1)GUID(Global Unique Identifiers) partition table支持128個分區(不分主分區、拓展分區),使用64位,支持8Z(512bytes/block)、64Z(4096bytes/block)
(2)使用128位UUID 表示磁盤和分區GPT分區表自動備份在頭和尾兩份,并有CRC校驗位
UEFI( Unified extensible firmware interface)(統一擴展固件接口)硬件支持GPT,使操作系統啟動
(3)EFI部分又可以分為4個區域:EFI信息區(GPT頭)、分區表、GPT分區、備份區域
7.分區優點
優化i/o性能、實現磁盤空間配額限制、隔離系統與程序、安裝多個系統、提高修復速度
8.管理分區
(1)列出塊設備:lsblk
(2)創建分區使用:
a. fdisk創建MBR分區,也支持GPT,對于一塊硬盤,最多只能管理15分區
fdisk -l device顯示設備分區表,沒有參數,顯示/proc/partitions內容(顯示的是磁盤上的分區表)
fdisk -u 以sector為單位顯示分區信息,默認是cylinder
fdisk -c 關閉dos
b. gdisk創建GPT分區
c. GNU parted高級分區操作(創建、復制、調整大小等等)實時生效 對GPT格式文件系統使用,只能在centos7上邊使用
parted [option] … [設備[命令[參數]…]…]
parted /dev/sdb mklabel gpt|msdos
parted /dev/sdb print 顯示分區表
mkpart part-type [fs-type] start end 創建一個“part-type”類型的分區,“fs -type”文件系統 大小為$【end – start】M大小
parted /dev/sdb mkpart primary 1 200(默認是M)
parted /dev/sdb rm 1 刪除分區
parted -l 顯示分區表信息
(3)同步分區表
partprobe-重新設置內存中的內核分區表版本(centos5,7適用,centos6新分區適用)
查看分區表同步情況:/proc/partitions
通知內核重新讀取分區表:
新增分區:
partx -a /dev/DEVICE
kpartx -a /dev/DEVICE -f: force
刪除分區:
partx -d –nr /dev/DEVICE
–nr說明范圍
centos6:partx
centos5,7:partprobe
9.文件系統的相關知識
(1)文件系統是操作系統用來明確分區或存儲設備上文件的方法和數據結構;也就是組織文件的方法;操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱為文件系統
從系統角度看,文件系統是對存儲設備空間進行組織與分配,負責文件存儲,并對存入文件進行保護與檢索;具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,加密等。
(2)Linux文件系統: :ext2(Extended file system), ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap
光盤:iso9660
Windows:fat32, ntfs
Unix: FFS(fast), UFS(unix), JFS2
網絡文件系統:NFS, CIFS
集群文件系統:GFS2, OCFS2(oracle)
分布式文件系統:ceph, moosefs, mogilefs, glusterfs, Lustre
RAW:未經處理或者未經格式化產生的文件系統
查看當前系統支持文件系統:cat /proc/filesystems
(3)文件系統分類
根據其是否支持"journal"功能:
日志型文件系統: ext3, ext4, xfs, … 保證文件系統的安全可靠
非日志型文件系統: ext2, vfat
文件系統的組成部分:
內核中的模塊:ext4, xfs, vfat
用戶空間的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
查前支持的文件系統:cat /proc/filesystems
Linux的虛擬文件系統:VFS
(4)創建文件系統
mkfs.fs_type /dev/device
mkfs -t type /dev/device
(5)ext文件系統相關操作
a.mke2fs:ext系列文件系統專用管理工具
-t {ext2|ext3|ext4}
-b {1024|2048|4096} block大?。ㄗ止潱?/p>
-i #;為空間中多少字節創建一個inode,大小不應小于block大小
-I:一個inode大小 128-4096字節
-L lable :賦值給label
-l label: 給label所代表設備創建文件系統
-m #:預留多少空間給管理員,默認5%
-N#:為空間創造多少個inode
-O feature:啟用指定特性
-O ^feature:禁用指定特性
b.專門管理ext系列文件系統的lable:e2lable
c.tune2fs:重新設定ext系列文件可以調整參數的值
-l:查看指定文件系統超級塊信息;super block
-L 'LABEL':修改卷標
-m #:修預留給管理員的空間百分比
-j: 將ext2升級為ext3
-O: 文件系統屬性啟用或禁用,–O ^has_journal
-o: 調整文件系統的默認掛載選項,–o ^acl
-U UUID: 修改UUID號
(6)文件系統標簽
blkid:塊設備文件屬性查看(顯示已掛載文件信息)
blkid [option] …[device]
-U uuid 查找與uuid匹配的文件屬性
-L lable 查找與lable匹配的文件的屬性
findfs :查找分區
findfs[options] LABEL=<label>
findfs[options] UUID=<uuid>
(7)文件系統檢查與修復(修復前,所修復文件必須處于卸載狀態)
常用于死機或非正常關機
掛載文件系統標記為“dirty”
* fsck.FS_type
*fsck -t FS_type
-a 自動修復
-r 交互式修復錯誤
FS_type必須和分區上邊的文件類型相同
*e2fsck:ext系列文件系統專用的檢測修復工具
-y 自動回復為“yes”
-f 強制修復
10.掛載的相關知識
(1)掛載:將額外文件系統與根文件系統上某目錄建立起關聯關系,使得此目錄成為其他文件訪問入口的行為
卸載:接觸關聯關系
掛載點目錄一般為空(否則其下目錄會被隱藏)
(2)mount:通過查看/etc/mtab文件顯示當前已掛載的所有設備
cat /proc/mounts:查看掛載情況
findmnt mnt_point
(3)mount [-fnrsvw] [-t vfstype] [-o options] device dir
* device:指明要掛載設備
設備文件:例如/dev/sda
卷標:-L lable
uuid,-U uuid
偽文件系統名稱:proc sysfs devtmpfs cofigfs
* dir:掛載點
事先存在的空目錄;正在使用的設備無法被卸載 例如:/目錄
-t vfstype:指定要掛載的設備的文件系統類型
-r: readonly,只讀掛載
-w: read and write, 讀寫掛載
-n: 不更新/etc/mtab,相當于#mount(此時只有在/proc/mounts可以看到掛載信息)
-a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能)
-L 'LABEL': 以卷標指定掛載設備
-U 'UUID': 以UUID指定要掛載的設備
-B, –bind: 綁定目錄到另一個目錄上
-o options:(掛載文件系統的選項),多個選項使用逗號分隔
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
實例:把目錄/boot掛載到/mnt/boot下,圈住區域即為掛載信息
分別查看/boot下和/mnt/boot相同目錄,發現信息完全一樣,但不是硬鏈接,因為節點數沒增加
(4) umount mnt_point
umount DEVICE
實例:實現設備的嵌套掛載,然后把該掛載取消
(1)把/dev/sdb2分別掛載到/mnt/test、/mnt/test/test2下,結果如下
(2)進入/mnt/test下,創建文件a,然后進入/mnt/test/test2下,查看其下文件
一號區域為/mnt/test下文件
二號區域為/mnt/test/test2下文件
三號區域為/mnt/test/test2/test2下文件
總結:Linux下嵌套掛載不會無限循環下去,Windows是會無限循環下去的(具體思路與本體類似)。
(3)卸載/dev/sdb2,發現卸載的是較晚掛載的目錄
11.查看正在訪問指定文件系統的進程:
#lsofMOUNT_POINT
#fuser -v MOUNT_POINT
終止所有在正訪問指定的文件系統的進程:
# fuser -km MOUNT_POINT
12. dumpe2fs "具體的分區"
查看superblock或block group 內容
-h 僅顯示superblock信息
13.echo "- – -" > /sys/class/scsi_host/host2/scan實現不關機可以讀取到新的硬盤
生產環境中不需要的,因為支持熱插拔
14. hexdump -c 顯示特殊代碼對應的通配符
hexdump -C 顯示特殊代碼對應*進制數,還有解析的代碼 顯示的是16進制的
-n 顯示多少bytes字符
-s 跳過前多少bytes
15.文件掛載配置文件
要掛載的文件設備或偽文件系統:設備名、uuid、lable、偽文件系統
掛載點:
文件系統類型
掛載選項
轉儲頻率:0 不備份
1 每天備份
2 隔一天備份
自檢次序:0 不自檢
1 首先自檢 一般只有rootfs才用1(如果掛載選項有問題,會無法重啟,所以最好為0)
目錄掛載到目錄上時,文件類型為none,掛載屬性為bind
掛載iso文件時,文件類型為iso9660,掛載屬性為loop
實例:掛載/boot/目錄到/mnt/boot下,
/etc/fstab配置文件添加如下內容
執行mount -a實現配置文件沒有掛載選項自動掛載,查看掛載結果
16.交換分區文件和分區處理
(1)交換分區是系統RAM的補充
(2)基本設置包括:
創建交換分區或文件
使用mkswap寫入特殊簽名
在/etc/fstab內添加適當條目
使用swapon -a 激活交換空間
(3)啟用 swapon [option]…[DEVICE]
-a 激活所有交換空間(激活后,修改配置文件,再用此選項,不生效)
-P PRIORITY:指定優先級
/etc/fstab:pri=value
禁用 swapoff [OPTION]..[DEVICE]
(4)優先級相關知識
*用戶可以給某個swap指定一個0到32767的優先級
*如果用戶沒有指定,那么核心會自動給swap指定一個優先級(負無窮,-1),由-1開始,依次遞減一
*優化性能:分布存放,高性能磁盤存放
實例:增加swap容量(建議新增加swap盡量在分區的外磁道,這樣讀寫性能較好)
(1)查看原來swap容量
(2)創建一個屬性為swap的分區,并格式化為swap格式
(3)/etc/fstab添加如下內容
(4)用swapon -a,使/etc/fstab配置文件中,是swap類型的沒有使用的設備可用
14.掛載移動介質
(1)*訪問前,必須掛載
*摘除前,必須卸載
*掛載點通常在/media或/mnt下
(2)使用光盤
*在圖形界面下,自動啟動掛載/run/media/<user>/<lable>
*字符界面下,mount /dev/cdrom /mnt
*eject 卸載或彈出磁盤
*創建ISO文件
cp /dev/cdrom /root/centos7.ISO
mkisofs -r -o /root/etc.iso /etc
*刻錄光盤
wodim -v -eject centos.iso
*特殊設備掛載方法:加-loop掛載選項
把文件與偽設備loop關聯起來,
實例:在/目錄下,新建一個100M文件,把他掛載到/mnt/test下
(1)新建文件test
(2)格式化為ext4格式,并與/dev/loop2關聯
查看黃色區域,發現如果直接用特殊文件掛載,會要求用-loop
(3)用關聯設備/dev/loop3掛載,查看結果
(3)掛載USB介質
*被內核探測為SCSI設備
/dev/sdaX或類似設備
*在圖形環境下自動掛載
·圖標在[計算機]窗口中創建
·自動掛載到/run/media/<user>/<lable>
*在字符界面
mount /dev/sdaX /mnt
15.內存空間使用狀態
free [OPTION]
-m:以MB為單位
-g:以GB為單位
16.(1) 文件系統空間占用信息查看(目錄掛載信息不可看,文件可以看到)
df 列出文件系統的整體磁盤使用量
df -h 以人們較易閱讀的方式顯示
df -i 以硬盤iNode的數量顯示
/dev/shm 與內存有關的掛載
df -a 顯示所有的文件系統
df -T 把文件系統名稱也列出來
有的時候,顯示沒有磁盤容量,可能是inode用完了 inode占用block
(2)查看某目錄整體空間占用情況
du 顯示文件占用空間大?。J僅顯示當前目錄下的目錄占用空間大?。?/p>
du -a 顯示目錄 ,文件占用空間情況
du -s 顯示指定目錄大小
du -S 顯示各級子目錄及本目錄大?。ú伙@示文件)
17.dd:conver and copy a file
用法:dd if=src of=dest bs=#(復制單元大小默認是以字節為單位) count=#(復制多少個bs)
of=file寫到所命名的文件而不是到標準輸出
if=file從所命名文件讀取而不是從標準輸入
bs=size指定塊大?。仁鞘莍bs也是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
block 轉換為長度為cbs 的記錄,不足部分用空格填充。
unblock 替代cbs長度的每一行尾的空格為新行
lcase 把大寫字符轉換為小寫字符
ucase 把小寫字符轉換為大寫字符
swab 交換輸入的每對字節
noerror 出錯時不停止
notrunc 不截短輸出文件
sync 把每個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊
作業
2、寫一個腳本,完成如下功能:
(1) 列出當前系統識別到的所有磁盤設備
(2) 如磁盤數量為1,則顯示其空間使用信息
否則,則顯示最后一個磁盤上的空間使用信息
腳本內容如下:
執行結果如下:
原創文章,作者:mengzhiqian,如若轉載,請注明出處:http://www.www58058.com/41312
看完博客會有一個概覽性的認識,但在邏輯表達的組織上顯得略微混亂,如果能再優化下邏輯規劃會更讓人印象深刻