Linux磁盤管理基礎
-
硬盤結構
-
文件系統與MBR、GTP
-
磁盤管理三步驟:分區、格式化、掛載
-
mount
硬盤結構
硬
盤的基本組成材質是盤片,不同容量硬盤的盤片數不等。每個盤片有兩面,都可記錄信息。盤片表面上以盤片中心為圓心,不同半徑的同心圓稱為磁道,不同盤片相
同半徑的磁道所組成的圓柱稱為柱面,每個磁道被分成許多扇形的區域,每個區域叫一個扇區,每個扇區可存儲128×2^N
次方(N=0.1.2.3)字節信息。在DOS中每扇區是128×2^2 次方=512字節。
硬盤存儲相關術語:CHS
head:磁頭 2^8=256track:磁道 2^10=1024, 每個磁道有63個扇區, cylinder: 柱面 柱面數=2^10 柱面容量=512*63*256=8M secotr: 扇區,512bytes 2^6-1=63硬盤容量:512*63*1024*256=8G
硬盤數據結構
每個磁盤有兩個面,每個面都有一個磁頭,習慣用磁頭號來區分,扇區,磁道(或柱面)和磁頭數構成了硬盤結構的基本參數?;嬎愎綖椋?/p>
硬盤容量=盤面數×柱面數×扇區數×512字節
“簇”是硬盤上存儲數據進行分配的最小單位,不同容量的硬盤,簇的大小也不一樣,簇的概念僅適用于數據區。
注意:扇區的編號是從1開始,而不是從0開始。
硬
盤的第一個扇區(0道0頭1扇區)被保留為主引導扇區。在主引導區內主要有兩項內容:主引導記錄MBR(Main Boot
Record)和分區表DPT(Disk Partition
Table,主引導記錄是一段程序代碼,其作用主要是對硬盤上安裝的操作系統進行引導;硬盤分區表則存儲了硬盤的分區信息。計算機啟動時將讀取該扇區的數
據,并對其合法性進行判斷(扇區最后兩個字節是否為0x55AA或0xAA55 )。
格
式化好的硬盤,整個磁盤按所記錄數據的作用不同可分為五部分:主引導記錄(MBR:Main Boot Record),操作系統引導記錄(OBR:
OS Boot Record),文件分配表(FAT:File Assign Table),根目錄(DIR:
Directory)和數據區(DATA)。前5個重要信息在磁盤的外磁道上。
數據存儲原理
-
文件的讀取 操作系統從目錄區中讀取文件信息(包括文件名、后綴名、文件大小、修改日期和文件在數據區保存的第一個簇的簇號)
-
文件的寫入 當我們要保存文件時,操作系統首先在DIR區中找到空區寫入文件名、大小和創建時間等相應信息,然后在Data區找到閑置空間將文件保存,并將Data區的第一個簇寫入DIR區。
-
文件的刪除 文件刪除工作就是刪除文件的索引節點。
Fdisk和Format的一點小說明
和
文件的刪除類似,利用Fdisk刪除再建立分區和利用Format格式化邏輯磁盤(假設你格式化的時候并沒有使用/U這個無條件格式化參數)都沒有將數據
從DATA區直接刪除,前者只是改變了分區表,后者只是修改了FAT表,因此被誤刪除的分區和誤格式化的硬盤完全有可能恢復……
關于硬盤,分區是不得不提到的一個概念,分區可以實現:
優化I/O性能 實現磁盤空間配額限制 提高修復速度 隔離系統和程序 安裝多個OS 采用不同文件系統
文件系統與MBR、GPT
文件系統
Linux
文件系統是一個樹形結構,以 /
目錄作為根目錄,目錄也包含其他目錄,即子目錄。我們的硬盤,在Linux上也是一個文件,叫做塊設備文件,而每一個塊設備上通過都會有一個文件系統,我
們通過掛載這個動作找到一個掛載點,以掛載點的方式將文件系統掛載到不同的設備上,從而創建文件系統的樹狀結構。
通常情況下,內核通過將某些硬盤驅動器分區上的文件系統以 / 的形式掛載來啟動這個掛載過程。當然也可以掛載到其它硬盤驅動器分區,如 /boot、/tmp 或 /home。
接下來我們再看下 Filesystem Hierarchy Standard
目錄 | 說明 |
---|---|
bin | 基本命令二進制文件 |
boot | 引導加載器的靜態文件 |
dev | 設備文件 |
etc | 特定于主機的系統配置 |
lib | 基本共享庫和內核模塊 |
media | 可插拔介質的掛載點 |
mnt | 臨時掛載文件系統的掛載點 |
opt | 附加應用軟件包 |
sbin | 基本系統二進制文件 |
srv | 提供服務的數據 |
tpm | 臨時文件 |
usr | 次要層級結構 |
var | 變量數據 |
MBR
MBR,
即MBR,全稱為Master Boot
Record,即硬盤的主引導記錄,在驅動器最前端的一段引導扇區。MBR分區表的最大可尋址的存儲空間只有2Tb(2^
32×512字節)。為了便于理解,一般將MBR分為廣義和狹義兩種:廣義的MBR包含整個扇區(引導程序、分區表及分隔標識),也就是上面所說的主引導
記錄;而狹義的MBR僅指引導程序而言。硬盤的0柱面、0磁頭、1扇區稱為主引導扇區(也叫主引導記錄MBR)。它由三個部分組成,主引導程序、硬盤分區
表DPT(Disk Partition table)和分區有效標志。在總共512字節的主引導扇區里主引導程序(boot
loader)占446個字節,第二部分是Partition
table區(分區表),即DPT,占64個字節,硬盤中分區有多少以及每一分區的大小都記在其中。第三部分是magic
number,占2個字節,固定為0xAA55或0x55AA,這取決于處理器類型
,如果是小端模式處理器(如Intel系列),則該值為0xAA55;如果是大端模式處理器 (如Motorola6800),則該值為0x55AA。
注意:MBR是不屬于任何一個操作系統,也不能用操作系統提供的磁盤操作命令來讀取它,但可以通過命令來修改和重寫。
虛擬MBR:即 EBR (extent boot record)擴展引導記錄,其記錄表項 與MBR相同 ,用于管理擴展分區上的邏輯驅動器。
MBR小結:
MBR: Master Boot Record,1982年,使用32位表示扇區數,分區不超過2T 如何分區:按柱面0磁道1扇區:512bytes446bytes: boot loader64bytes:分區表16bytes: 標識一個分區2bytes: 55AA4個主分區;3主分區+1擴展(N個邏輯分區)
GPT
GUID
磁碟分割表(GUID Partition
Table,縮寫:GPT)其含義為“全局唯一標識磁盤分區表”,是一個實體硬盤的分區表的結構布局的標準。它是可擴展固件接口(EFI)標準(被
Intel用于替代個人計算機的BIOS)的一部分,被用于替代BIOS系統中的一32bits來存儲邏輯塊地址和大小信息的主開機紀錄(MBR)分區
表。
在MBR硬盤中,分區信息直接存儲于主引導記錄(MBR)中(主引導記錄中還存儲著系統的引導程序)。但在GPT硬盤中,分區表的位置信息儲存在GPT頭中。但出于兼容性考慮,硬盤的第一個扇區仍然用作MBR,之后才是GPT頭。
為了減少分區表損壞的風險,GPT在硬盤最后保存了一份分區表的副本。
分
區表頭定義了硬盤的可用空間以及組成分區表的項的大小和數量。分區表頭還記錄了這塊硬盤的GUID,記錄了分區表頭本身的位置和大?。ㄎ恢每偸窃贚BA
1)以及備份分區表頭和分區表的位置和大?。ㄔ谟脖P的最后)。它還儲存著它本身和分區表的CRC32校驗。主分區表和備份分區表的頭分別位于硬盤的第二個
扇區(LBA 1)以及硬盤的最后一個扇區。備份分區表頭中的信息是關于備份分區表的。
GPT
小結: GPT:GUID(Globals Unique Identifiers)partition table
支持128個分區,使用64位,支持8Z(512Byte/block )64Z (4096Byte/block) 使用128位UUID
表示磁盤和分區GPT分區表自動備份在頭和尾兩份,并有CRC校驗位 UEFI (統一擴展固件接口)硬件支持GPT,使操作系統啟動
磁盤管理三步驟:分區、格式化、掛載
磁盤管理涉及到的基本命令:
查詢類: lsblk, blkid, e2label, findfs, dumpe2fs free, df, du 分區類: fdisk, gdisk, partprobe, parted 格式化類(創建文件系統) mkfs, mkfs.ext4, mkfs.xfs, mkfs.vfat --- mke2fs 掛載類: mount, findmnt, fuser, umount, 編輯類: tune2fs,e2label 修復類: fsck, e2fsck, dd
-
磁盤查詢
lsblk: 列出塊設備
[root@centos6 ~]#lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 200M 0 part /boot ├─sda2 8:2 0 97.7G 0 part / ├─sda3 8:3 0 19.5G 0 part /testdir ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 4G 0 part [SWAP] sdb 8:16 0 20G 0 disk └─sdb1 8:17 0 20G 0 part sr0 11:0 1 3.7G 0 rom /media/CentOS_6.8_Final [root@centos6 ~]#[root@centos6 ~]#lsblk -m # 顯示權限信息 NAME SIZE OWNER GROUP MODE sda 200G root disk brw-rw---- ├─sda1 200M root disk brw-rw---- ├─sda2 97.7G root disk brw-rw---- ├─sda3 19.5G root disk brw-rw---- ├─sda4 1K root disk brw-rw---- └─sda5 4G root disk brw-rw---- sdb 20G root disk brw-rw---- └─sdb1 20G root disk brw-rw---- sr0 3.7G root cdrom brw-rw---- [root@centos6 ~]#[root@centos6 ~]#lsblk -b /dev/sda # 以bytes方式顯示設備大小 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 214748364800 0 disk ├─sda1 8:1 0 209715200 0 part /boot ├─sda2 8:2 0 104857600000 0 part / ├─sda3 8:3 0 20971520000 0 part /testdir ├─sda4 8:4 0 1024 0 part └─sda5 8:5 0 4294967296 0 part [SWAP] [root@centos6 ~]#
blkid: 塊設備屬性信息查看
-U UUID: 根據指定的UUID來查找對應的設備 -L LABEL:根據指定的LABEL來查找對應的設備
[root@centos6 ~]#blkid /dev/sda2: UUID="baf588f0-3f89-4bb1-b01a-1b4ec3549536" TYPE="ext4" /dev/sda1: UUID="d27f504c-d54b-46d5-8dc3-b5ff7dca9000" TYPE="ext4" /dev/sda3: UUID="7778401f-6a06-4dc8-a3b9-8a6a972af2ed" TYPE="ext4" /dev/sda5: UUID="a3833009-be7e-4c0d-af4f-ed8045ce1652" TYPE="swap" /dev/sdb1: UUID="78281d98-04ec-4b62-82f5-518f80cb3a75" TYPE="ext4" [root@centos6 ~]# [root@centos6 ~]#blkid -s TYPE # 顯示所有設備文件系統 /dev/sda2: TYPE="ext4" /dev/sda1: TYPE="ext4" /dev/sda3: TYPE="ext4" /dev/sda5: TYPE="swap" /dev/sdb1: TYPE="ext4"
findfs: 查找分區
findfs - Find a filesystem by label or UUID findfs[options] LABEL=<label> findfs[options] UUID=<uuid>
[root@centos6 ~]#findfs UUID=baf588f0-3f89-4bb1-b01a-1b4ec3549536 # UUDI可通過blkid查看或直接查看 /etc/fstab/dev/sda2 [root@centos6 ~]#
**dumpe2fs: 查看超級塊信息
[root@centos6 ~]#dumpe2fs /dev/sda1
free: 內存空間使用狀態
free - Display amount of free and used memory in the systemfree [OPTION] -m: 以MB為單位 -g: 以GB為單位
[root@centos6 ~]#free total used free shared buffers cached Mem: 1907300 627884 1279416 2208 27832 286968 -/+ buffers/cache: 313084 1594216 Swap: 4194300 0 4194300 [root@centos6 ~]#free -m total used free shared buffers cached Mem: 1862 613 1249 2 27 280 -/+ buffers/cache: 305 1556 Swap: 4095 0 4095 [root@centos6 ~]#free -h total used free shared buffers cached Mem: 1.8G 612M 1.2G 2.2M 27M 280M -/+ buffers/cache: 305M 1.5G Swap: 4.0G 0B 4.0G [root@centos6 ~]#
df: 文件系統空間占用等信息的查看工具
df - report file system disk space usage df [OPTION]... [FILE]... -H 以1000為單位 -T 文件系統類型 -h: human-readable -i:inodesinstead of blocks -P: 以Posix兼容的格式輸出
[root@centos6 ~]#df -h [root@centos6 ~]#df -H
[root@centos6 ~]#df -i[root@centos6 ~]#df -T
du: 查看某目錄總體空間占用狀態
du [OPTION]... DIR -h: human-readable -s: summary
[root@centos6 ~]#du -h Music /4.0K Music/ [root@centos6 ~]#du -s Music /4 Music/
-
磁盤分區
fdisk
fdisk - Partition table manipulator for Linux fdisk -l [-u] [device...] 子命令: p 分區列表 t 更改分區類型 n 創建新分區 d 刪除分區 w 保存并退出 q 不保存并退出
添加一塊新硬盤:
[root@centos6 ~]#echo "- - -" > /sys/class/scsi_host/host2/scan # 讓系統掃描硬盤
以柱面為單位: [root@centos6 ~]#fdisk -l /dev/sda 以兼容的方式顯示:(compatible) [root@centos6 ~]#fdisk -lc /dev/sda 以扇區為單位: [root@centos6 ~]#fdisk -lcu /dev/sda
用fdisk給sdc劃分一個主分區,一個擴展分區,一個邏輯分區:
[root@centos6 ~]#fdisk /dev/sdc Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x76fc3350. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n # 創建一個新分區 Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-2610, default 1): Using default value 1Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +5G Command (m for help): n Command action e extended p primary partition (1-4) e Partition number (1-4): 4 First cylinder (655-2610, default 655): Using default value 655Last cylinder, +cylinders or +size{K,M,G} (655-2610, default 2610): +3G Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (655-1047, default 655): Using default value 655Last cylinder, +cylinders or +size{K,M,G} (655-1047, default 1047): +3G Command (m for help): p # 查看當前分區 Disk /dev/sdc: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x76fc3350 Device Boot Start End Blocks Id System /dev/sdc1 1 654 5253223+ 83 Linux /dev/sdc4 655 1047 3156772+ 5 Extended /dev/sdc5 655 1047 3156741 83 Linux Command (m for help): w 保存并退出 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@centos6 ~]#
查看內核是否已經識別新的分區:
[root@centos6 ~]#cat /proc/partitions
如果未識別出,可同步分區表,即通知內核重新讀取硬盤分區表。
同步分區表: CentOS 6 partx-a /dev/DEVICE partx-d -n M:N /dev/DEVICE CentOS 5 7 partprobe[/dev/DEVICE]
gdisk: 類fdisk 的GPT分區工具
gdisk - Interactive GUID partition table (GPT) manipulator 注意:gdisk沒有擴展分區邏輯分區的概述。
關于gfisk, 此處選擇在Cent OS 7環境:
[root@centos7 ~]#gdisk /dev/sde GPT fdisk (gdisk) version 0.8.6 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries. Command (? for help): n Partition number (1-128, default 1): First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +5G Current type is 'Linux filesystem 'Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem' Command (? for help): p Disk /dev/sde: 41943040 sectors, 20.0 GiB Logical sector size: 512 bytes Disk identifier (GUID): FF896BB7-557D-4230-8682-67E987F19722 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 41943006 Partitions will be aligned on 2048-sector boundaries Total free space is 31457213 sectors (15.0 GiB) Number Start (sector) End (sector) Size Code Name 1 2048 10487807 5.0 GiB 8300 Linux filesystem Command (? for help): n Partition number (2-128, default 2): First sector (34-41943006, default = 10487808) or {+-}size{KMGTP}: Last sector (10487808-41943006, default = 41943006) or {+-}size{KMGTP}: +10G Current type is 'Linux filesystem'Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem' Command (? for help): p Disk /dev/sde: 41943040 sectors, 20.0 GiB Logical sector size: 512 bytes heDisk identifier (GUID): FF896BB7-557D-4230-8682-67E987F19722 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 41943006 Partitions will be aligned on 2048-sector boundaries Total free space is 10485693 sectors (5.0 GiB) Number Start (sector) End (sector) Size Code Name 1 2048 10487807 5.0 GiB 8300 Linux filesystem 2 10487808 31459327 10.0 GiB 8300 Linux filesystem Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTINGPARTITIONS!! Do you want to proceed? (Y/N): Y OK; writing new GUID partition table (GPT) to /dev/sde. The operation has completed successfully. [root@centos7 ~]#
查看內核是否已經同步分區表:
[root@centos7 ~]#cat /proc/partitions |grep sde 8 64 20971520 sde 8 65 5242880 sde1 8 66 10485760 sde2 [root@centos7 ~]#
parted:GNU組織開發的一款強大實時磁盤分區工具
parted - a partition manipulation program parted [options] [device [command [options...]...]]
parted命令可以處理最常見的分區格式,包括:ext2、ext3、fat16、fat32、NTFS、ReiserFS、JFS、XFS、UFS、HFS以及Linux交換分區。
使用示例
parted /dev/sdbmklabelgpt|msdos parted /dev/sdbprint parted /dev/sdbmkpartprimary 1 200 (默認M) parted /dev/sdbrm1 parted -l
[root@centos7 ~]#parted /dev/sdb GNU Parted 3.1 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) mklabel gpt Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? y (parted) mkpart primary 1 20480 # 默認單位為M (parted) mkpart primary 20480 60000 # 最好連續寫,不連續會提示你并自給給你連續 (parted) mkpart primary 60000 100000 (parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 215GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 20.5GB 20.5GB ext4 primary 2 20.5GB 60.0GB 39.5GB primary 3 60.0GB 100GB 40.0GB primary (parted) rm 2 (parted) p Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 215GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 20.5GB 20.5GB ext4 primary 3 60.0GB 100GB 40.0GB primary (parted) q Information: You may need to update /etc/fstab. [root@centos7 ~]#
parted的操作都是實時生效的,小心使用!
-
創建文件系統與編輯元數據
文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。
從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,加密等。
文件系統類型Linux文件系統: ext2(Extended file system), ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap 光盤:iso9660 Windows:fat32, ntfs Unix: FFS(fast), UFS(unix), JFS2 網絡文件系統:NFS, CIFS 集群文件系統: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
那
么,為何Linux能夠支持如此眾多的文件系統呢?這是因為VFS(Virtual Filesystem
Switch),其作用就是采用標準的Unix系統調用讀寫位于不同物理介質上的不同文件系統,即為各類文件系統提供了一個統一的操作界面和應用編程接
口。VFS是一個可以讓open()、read()、write()等系統調用不用關心底層的存儲介質和文件系統類型就可以工作的粘合層。而Linux文
件系統對外的接口,任何要使用文件系統的程序都必須經由這層接口來使用它。
每一種類型的文件系統代碼都隱藏了實現的細節。因此,對于VFS層和內核的其它部分而言,每一種類型的文件系統看起來都是一樣的。
接著來看我們的命令:
mke2fs
是ext系統文件系統專用管理工具,mkfs則可以調用相關的程序來創建文件系統,如etx系列, xfs, btrfs,
vfat,但其本身并不執行建立文件系統的工作,而是去調用相關程序;mkfs與mke2fs功能強大,還可以管理inode,
如為數據空間創建多個個inode, 一個inode指向數據空間的多少字節,還可以開啟或禁用某些文件系統的特性,如日志功能等。
mke2fs命令小結:
mke2fs:ext系列文件系統專用管理工具 -t {ext2|ext3|ext4}-b {1024|2048|4096} # 指定數據塊的大小 -j: 相當于-t ext3mkfs.ext3 = mkfs-t ext3 = mke2fs -j = mke2fs -t ext3 -i #: 為數據空間中每多少個字節創建一個inode;此大小不應該小于block的大小 -N #:為數據空間創建個多少個inode-I 一個inode記錄大小128---4096 # 指定節點記錄的大小 -m #: 默認5%,為管理人員預留空間占總空間的百分比 -O FEATURE[,...]:啟用指定特性 -O ^FEATURE:關閉指定特性
其中-b 用來指定數據塊的大小,-I 用來指定節點記錄的大小,超級塊與inode tabel 的關系也下圖所示:
mkfs命令小結:
mkfs命令: (1) # mkfs.FS_TYPE/dev/DEVICEext4 xfs btrfs vfat (2) # mkfs-t FS_TYPE /dev/DEVICE-L 'LABEL': 設定卷標
注意:mkfs命令也可以修改元數據,譬如塊大小與inode,即mke2fs的功能選項mkfs命令通常也通用!
查看與編輯元數據:tune2fs, dumpe2fs
tune2fs:重新設定ext系列文件系統可調整參數的值 -l:查看指定文件系統超級塊信息;super block -L 'LABEL':修改卷標-m #:修預留給管理員的空間百分比 -j: 將ext2升級為ext3 -O: 文件系統屬性啟用或禁用,–O ^has_journal -o: 調整文件系統的默認掛載選項,–o ^acl -U UUID: 修改UUID號 dumpe2fs: -h:查看超級塊信息(分組信息),分區用分組管理
使用示例
[root@centos7 ~]#mkfs.ext4 /dev/sdb1 [root@centos7 ~]#mke2fs -j /dev/sdb3 # mkfs.ext3 = mkfs-t ext3 = mke2fs -j = mke2fs -t ext3 [root@centos7 ~]#blkid /dev/sdb1 /dev/sdb1: UUID="71b05248-a5a7-4532-bd41-67d7b062e8e5" TYPE="ext4" PARTLABEL="primary" PARTUUID="0020ea01-ab53-487a-ad09-01c075383e74" [root@centos7 ~]# [root@centos7 ~]#blkid /dev/sdb3 /dev/sdb3: UUID="e67d9e57-7d62-417d-a43f-e57c6e3c45f8" SEC_TYPE="ext2" TYPE="ext3" PARTLABEL="primary" PARTUUID="aaf54c4d-595b-4e6a-9657-ab0eb4b91c61" [root@centos7 ~]#
[root@centos7 ~]#tune2fs -l /dev/sdb1 查看sdb1的超級塊信息
其中,Reserved block count:是指保留的塊,其是預留給管理員與管理員組的!
Reserved block count Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root)
[root@centos7 ~]#mkfs.ext4 -I 256 /dev/sdb1 # 創建文件系統時指定inode大小
[root@centos7 ~]#mkfs.ext4 -N 512000 /dev/sdb1 # 創建文件系統時指定inode數量
[root@centos7 ~]#mkfs.ext4 -i 10240 /dev/sdb1 # 創建文件系統時指定一個inode所消耗的數據塊大小, 此值越大,inode計數越小,即inode所占用的空間越小。 [root@centos7 ~]#mkfs.ext4 -m 1 /dev/sdb1 # 創建文件系統時指定預留空間占總空間的百分比,此處為1%.
當然,好些元數據信息在創建好文件系統之后也可以利用tune2fs來調整:
[root@centos7 ~]#tune2fs -m 1 /dev/sdc1 # 調整預留空間占比 tune2fs 1.42.9 (28-Dec-2013) Setting reserved blocks percentage to 1% (7864 blocks) [root@centos7 ~]# [root@centos7 ~]#tune2fs -m 0 /dev/sdc1 tune2fs 1.42.9 (28-Dec-2013) Setting reserved blocks percentage to 0% (0 blocks) [root@centos7 ~]# [root@centos7 ~]#mke2fs -L /mnt/sdb1 /dev/sdb1 # 創建文件系統時指定卷標,建議卷標為掛載點
-
磁盤的掛載與修復
關于掛載:
掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它文件訪問入口的行為
把設備關聯掛載點:mount Point,掛載點下原有文件在掛載完成后會被臨時隱藏,掛載點目錄一般為空
卸載時:為解除此關聯關系的過程,可使用設備,也可以使用掛載點
我們用卷標的管理來引入掛載,e2label:
e2label - Change the label on an ext2/ext3/ext4 filesystem e2label device [ new-label ]
[root@centos7 ~]#e2label /dev/sdb1/mnt/sdb1 [root@centos7 ~]# [root@centos7 ~]#e2label /dev/sdb1 /mnt/liansir [root@centos7 ~]#tune2fs -l /dev/sdb1 tune2fs 1.42.9 (28-Dec-2013) Filesystem volume name: /mnt/liansir
[root@centos7 ~]#blkid /dev/sdb1 /dev/sdb1: LABEL="/mnt/liansir" UUID="14167f80-eedd-4770-8bbe-000d2e073e19" TYPE="ext2" PARTLABEL="primary" PARTUUID="0020ea01-ab53-487a-ad09-01c075383e74" [root@centos7 ~]#tune2fs -j /dev/sdb1 # 將ext2升級為ext3 tune2fs 1.42.9 (28-Dec-2013) Creating journal inode: done [root@centos7 ~]#blkid /dev/sdb1 /dev/sdb1: LABEL="/mnt/liansir" UUID="14167f80-eedd-4770-8bbe-000d2e073e19" SEC_TYPE="ext2" TYPE="ext3" PARTLABEL="primary" PARTUUID="0020ea01-ab53-487a-ad09-01c075383e74" [root@centos7 ~]#
而CentOS 6默認掛載選項與什么時候創建文件系統相關:
于是,如果將sdb1掛載到某一掛載點,并創建一個文件,在給此文件設置acl功能時卻提示不支持此操作:
[root@centos6 ~]#mkdir /mnt/sdb1 [root@centos6 ~]#mount /dev/sdb1 /mnt/sdb1 [root@centos6 ~]#cd /mnt/sdb1 [root@centos6 /mnt/sdb1]#touch f1 [root@centos6 /mnt/sdb1]#setfacl -m u:liansir:rw f1setfacl: f1: Operation not supported [root@centos6 /mnt/sdb1]#
小結:centos 6 手動分區格式化ext,默認沒有acl功能,而centos 7默認就有。
[root@centos6 ~]#tune2fs -o acl /dev/sdb1 # 開啟文件系統的alc特性 tune2fs 1.41.12 (17-May-2010) [root@centos6 ~]# [root@centos6 ~]#umount /mnt/sdb1 # 先卸載 [root@centos6 ~]#mount /dev/sdb1 /mnt/sdb1 [root@centos6 ~]#cd /mnt/sdb1 [root@centos6 /mnt/sdb1]#setfacl -m u:liansir:rw f1 [root@centos6 /mnt/sdb1]#ll f1-rw-rw-r--+ 1 root root 0 Aug 28 11:29 f1 [root@centos6 /mnt/sdb1]# [root@centos6 /mnt/sdb1]#tune2fs -o ^acl /dev/sdb1 # 禁用文件系統的acl特性 tune2fs 1.41.12 (17-May-2010) [root@centos6 /mnt/sdb1]#
破壞與修復超級塊信息:
[root@centos6 ~]#dd if=/dev/zero of=/dev/sdb1 bs=1M count=10 # 破壞 10+0 records in 10+0 records out 10485760 bytes (10 MB) copied, 0.0640596 s, 164 MB/s [root@centos6 ~]#dumpe2fs /dev/sdb1 # 查看 dumpe2fs 1.41.12 (17-May-2010)dumpe2fs: Bad magic number in super-block while trying to open /dev/sdb1 Couldn't find valid filesystem superblock. [root@centos6 ~]# [root@centos6 ~]#fsck -y /dev/sdb1 # 修復時如果不指定文件系統類型則會自動識別 fsck from util-linux-ng 2.17.2 e2fsck 1.41.12 (17-May-2010)fsck.ext2: Superblock invalid, trying backup blocks... Superblock has an invalid journal (inode 8). Clear? yes [root@centos6 ~]#tune2fs -l /dev/sdb1 # 查看文件系統狀態是否為clean tune2fs 1.41.12 (17-May-2010) Filesystem volume name: <none> Last mounted on: /mnt/sdb1 Filesystem UUID: 7ba2398a-3ac0-4db9-901e-d4d0987aaabc Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic)Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: (none) Filesystem state: clean
至此,我們需要詳細了解下mount與dd這兩個命令的用法:
掛載方法:mount DEVICE MOUNT_POINT mount:通過查看/etc/mtab文件顯示當前已掛載的所有設備 mount [-fnrsvw] [-t vfstype] [-o options] device dir device:指明要掛載的設備; (1) 設備文件:例如/dev/sda5 (2) 卷標:-L 'LABEL', 例如-L 'MYDATA' (3) UUID, -U 'UUID':例如-U '0c50523c-43f1-45e7-85c0-a126711d406e' (4) 偽文件系統名稱:proc, sysfs, devtmpfs, configfs dir:掛載點 事先存在;建議使用空目錄 進程正在使用中的設備無法被卸載
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
另外,mount還有一個強大的-o選項集:-o options:(掛載文件系統的選項),多個選項使用逗號分隔
-
async: 異步模式
-
sync: 同步模式,內存更改時,同時寫磁盤
-
atime/noatime: 包含目錄和文件
-
diratime/nodiratime: 目錄的訪問時間戳
-
auto/noauto: 是否支持自動掛載,是否支持-a選項
-
exec/noexec: 是否支持將文件系統上運行應用程序
-
dev/nodev: 是否支持在此文件系統上使用設備文件
-
suid/nosuid: 不否支持suid和sgid權限 9 remount: 重新掛載
-
ro: 只讀
-
rw: 讀寫
-
user/nouser: 是否允許普通用戶掛載此設備,默認管理員才能掛載
-
acl: 啟用此文件系統上的acl功能
-
Defaults: 相當于rw, nosuid, dev, exec, auto, nouser, async
還有以下常用配合命令:
查看掛載情況: findmnt MOUNT_POINT 查看正在訪問指定文件系統的進程: lsof MOUNT_POINT fuser -v MOUNT_POINT 終止所有在正訪問指定的文件系統的進程: fuser -km MOUNT_POINT # 注意別干掉根的進程,否則只能重啟,fuser -km / 卸載: umount DEVICE umount MOUNT_POINT mount的掛載動作在系統重啟后失效,要想永久生效,則要寫入其配置文件:/etc/fstab
/etc/fstab: 每行定義一個要掛載的文件系統
止戰
2016.8.29
原創文章,作者:Liansir,如若轉載,請注明出處:http://www.www58058.com/42515
有圖有文,每個練習結果均有圖證,看得出其中的認真程度,贊