1. 程式人生 > >Linux-磁盤管理1

Linux-磁盤管理1

Linux 磁盤

本章內容

磁盤結構

分區類型

管理分區

管理文件系統

掛載設備

管理虛擬內存

RAID管理

LVM管理

LVM快照

設備文件

I/O Ports: I/O設備地址

一切皆文件:open(), read(), write(), close()

設備類型:

塊設備:block,存取單位“塊”,磁盤

字符設備:char,存取單位“字符”,鍵盤

設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信

設備號碼:

主設備號:major number, 標識設備類型

次設備號:minor number, 標識同一類型下的不同設備

硬盤接口類型

並行:

IDE133MB/s

SCSI640MB/s

串口:

SATA6Gbps

SAS6Gbps

USB480MB/s

rpm: rotations

per minute

機械硬盤和固態硬盤

?機械硬盤(HDD):Hard Disk Drive,即是傳統普通硬盤,主要由:盤片,磁頭,盤片轉軸及控制電機,磁頭控制器,數據轉換器,接口,緩存等幾個部分組成。機械硬盤中所有的盤片都裝在一個旋轉軸上,每張盤片之間是平行的,在每個盤片的存儲面上有一個磁頭,磁頭與盤片之間的距離比頭發絲的直徑還小,所有的磁頭聯在一個磁頭控制器上,由磁頭控制器負責各個磁頭的運動。磁頭可沿盤片的半徑方向運動,加上盤片每分鐘幾千轉的高速旋轉,磁頭就可以定位在盤片的指定位置上進行數據的讀寫操作。數據通過磁頭由電磁流來改變極性方式被電磁流寫到磁盤上,也可以通過相反方式讀取。硬盤為精密設備,進入硬盤的空氣必須過濾

?固態硬盤(SSD):Solid State Drive,用固態電子存儲芯片陣列而制成的硬盤,由控制單元和存儲單元(FLASH芯片、DRAM芯片)組成。固態硬盤在接口的規範和定義、功能及使用方法上與普通硬盤的完全相同,在產品外形和尺寸上也與普通硬盤一致

?相較於HDDSSD在防震抗摔、傳輸速率、功耗、重量、噪音上有明顯優勢,SSD傳輸速率性能是HDD2

?相較於SSDHDD在價格、容量、使用壽命上占有絕對優勢

?硬盤有價,數據無價,目前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一致的話,就是同一個設備

CHSLBA

CHS

采用24bit位尋址

其中前10位表示cylinder,中間8位表示head,後面6位表示sector

最大尋址空間8GB

LBAlogical block addressing

LBA是一個整數,通過轉換成CHS格式完成磁盤具體尋址

LBA采用48bit位尋址

最大尋址空間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

采用不同文件系統

分區

兩種分區方式:MBRGPT

MBR: Master Boot Record1982年,使用32位表示扇區數,分區不超過2T

如何分區:按柱面

0磁道0扇區:512bytes

446bytes: boot loader

64bytes:分區表

16bytes: 標識一個分區

2bytes: 55AA

4個主分區;3主分區+1擴展(N個邏輯分區)

MBR分區結構

?硬盤主引導記錄MBR4個部分組成

?主引導程序(偏移地址0000H--0088H),它負責從活動分區中裝載,並運行系統引導程序

?出錯信息數據區,偏移地址0089H--00E1H為出錯信息,00E2H--01BDH全為0字節

?分區表(DPT,Disk Partition Table)含4個分區項,偏移地址01BEH--01FDH,每個分區表項長16個字節,共64字節為分區項1、分區項2、分區項3、分區項4

?結束標誌字,偏移地址01FE--01FF2個字節值為結束標誌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:GUIDGlobals Unique Identifierspartition table 支持128個分區,使用64位,支持8Z512Byte/block 64Z 4096Byte/block

?使用128UUID(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 列出分區信息

分區工具fdiskgdisk

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 57: 使用partprobe

partprobe[/dev/DEVICE]

buffer:緩沖,主要針對寫操作

cache:緩存,主要針對讀操作

文件系統

?文件系統是操作系統用於明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統

?從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲並對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日誌,壓縮,加密等

?支持的文件系統:/lib/modules/`uname r`/kernel/fs

文件系統類型

Linux文件系統:ext2(Extended file system), ext3, ext4, xfsSGI, btrfsOracle, reiserfs, jfsAIX, swap

光盤:iso9660

WindowsFAT32, exFAT,NTFS

Unix: FFSfast, UFSunix, JFS2

網絡文件系統:NFS, CIFS

集群文件系統:GFS2, OCFS2oracle

分布式文件系統: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文件系統

mke2fsext系列文件系統專用管理工具

-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一定要與分區上已經文件類型相同

e2fsckext系列文件專用的檢測修復工具

-y:自動回答為yes

-f:強制修復


Linux-磁盤管理1