磁盤管理
MBR:master boot record 主引導記錄。位于磁盤的0磁道0扇區共512字節,獨立于操作系統之外的。512字節的劃分
前446字節:bootloader引導加載器,是一段程序代碼,可以完成引導分區上的操作系統來啟動起來
接下來64字節的每16字節,可以標識一個分區,一共可以標識4個分區,所以硬盤上只能劃分4個主分區
最后2個字節:magic number 標記MBR是否有效
主+擴展<=4
CHS:柱面,磁頭,扇區 最大8G
LBA:新的方式,按線性順序尋址
硬鏈接 ln src dest
1,只能對文件創建,不能對目錄創建
2,不能跨文件系統
3,創建硬鏈接會增加文件被鏈接的次數
軟連接 ln -s
1,可應用于目錄
2,可以跨文件系統
3,不會增加被鏈接文件的鏈接次數
4,其大小為指定的路徑所包含的字符個數
du 顯示出目錄及目錄中的子文件,并顯示占據空間的大小
-s 顯示目錄包括目錄中的文件的整體大小
df :報告文件系統磁盤使用情況
-h 顯示空間大小而不是磁盤塊個數
-i 顯示有多少個inode可用
-P(大) 不換行顯示 -Pi -Ph
設備文件
b:按塊為單位,隨機訪問的設備
c:按字符為單位,線性設備
/dev
主設備號MAJOR
標識設備類型
次設備號MINOR
表示同一種類型中不同設備
mknod:創建塊或字符的特殊設備文件
mknod [OPTION]… NAME TYPE [MAJOR MINOR] mknod -m 640 mydev c 66 0
-m MODE 指定mode權限
硬盤設備的設備文件名
Ide ,ata :hd
Sata :sd
Scsi :sd
Usb :sd
a,b,c…來區分同一種類型下的不同設備
Ide:
第一個ide口,主,從
/dev/hda, /dev/hdb
第二個ide接口,主,從
/dev/hdc, /dev/hdd
Sda,sdb,sdc ….
Hda
Hda1:第一個主分區
Hda2
Hda3
Hda4
Hda5:第一個邏輯分區
Fdisk -l 查看當前系統識別到了幾塊硬盤
Fdisk -l /dev/sda2 查看指定設備信息
管理磁盤分區
Fdisk /dev/sda
m :查看幫助
p:顯示當前硬件的分區,包括沒保存的改動
n:創建新分區
e:擴展分區
p:主分區
d:刪除一個分區
w:保存退出
q:不保存退出
t:修改分區類型
L
l:顯示所支持的所有類型
fdisk最多只能創建15個分區
掃描磁盤
echo "- – -" > /sys/class/scsi_host/host2/scan
Centos 6
增加分區同步
Partx -a /dev/sda
刪除分區同步
Partx -d –nr 7-8 /dev/sda
Centos7
Partprobe
設定完成后w退出,雖然此刻ll /dev/sda*或者cat /proc/partitions 或者lsblk 可查看到,但是此刻只是寫到硬盤上,內存并沒有識別(cat/proc/partitions顯示的還是原有的,剛剛新設定的并沒有顯示出來),此時用partprobe(6沒效果,5,7可以用) [/dev/sda]或者portx(6中用這個) -a(對增加的有效) -d –nr 7-8 /dev/sda刪分區重讀磁盤分區表,再看就有了。
同步的話,新硬盤不用使用上述命令同步,自動就同步了,如果是原有的分過區的硬盤就需要使用命令同步。
Gdisk 管理GPT分區,是交互式的,
parted 命令 管理GPT分區,不是交互式的,敲命令后就直接生效
v parted 的操作都是實時生效的,小心使用
v 用法:parted [ 選項]… [設備 [命令 [ 參數]…]…]
parted /dev/sdb mklabel gpt|msdos 創建GPT或MBR分區
parted /dev/sdb print 顯示狀態
parted /dev/sdb mkpart primary 1 200 創建主分區并從第一個起分200兆
parted /dev/sdb rm 1 刪完后GPT分區表還在
parted -l
Linux支持的文件系統
格式化就是低級格式化,是硬盤廠商就做好了的
高級格式化就是把指定分區格式化為某種文件系統 mkfs -t ext3
VFS:virtual file system 虛擬文件系統,彌合了各種文件系統的不同,使得linux支持各種類型的文件系統,也是內核中的模塊
一個文件的存儲:寫日志的順序先于寫內存
光盤存儲格式:iso9660
虛擬機磁盤 /dev/vda
內核模式(空間)ring0
用戶模式(空間)ring3
歷史原因ring1,ring2沒有被使用
塊:存儲文件的最小單位
塊大小:1024字節,2048字節或4096字節,也就是1k,2k,4k
查看塊大小 tune2fs -l /dev/sda1 |grep size
設備文件只用inode,不占用磁盤塊大小,所以設備文件沒有大小,管道文件和套接字文件也沒有大小,占據磁盤塊的通常只有普通文件和目錄(存儲的文件名稱和inode的對應關系)
位圖分為inode位圖和塊位圖
1,3,5,7,9組保存了超級快的備份
超級塊:super block 保存分區中的全局信息,至關重要。Dupme2fs /dev/sda1 查看超級快和塊組的信息
1,有多少塊組
2,每個塊組中包含多少個塊
3,塊大小
4,空閑磁盤塊,已用磁盤塊,空閑inode,已用inode
塊組描述符表
文件系統管理
如果重新創建文件系統會損壞原有文件,不要對已有的分區重新創建文件系統
Windows里的fat32在linux里叫vfat
Cat /proc/filesystem查看當前內核所支持的文件系統類型
Lsmod :查看支持的文件系統
Df -T :顯示的同時顯示文件系統
創建文件系統:mkfs
-t fstype 指定的分區 換成特定的文件系統類型 mkfs -t ext3 /dev/sda5
Mkfs -t ext2相當于mkfs.ext2
Mkfs -t ext3相當于mkfs.ext3
Mkfs -t ext4相當于mkfs.ext4
Mkfs -t vfat相當于mkfs.vfat
創建完成后 blkid 用UUID顯示是否成功
自己格式化而不是系統格式化的分區在6不支持ACL和user_xattr,只能自己手工tune2fs -o acl /dev/sdc2,如果是已經掛載過的磁盤,需要重新掛一下就好了,加ACL和user_xattr模塊。7支持ACL
專門管理 ext系列文件
Mke2fs
-j :創建ext3類型文件系統 相當于 mkfs -t ext3
-b BLOCK_SIZE:指定塊大小,默認為4096,可用取值為1024,2048,4096
-L LABEL :指定分區卷標, mke2fs -L MYDATA /dev/sda5
-i #: 為數據空間中每多少個字節創建一個inode ;默認為8192,這里給出的數值應該為塊大小的2^倍,此大小不應該小于block 的大小
-N # :手動指定要創建多少個inode
-m #: 手動指定預留給超級用戶的塊數百分比,默認5%, mke2fs -m 4 /dev/sda5
-O FEATURE[,…] :啟用指定特性,
-O ^FEATURE :關閉指定特性,例如關閉日志功能 tune2fs -O ^has_journal /dev/sda5
-F:強制創建文件系統
-E:用戶指定額外文件系統屬性
blkid :查看或定位塊設備屬性信息blkid [OPTION]… [DEVICE] blkid /
-U UUID: 根據指定的UUID(統一的全局標識符) 來查找對應的設備
-L LABEL (卷標):根據指定的LABEL來查找對應的設備
e2label :查看或定義ext 系列文件系統的LABEL(卷標)
e2label /dev/sda5 顯示卷標
e2label /dev/sda5 HELLODATA 自定義卷標
findfs :查找分區
findfs [options] LABEL=<label>
findfs [options] UUID=<uuid>
tune2fs :重新設定ext 系列文件系統可調整參數的值,并保存在磁盤的超級塊里,重啟不會丟失
-l :查看指定文件系統超級塊信息;super block tune2fs -l /dev/sdb1
-L LABEL :設定或修改卷標
-m # :調整預留給管理員的空間百分比
-j: 不損壞原有數據情況下,將ext2 升級為ext3
-O: 文件系統屬性啟用或禁用, –O ^has_journal
-o: 調整文件系統的默認掛載選項,–o ^acl
-r :指定預留塊數
-U UUID: 修改UUID 號;
-o #:指定掛載次數達到#次之后進行自檢,0或-1表示關閉此功能
-i :每掛載使用多少天后進行自檢,0或-1表示關閉此功能
Uuidgen:隨機生成UUID
dumpe2fs:顯示超級快和塊組信息
-h只查看超級塊信息(分組信息),分區用分組管理
fsck: File System Check文件系統檢測和修復
fsck.FS_TYPE
-t FSTYPE 指定文件系統類型
-a: 自動修復錯誤
-r: 交互式修復錯誤
注意: FSTYPE 一定要與分區上已經文件類型相同;
e2fsck :ext 系列文件專用的檢測修復工具
-y :自動回答為yes
-f :強制修復
-p: 自動修復錯誤
掛載:將新的文件系統關聯至當前根文件系統 /media掛載移動設備 /mnt臨時掛載設備
卸載:將某文件系統與當前根文件系統的關聯關系移除
Mount:顯示當先系統上已掛載的設備
掛載
Mount 設備 掛載點
設備:
(1) 設備文件:例如/dev/sda5
(2) 卷標:-L “LABEL”, 例如 -L “MYDATA”
(3) UUID, -U “UUID”例如 -U “0c50523c-43f1-45e7-85c0-a126711d406e”
(4) 偽文件系統名稱:proc, sysfs, devtmpfs, configfs
掛載點:其實就是目錄
此目錄沒有被其他進程使用
事先存在;建議使用空目錄
進程正在使用中的設備無法被卸載
目錄中的原有的文件將會暫時隱藏
多個設備不能掛在同一個掛載點
掛載完成后,要通過掛載點訪問對應文件系統上的文件
剛剛掛載完的文件系統可以顯示lostfound,否則不顯示
卸載:umount
Umount 設備 或者 umount 掛載點 ,任意一個就可以
卸載注意事項
掛載的設備沒有進程使用
Mount [options] [-o options] 設備 掛載點
mount 常用命令選項
v -t ftype :指定要掛載的設備上的文件系統類型,不使用此選項時,mount會調用blkid命令獲取對應文件系統的類型
v -r: readonly ,只讀掛載,掛載光盤時常用此選項
v -w: read and write, 讀寫掛載
v -n: 默認情況下,mount命令每掛載一個設備,都會把掛載的設備信息保存至/etc/mtab文件,使用-n選項意味著掛載設備時,不把信息寫入此文件
v -a :有auto 功能,自動掛載/etc/fstab文件中定義中的所有文件系統
v -L 'LABEL': 以卷標指定掛載設備
v -U 'UUID': 以UUID 指定要掛載的設備
v -B, –bind: 綁定目錄到另一個目錄上
·通過查看/etc/mtab 文件和mount命令可以顯示當前已掛載的所有設備但是不是實時的,用查看內核追蹤到的實時的已掛載的所有設備:cat /proc/mounts
如果有人在用掛載點,就無法卸載掛載點,用Fuser -v /mnt/sdb3查看掛載點誰在用,緊急情況下用fuser -km /mnt/sdb3殺死進程。
-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 功能
v Defaults :相當于rw, suid, dev, exec, auto, nouser, async
練習,
備份/etc目錄
Cp -r /etc/* /backup
調整其預留百分比為3%
Tune2fs -m 3 -L DATA /dev/sda7
以重新掛載的方式掛載此文件系統為不更新訪問時間戳,并驗證其效果
Stat /backup/inittab
Cat /backinittab
Stat
Mount -o remount,noatime /backup
Cat
Stat
對此文件系統強行做一次檢測
E2fsck -f /dev/sda7
刪除復制而來的所有文件,并將此文件系統重新掛載為同步,而后再次復制/etc目錄中的所有文件至此掛載點,體驗其性能變化
Rm-rf /backup/*
Mount -o remount,sync /backup
Cp -r /etc/* /backup
swap分區
虛擬內存
X86:虛擬地址,線性地址
Free:查看當前系統物理內存和交換空間使用情況,默認以字節顯示
-m 以M顯示
Fdisk命令中,調整分區類型為82
創建交換分區
Mkswap /dev/sda8
-L LABEL
掛載交換分區
Swapon /dev/sda8
-a :啟用所有的定義在/etc/fstab文件中的交換設備
Swapoff /dev/sda8
回環設備
Loopback,使用軟件來模擬實現硬件
dd:轉換并復制文件。復制的是底層數據流
dd if=/etc/inittab of=/root/inittab if 數據來源 of 數據存儲目標
bs=# :block size, 復制單元大小
count=# :復制多少個bs
備份MBR dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1
還原MBR dd if=/mnt/usb/mbr.backup of= /dev/sda bs=512 count=1
of=file 寫到所命名的文件而不是到標準輸出
if=file 從所命名文件讀取而不是從標準輸入
bs=size 指定塊大小(既是是ibs 也是obs)
ibs=size 一次讀size 個byte
obs=size 一次寫size 個byte
cbs=size 一次轉化size 個byte
skip=# 從開頭忽略blocks 個ibs 大小的塊
seek=# 從開頭創建數據文件時,跳過的空間大小
count=n 只拷貝n 個記錄
Mount命令,可以掛載iso鏡像
Mount device mount_point
-o loop:掛載本地回環設備
文件系統的配置文件/etc/fstab
操作系統初始時,會自動掛載此文件中定義的每個文件系統
/etc/fstab
第一段:要掛載的設備
第二段:掛載點
第三段:文件系統類型
第四段:掛載選項
第五段:轉儲頻率(定義多久對文件系統做一次完全備份 1每天 2每隔一天)
第六段:文件系統檢測次序(只有根可以為1 0表示不檢查)
Fuser 驗證進程正在使用的文件或套接字文件
– v /mnt/test 查看誰正用什么命令訪問
-k -m /mnt/test 終止正在訪問此掛載點的所有進程,把這個掛在點上的正在訪問的進程統統干掉
練習
1,創建一個5G分區,文件系統為ext3,卷標為MYDATA,塊大小為1024,預留空間為磁盤分區的3%,要求開機后可以自動掛載至/data/目錄,并且自動掛載的設備要使用卷標進行引用
2,創建一個本地回環文件/var/swaptemp/swapfile來用于swap。要求大小為512MB,卷標為SWAP-FILE,且開機自動啟用此交換設備
Mkdir /var/swaptemp
Dd if=/dev/zero of=/var/swaptemp/swapfile bs=1M count=512
Mkswap LABLE=SWAP-FILE /var/swaptemp/swapfile
/etc/fstab
/var/swaptemp/swapfile swap swap dafaults 0 0
3,上述第一問,如何讓其自動掛載的同時啟用ACL功能
/etc/fstab
LABEL=’MYDATA’ /data ext3 default,acl 0 0
備份mbr
dd if=/dev/sda of=/root/mbr bs=1 count=512
查看mbr內容
hexdump -C mbr
顯示分區信息
fdisk -l
恢復分區信息
dd if=mbr of=/dev/sdb
fdisk -l /dev/sda
清零boot loader
dd if=/dev/zero of=/dev/sdb bs=1 count=446
fdisk -l /dev/sdb
hexdump -C -n 512 /dev/sdb
hexdump -C -v -n 512 /dev/sdb
清零分區表
dd if=/dev/zero of=/dev/sdb bs=1 count=64 skip=446 seek=446
centos6
增加分區同步
partx -a /dev/sda
刪除分區同步
partx -d –nr 7-8 /dev/sda
centos7
partprobe
物理磁盤分區,真實
fdisk -l /dev/sdb
生效,內存
cat /proc/partitions
lsblk
ll /dev/sdb*
查看ext文件系統超級塊
tune2fs -l /dev/sdb6
創建文件系統
mke2fs /dev/sdb3
取消日志功能
tune2fs -O ^has_journal /dev/sdb5
增加日志功能
tune2fs -O has_journal /dev/sdb3
指定塊大小
mkfs.ext4 -b 1024 /dev/sdb1
查看所有文件系統信息
blkid
原創文章,作者:wutianyou,如若轉載,請注明出處:http://www.www58058.com/39962
文章對磁盤管理基礎知識和管理工具的用法總結的較為全面。同時,如果能加上一些示例,從增加一塊磁盤,分區,格式化,掛載使用能熟練運用這些工具會更好哦