設備文件
一切皆文件,設備類型文件都放在/dev目錄下,關聯至設備驅動程序,進而能夠跟與之對應硬件設備通信。
主要類別:? ? ?block?? 塊設備? ? ? ?char???? 字符設備
主設備號???????? 表示設備類別? ? ? ?次設備號???????? 同一設備類別數量
mknod? 專門創建這種塊文件(設備文件)? ? ?mknod??? /data/sdA? b? 8? 1
建立一個和/dev/zero相同作用的文件? ? ? ? ? ? ? mknod????? /data/zerofile? c 1? 5
測試效果? ? ? ? ?dd if=/data/zerofile? of=test bs=1M count=10? ? ? ;? ? ? hexdump -C test
注意:在centos6里面設備名稱有可能會因為硬盤設備增加而改變,因此信息引用用設備的UUID。
管理磁盤
兩種分區方式: MBR,GPT
系統啟動方式: BIOS+MBR???????? UEFI+GPT
MBR分區結構
按扇區分:512bytes一個扇區,而且扇區必須連續,中間不能隔斷
一個柱面大概8m??????????????? (512*63*255/1024)
0磁道0扇區:512bytes
446bytes:boot loader
64bytes:分區表
16bytes:標識一個分區
2bytes:55AA?????? (結束位)
4個主分區:3主分區+1擴展(N個邏輯分區)
查看當前系統用的是什么分區? ? ? ? ? ? ? fdisk -l? ? ? ?#出現有邏輯分區就是MBR分區結構
用二進制程序查看硬盤分區表? ? ? ? ? ? ?hexdump -C /dev/sdb -n 512
下圖是Centos6,,131單位指柱面??? 131*8m=1028M?? block是以k為單位 sdb1大小約1GB,*代表激活主分區
注意:分區表很重要建議備份? ? ? ? ? ? ? ? ? ?dd if=/dev/sda of=/data/mbr_bak bs=1 count=512
查看備份分區表? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? hexdump -C /data/mbr_bak
放在遠程主機上備用? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? scp /data/mbr_bak?? 192.168.30.128:/data/
實驗:? ? 破壞分區表? ? ? ? ? ? ?dd if=/dev/zero of=/dev/sda bs=1 count=512
注意:? ? lsblk看到的信息是內存中的信息? ? ? ? ? ?fdisk -l看到的信息是硬盤上的信息
1)如果機子沒有重啟,則可以直接恢復分區表? ? ? ?dd if=/data/mbr_bak? of=/dev/sda
2)如果機子已經重啟:
1、那么必須知道是哪塊硬盤,然后把硬盤拔下來鏈接有備份信息的其他機子,通過命令寫入信息即可。
2、進入救援模式,配置網絡? ?ifconfig ens33 192.168.30.100/24? ? ;? ping 192.168.30.100
遠程取回備份分區表并恢復? ? scp 192.168.30.128:/data/mbr_bak . ; dd if=mbr_bak of=/dev/sda
3、也可以用U盤,然后進入救援模式恢復。
GPT分區結構
partition table 支持128個分區,
使用64位,支持8Z( 512Byte/block ) 64Z ( 4096Byte/block)
使用128位UUID表示磁盤和分區GPT分區表自動備份在頭和尾兩份,并有CRC校驗位
GPT分區頭部有Protective MBR為了兼容舊軟件,并且有自建的備份分區表
GPT分區分為4個區域: EFI信息區(GPT頭)、分區表、 GPT分區、備份區域
管理分區
列出塊設備:lsblk
fdisk? 創建MBR分區? ? ? ?gdisk 創建GPT分區? ? ? ?parted 高級分區操作
partprobe?? 重新設置內存中的內核分區表版本(同步內存和硬盤內的分區表)
parted命令
注意:parted命令是立即生效的,操作時候要小心。
1、選擇創建分區類型? ?parted /dev/sdb mklabel gpt;parted /dev/sdb mklabel msdos? (就是mbr分區)
2、創建分區的大小? ? ? ?parted /dev/sdb mkpart primary ??1 ????200 (默認M)(199M空間)
3、刪除分區? ? ? ? ? ? ? ? ? ?parted /dev/sdb rm 1? ? ? ? ? #這里是刪除sdb1
4、列出分區信息? ? ? ? ? ?parted –l
fdisk和gdisk
兩者命令選項及其相似,fdisk建立mbr分區,gdisk建立gpt分區
fdisk -l 查看分區? ? ? ? ? ? ? ? ?fdisk? /dev/sdb? 管理分區
注意:
1)如果分區不連續,則會造成后面分區失敗,當遇到沒法建立新分區,留意是否之前留有未連續空間
解決方法:直接跳過此間隙空間進行分區
2)如果在fdisk -l和lsblk看到的分區信息不一致,則要進行分區表同步
partprobe? ? ? ? ? ? ? ? ? ? ? ? ?centos7 同步
partx -a? /dev/sda? ? ? ? ? centos6同步
partx -d –nr 6-8 /dev/sda 刪除分區不同步時用(這里是連續刪除6-8分區,也可以一次只刪除一個)
3)建議每增加一個分區或者減少一個分區的時候就同步一次。
小技巧:
交互式fdisk命令腳本用標準輸出重定向? ? ? ? echo -e “n\np\n\n\n+2G\nw\n” | fdisk /dev/sdc
或者用多行重定向? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fdisk? /dev/sdc?? <<EOF
文件系統
日志型文件系統: ext3, ext4, xfs, …? ? ? ?非日志型文件系統: ext2, vfat
查看當前支持的文件系統: cat /proc/filesystems
查看當前支持的文件系統: ls /lib/modules/2.6.32-696.el6.x86_64/kernel/fs?? (Centos6)
注意:日常操作的命令都是通過發指令給虛擬文件系統(VFS),然后對外使用統一的接口與文件系統通
訊。所以命令并不關心用戶使用的是哪種文件系統,它面對的是VFS。
cache
針對讀操作,文件從磁盤讀到內存的時候會有一個空間,叫做cache。磁盤-》磁盤cache-》內存cache
CPU、內存、磁盤上都有緩存。hit 命中率越高數據越快。
buffer
針對寫操作,在內存中針對寫的操作有一個緩沖區buffer,用戶執行儲存操作后的數據會在buffer區待一陣
子,由系統決定在相對空閑的時候在寫入硬盤。
總結:cache為了讀性能更快,buffer為了寫性能更好。
創建文件系統
mkfs??
1)mkfs -t ext4? /dev/sdb1? ? #Centos6用ext4? Centos7用xfs
2)mkfs -L 設定卷標? ?? #一般建議掛載點的名字作為卷標名。卷標可以后期修改。
mkfs.ext4 /dev/sdb2 -b 2048 -L /data/sdb2
3)mkfs.?支持雙擊tab查詢操作? ? ? ?mkfs.ext4 /dev/sdb2 -b 1024 -m 0.1
一般默認需要調整的是為管理人員預留空間
保留的塊空間預留給管理員(ROOT)使用,默認是5%
? ? ? ? ? ?
blkid
uuidgen? ??生成唯一的UUID
blkid 顯示所有文件系統信息類型(包括掛載和未掛載的分區)
blkid?? /dev/sda
blkid -U UUID: 根據指定的UUID來查找對應的設備
blkid -L LABEL:根據指定的LABEL來查找對應的設備
df -T 只能看到已經掛載的分區信息
通過/etc/fstab文件下的信息找到/data所掛載的對應設備
blkid -U `grep /data /etc/fstab | sed -r “s/UUID=([^ ]*) .*/\1/”`? ? ? ? ?或者
blkid -U `grep /data /etc/fstab | cut -d” ” -f1 | cut -d= -f2`
tune2fs? ?
為ext2文件系統增加日志功能? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??tune2fs -O has_journal /dev/sdb2
去掉日志功能為:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tune2fs -O ^has_journal /dev/sdb2
設備修改UUID :(不建議改,會影響配置文件)? ? ? ? ? ? ? ? ? ? ?tune2fs -U `uuidgen` /dev/sdb2
Centos6手工添加硬盤并增加支持ACL功能? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? tune2fs -o acl /dev/sdb1
Centos7手工創建的系統默認支持ACL功能
Centos6查看ext格式文件系統信息? ? ? ? tune2fs -l /dev/sdb2? ? ? ?#不支持查看xfs格式文件
Centos7查看xfs文件系統信息? ? ? ? ? ? ? ? ?xfs_info /dev/sda3
文件系統狀態:clean代表正常,noclean代表被破壞
塊是文件系統最小儲存單位,表示文件系統儲存最小文件大小為4K,WINDOWS系統里這個塊叫簇。
超級塊(SUPER BLOCK)用于儲存各個分區塊組的元數據等必要屬性信息。
位圖(Block Bitmap)以表格形式表示儲存空間是否被使用。(1已使用,0未使用)
查看塊組信息
dumpe2fs? ?
dumpe2fs /dev/sda1
適合看centos6的塊組(ext系列)
-h 查看超級塊信息,不顯示分組信息
注意:
1、文件系統選擇的塊大小有講究,一般存放文件比較大選擇4096,存放的文件比較小則選擇1024或者
2048。(LINUX默認支持1K、2K、4K)
2、文件系統的塊大小在創建文件系統時可以設定,之后不可以改,如果要改只能重新創建文件系統。
把塊大小定為1K? ? ??mkfs.ext4 /dev/sdb2 -b 1024
破壞文件系統與修復
fsck
-p: 自動修復錯誤
-r: 交互式修復錯誤
-y:自動選擇同意
常發生于死機或者非正常關機之后,掛載為文件系統標記為“no clean”
實驗:破壞數據并用fsck修復
破壞數據? ? ??dd if=/dev/zero of=/dev/sdb1 bs=1M count=20
查看發現被破壞(超級塊被破壞)? ??tune2fs -l /dev/sdb1
修復數據? ? ? ? ?fsck? /dev/sdb1 -y
注意:
1、fsck修復文件系統必須確保原分區不處于掛載狀態,如果在掛載必須取消掛載,不然會破壞數據??!
2、fsck? -t 一般不用因為系統會自動判斷,人為如果加錯了更麻煩。
3、只能修復還有未被破壞的備份超級塊,如果超級塊全部被破壞則無法修復。
4、會自動判斷文件系統類型,支持修復xfs和ext文件系統。
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/99467