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


原創文章,作者:swzczx,如若轉載,請注明出處:http://www.www58058.com/40517

(0)
swzczxswzczx
上一篇 2016-08-29
下一篇 2016-08-29

相關推薦

  • 馬哥教育網絡班22期+第三周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。  ~]# who |sort -nu root     pts/0        2016-08-…

    Linux干貨 2016-08-29
  • ELK-5.5.1部署

    ELK簡介 ELK Stack是軟件集合Elasticsearch、Logstash、Kibana的簡稱,由這三個軟件及其相關的組件可以打造大規模日志實時處理系統。 其中,Elasticsearch 是一個基于 Lucene 的、支持全文索引的分布式存儲和索引引擎,主要負責將日志索引并存儲起來,方便業務方檢索查詢。 Logstash是一個日志收集、過濾、轉發…

    2017-12-04
  • Linux的哲學思想及Linux發行版

    講述一下幾個問題: 第一,Linux的哲學思想;第二,Linux發行版的基礎目錄名稱,命名法則和功用規定;第三,Linux不同發行版之間的聯系和區別。 Linux的哲學思想: 1、一切皆文件。是Unix/Linux的基本哲學之一,不僅普通的文件,目錄,字符設備,塊設備,套接字等在Unix/Linux中都是以文件被對待。 2、小型,單一用途的程序。程序和可執行…

    Linux干貨 2016-09-17
  • vim 文本編輯器

    vim 文本編輯器 vi 簡介 vi命令是UNIX操作系統和類UNIX操作系統中最通用的全屏幕純文本編輯器。Linux中的vi編輯器叫vim,它是vi的增強版(vi Improved),與vi編輯器完全兼容,而且實現了很多增強功能。 vi編輯器支持編輯模式和命令模式,編輯模式下可以完成文本的編輯功能,命令模式下可以完成對文件的操作命令,要正確使用vi編輯器就…

    Linux干貨 2016-08-16
  • Linux基礎目錄名稱命名法則及功用規定

    FHS:文件系統層級結構標準 – Filesystem Hieracry Standard 參考這篇文檔: http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html  /bin:供所有用戶使用的基本命令文件 /sbin:系統管理使用的工具程序 /boot:引導加載器必須用的靜態文件…

    Linux干貨 2016-08-15
  • Linux 系統啟動流程及bash 腳本編程練習

    馬哥教育網絡班23期 第10周課堂練習 Linux 系統啟動流程及bash 腳本編程練習1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區; (1)為硬盤新建兩個主分區;并為其安裝grub; (2)為硬盤的第一個主分區提供內核和ramdisk文件;為第二個分區提供r…

    Linux干貨 2017-01-23
欧美性久久久久