Linux 磁盤管理

磁盤管理


Linux思想一切皆文件

open(),read(),write(),close()


I/O 設備地址


設備類型:

塊設備:block,存取單位“塊”,磁盤 (隨機訪問

字符設備:char,存取單位“字符”,鍵盤 (邏輯訪問


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


設備編號:

ll /dev/sda*

root disk 8.0

root disk 8.1

每一個設備都擁有一個主要號碼,代表設備的類型,第二個是同一類型的唯一編號。

QQ圖片201608241030461.png

硬盤接口類型:


並行:

IDE:133MB/s (家用)

SCSI:640MB/s  (服務器)


串口:

SATA:6Gbps (家用)

SAS:6Gbps   (服務器)

USB:480MB/s


rpm: rotations per minute

每分鐘的轉速


磁盤設備的設備文件命名:/dev/DEV_FILE

IDE: /dev/hd

SCSI, SATA, SAS, USB: /dev/sd

不同設備:a-z

/dev/sda, /dev/sdb, …


同一設備上的不同分區:1,2, …

/dev/sda1, /dev/sda5

blob.png

磁頭 head

2磁頭數 =1盤片

磁道 track

扇區 sector (512字節)


head 256 磁頭

track 1024 磁道

secror 63 扇區

CHS(culinder柱面)

culinder=track*head=512*63*256=8M

(centos6版本之後就不用整個柱面分區)

LBA 邏輯尋址(6版本之後就使用)

blob.png

blob.png

分區

兩種分區方式: MBR ,GPT


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

如何分區:按柱面

0磁道0扇區:512bytes

446bytes: boot loader

64bytes分區表

16bytes: 標識一個分區

2bytes: 55AA (識別是否有分區)

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


GPT:GUID(Globals Unique Identifiers)partition table 支持128個分區,使用64位,支持8Z(512Byte/block )64Z (4096Byte/block)

使用128位UUID 表示磁盤和分區GPT分區表自動備份在頭和尾兩份,並有CRC校驗位

UEFI (統一擴展固件接口)硬件支持GPT,使操作系統啓動


EFI部分又可以分爲4個區域:EFI信息區(GPT頭)、分區表、GPT分區、備份區域


linux 使用的分區方式

lilo

grub (5,6版本)

grub2(7版本之後使用)


echo "- – -"> /sys/class/scsi_host/host0/scan 

掃描新添加的硬盤


(查看分區)

lsblk 查看硬盤信息 (讀取內存中的信息)

fdisk -l /dev/sdd 查看硬盤信息

QQ圖片20160826150822.png

hexdump -C -n 512 /dev/sda 查看磁盤前512字節的信息

blob.png

dd if=/dev/sda of=/testdir/mbrbak bs=1 count=512

備份mbr

blob.png

dd if=/testdir/mbrbak of=/dev/sdd

將磁盤中備份的磁盤信息放到sdd

blob.png

dd if=/dev/zero of=/dev/sdd bs=1 count=446 將前446字節用0替代

blob.png

blob.png

dd if=/dev/zero of/=dev/sdd bs=1 count=2 skip=510 seek=510

用0代替最後兩個字節的分區標識55AA。

blob.png

blob.png

最後兩位字節存儲標識的55 AA變成00 00

dd if=/testdir/mbrbak of=/dev/sdd bs=1 count=2 skip=510 seek=510

恢復分區標識

blob.png


管理分區

列出塊設備

lsblk

blob.png

創建分區使用:

fdisk創建MBR分區,也支持GPT,對於一塊硬盤,最多隻能管理15分區

blob.png

blob.png

fdisk /dev/sdc

w:存盤退出

n:添加一個新的分區、柱面爲單位,

p:顯示

d:刪除

q:不保存退出

t:更改分區類型

gdisk創建GPT分區

blob.png

查看內核是否已經識別新的分區:

 cat /proc/partations

 partx -a /dev/sda (6使用這個指令)


partprobe

同步

GNU parted高級分區操作(創建、複製、調整大小等等)


parted /dev/sdc mklabel msdos  

創建新的磁盤格式爲MBR

parted /dev/sdc mklabel gpt

創建新的磁盤格式爲GPT


fdisk -l /dev/sdc 

blob.png

查看分區的起始到結束點,塊的數量,ID

parted /dev/sdc/mkpart primary 1 1024 

起始點 終止點      創建一個分區

parted /dev/sdc/ rm 1

刪除/dev/sdc 第一個分區

partprobe-重新設置內存中的內核分區表版本


文件系統

文件系統是操作系統用於明確存儲設備或分區上的文件的方法和數據結構;

即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱爲文件管理系統,簡稱文件系統。

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


ext3(centos5)

ext4(centos6)

xfs(centos7)


光盤:iso9660


網絡文件系統:NFS,CIFS (Linux包 samba)


集羣文件系統:GFS2,OCFS2(oracle)


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

blob.png

lsmod 可以查看設備的驅動是否安裝成功

blob.png

創建文件系統

mkfs.

mkfs -t ext4

mke2fs 


mke2fs /dev/sdc1 建立ext文件系統

blob.png

一個塊=4k

tune2fs -l /dev/sd* 

blob.png

超級塊是存儲關於塊的數據,塊的大小,塊的元數據。

組超級塊,存儲塊的大小,和每個組有多少塊,塊的元數據。

超級塊會自動備份。


blkid 查看盤的文件系統

tun2fs -o ^has_journal /dev/sd*

移除 日誌功能,ext3變ext2


創建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

tune2fs -m 0 /dev/sda5

-i#: 爲數據空間中每多少個字節創建一個inode;此大小不應該小於block的大小

-N#:爲數據空間創建個多少個inode

-I 一個inode記錄大小128—4096

-m #: 默認5%,爲管理人員預留空間佔總空間的百分比

-O FEATURE[,…]:啓用指定特性

-O ^FEATURE:關閉指定特性

blob.png

文件系統標籤

blkid:塊設備屬性信息查看

-U UUID: 根據指定的UUID來查找對應的設備

-L LABEL:根據指定的LABEL來查找對應的設備

blob.png

e2label /dev/sdc2 /mnt/sdc2

加捲標

blob.png

tune2fs

tune2fs:重新設定ext系列文件系統可調整參數的值


-l:查看指定文件系統超級塊信息;super block

-L 'LABEL':修改卷標

-m #:修預留給管理員的空間百分比

-j: 將ext2升級爲ext3

-O: 文件系統屬性啓用或禁用,–O ^has_journal

-o: 調整文件系統的默認掛載選項,–o ^acl

-U UUID: 修改UUID號

blob.png

ecntos6 手動分區格式化ext 沒有acl功能

tune2fs -o acl /dev/sd*

ACL:

具有能再添加侷限權限的能力,實現靈活的權限管理

Centos 7 默認創建xfs 和ext4 文件系統有ACL功能。

Centos 7 版本之前,默認手工創建的ext4文件系統無ACL功能。

         手動添加:

                  tune2fs -o acl /dve/sdb1

                  mount -o acl /dve/sbd1 /mnt

ACL 生效順序:所有者,自定義用戶,自定義組,其他人。


tune2fs -l /dev/sd*

文件系統檢測和修復

常發生於死機或者非正常關機之後

掛載爲文件系統標記爲“dirty”

fsck: File System Check

fsck.FS_TYPE

fsck-t FS_TYPE

-a: 自動修復錯誤

-r: 交互式修復錯誤

fsck -y /dev/sd* 默認在yes的選項下修復

不要在掛載的情況下修復,不然修復會破壞元數據。

注意: FS_TYPE一定要與分區上已經文件類型相同;

fsck -a /dev/sd*

文件修復

fsck 通常用來檢查並適當修復一個或多個Linux文件系統. filesys 可以是一個設備名(例如: /dev/hdc1 , /dev/sdb2 ), 一個掛載點(例如: / , /usr , /home ), 或一個ext2文件系統的磁盤標籤, 也可以是UUID指定符(例如: UUID=8868abf6-88c5-4a83-98b8-bfc24057f7bd 或 LABEL=root). 通常, fsck 會試着以並行的方式同時在不同的物理磁盤上運行文件系統檢查,這樣可以減少對所有文件系統進行檢查的時間。

如果沒有在命令行指定文件系統,並且沒有指定 -A 選項, fsck 將默認順序地檢查 /etc/fstab 中登記的文件系統。這和使用 -As 選項是相同的。

fsck 退出的返回值是下列情況之和: 

0 - 沒有錯誤 

1 - 文件系統有錯但已修復 

2 - 系統應當重啓 

4 - 文件系統錯誤沒有修復 

8 - 運行錯誤 

16 - 用法或語法錯誤 

32 - 用戶撤銷了fsck 操作 

128 - 共享庫出錯 

當檢測多個文件系統時,退出的返回值是對每個文件系統檢查的返回值按位或的結果。

e2fsck:ext系列文件專用的檢測修復工具

-y:自動回答爲yes

-f:強制修復


最大掛載次數和時間間隔會觸發fsck檢查命令。

fuser -v /mnt/sdb1 查看誰在掛載使用用

fuser -km /mnt/sdb1 強行T出掛載

掛載點目錄一般爲空


mount 查看掛載

cat /etc/mounts(特殊項都能看到)

掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關係,進而使得此目錄做爲其它文件訪問入口的行爲

卸載:爲解除此關聯關係的過程

把設備關聯掛載點:mount Point

mount

卸載時:可使用設備,也可以使用掛載點

umount

掛載點下原有文件在掛載完成後會被臨時隱藏

掛載點目錄一般爲空


mount常用命令選項

-t vsftype:指定要掛載的設備上的文件系統類型

-r: readonly,只讀掛載

-w: read and write, 讀寫掛載

-n: 不更新/etc/mtab,相當於#mount

-a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能)

-L 'LABEL': 以卷標指定掛載設備

-U 'UUID': 以UUID指定要掛載的設備

-B, –bind: 綁定目錄到另一個目錄上


查看內核追蹤到的已掛載的所有設備

cat /proc/mounts

blob.png

mount -o remount,noatime /mnt/

取消掛載再重新掛載,不使用atime

mount -o noexec,noatime /mnt/

取消掛載再重新掛載,不使用執行文件


不要輕易將掛載權限比普通用戶

blob.png

創建了一個新的文件夾/mnt/sdd

將硬盤/dev/sdd 掛載在/mnt/sdd中

blob.png

-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, suid, dev, exec, auto, nouser, async


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章