Linux-磁盤管理1
磁盤結構
分區類型
管理分區
管理文件系統
掛載設備
管理虛擬內存
RAID管理
LVM管理
LVM快照
設備文件
I/O Ports: I/O設備地址
一切皆文件:open(), read(), write(), close()
設備類型:
塊設備:block,存取單位“塊”,磁盤
字符設備:char,存取單位“字符”,鍵盤
設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信
設備號碼:
主設備號:major number, 標識設備類型
次設備號: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
mknod /data/sdA b 8 1,主次設備號與/dev/sda一致的話,就是同一個設備
mknod /data/zerofile c 1 5,主次設備號與/dev/zero一致的話,就是同一個設備
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尋址方式
6bit sector/track 8bit head 10bit track
echo 512*63*1024*255/1024/1024 | bc = 8032 MB = 8GB
使用分區空間
設備識別
設備分區
創建文件系統
標記文件系統
在/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字節為分區項1、分區項2、分區項3、分區項4
?結束標誌字,偏移地址01FE--01FF的2個字節值為結束標誌55AA
練習
1、破壞mbr,並恢復:
ifconfig ens33 192.168.30.129/24
dd if=/dev/sda of=/data/sda_mbr bs=1 count=512
dd if=/dev/zero of=/dev/sda bs=1 count=512
dd of=/data/sda_mbr if=/dev/sda
2、破壞55AA:
dd if=/dev/zero of=/dev/sdb bs=1 count=2 seek=510
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,使操作系統啟動
列出可用的磁盤設備
圖形化磁盤管理功能工具:點擊“應用程序”->“系統工具”->“磁盤”或執行命令gnome-disks
管理分區
列出塊設備
?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]
buffer:緩沖,主要針對寫操作
cache:緩存,主要針對讀操作
文件系統
?文件系統是操作系統用於明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統
?從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲並對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日誌,壓縮,加密等
?支持的文件系統:/lib/modules/`uname –r`/kernel/fs
文件系統類型
Linux文件系統:ext2(Extended file system), ext3, ext4, xfs(SGI), 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': 設定卷標
創建ext文件系統
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:查看超級塊信息,不顯示分組信息
tune2fs -l /dev/sdb1
CentOS 6上手動創建的文件系統是默認沒有acl的,需輸以下命令:
tune2fs -o acl /dev/sdb1
CentOS 7上手動創建的文件系統是有acl的
文件系統檢測和修復
常發生於死機或者非正常關機之後
掛載為文件系統標記為“no clean”
註意:一定不要在掛載狀態下修復
fsck: File System Check
fsck.FS_TYPE
fsck-t FS_TYPE
-p: 自動修復錯誤
-r: 交互式修復錯誤
FS_TYPE一定要與分區上已經文件類型相同
e2fsck:ext系列文件專用的檢測修復工具
-y:自動回答為yes
-f:強制修復
Linux-磁盤管理1