Linux磁盤及文件系統管理
Disk(硬盤)接口類型:
IDE:并口,133MB/s
SCSI:并口,640MB/s
SATA:串口,6Gbps
SAS:串口,6Gbps
USB:串口,480MB/s
并口:同一線纜可以接多塊設備:
IDE:
兩個,主從
SCSI:
寬帶:16-1個
窄帶:8-1個
串口:同一線纜只可以接一個設備:
硬盤:機械硬盤,固態硬盤
機械硬盤:
head:磁頭
track:磁道
cylinder:柱面
secotr:扇區,512bytes
平均尋道時間:5400rpm(每分鐘5400轉),7200,10000,15000rpm
Linux的哲學思想:一切皆文件
設備類型:
塊設備:block,隨機訪問,存取單位“塊”,磁盤
字符設備:char,線性訪問,存取單位“字符”,鍵盤
設備文件:FHS
/dev:設備文件,關聯至設備的驅動程序,設備的訪問入口
設備號碼:
主設備號:major number,標識設備類型
次設備號:minor number,標識同一類型下的不同設備
mknod命令:創建設備文件
mknod [OPTION]… NAME TYPE [MAJOR MINOR]
-m MODE:創建后的設備文件的訪問權限
eg:# mknod /dev/test b 100 1
設備文件名:命名規則由ICANN指定
磁盤:
IDE: /dev/hd[a-z]
eg:/dev/hda ,/dev/hdb
SCSI, SATA, SAS, USB: /dev/sd[a-z] //用戶26個后使用aa,ab,ac,…..az
eg:/dev/sda ,/dev/sdb, …
同一設備上的不同分區:1,2, …
eg:/dev/sda1 ,/dev/sda5
磁盤分區:
兩種分區方式: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 patition table支持128個分區,使用64位,支持8Z(512Byte/block)64Z(4096Byte/block)
使用128位UUID表示磁盤和分區GPT分區表自動備份在頭和尾兩份,并有CRC校驗位
UEFI ( 統一擴展固件接口)硬件支持GPT
分區創建工具:parted,sfdisk和fdisk
fdisk命令:
1、查看磁盤的分區信息:
fdisk -l [device…] :列出全部[指定]磁盤設備上的分區情況
2、管理分區
fdisk device
fdisk命令提供了一個交互式接口來管理分區,它有許多子命令,分別用于不同的管理功能,索引的操作均在內存中完成,沒有直接同步到磁盤,指定使用w命令保存至磁盤上
常用命令:
n:創建一個新的分區
d:刪除一個分區
t:修改一個分區的分區類型
l:查看或列出所有分類對應的id表
w:保存退出
q:不保存退出
p:顯示當前分區
m:查看幫助信息
注意:在已經分區并且已經掛載其中某個分區的磁盤設備上創建的新分區,內核可能在創建完成后無法直接識別,需要使用命令通知內核重新讀此分區
查看:cat /proc/partations
通知內核強制重讀磁盤分區表:
CentOS5,7:partprobe [device]
CentOS6,7:partx,kpartx
新增分區:# partx -a [device]
刪除分區:# partx -d -n M[-N] /dev/DEVICE (M,N為分區的數字編號)
[root@CentOS6 boot]# lsblk //目前磁盤上只有一塊磁盤sda,上面只有一個分區 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom sda 8:0 0 200G 0 disk ├─sda1 8:1 0 200M 0 part /boot ├─sda2 8:2 0 48.8G 0 part / ├─sda3 8:3 0 19.5G 0 part /testdir ├─sda4 8:4 0 1K 0 part ├─sda5 8:5 0 3.9G 0 part [SWAP] └─sda6 8:6 0 1G 0 part /home [root@CentOS6 boot]# fdisk /dev/sda //進入到fdisk提供的交互式接口中,管理磁盤 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 //新建一個分區 First cylinder (9592-26109, default 9592): //起始柱面為默認柱面 Using default value 9592 Last cylinder, +cylinders or +size{K,M,G} (9592-26109, default 26109): +10G //直接指明空間為10G Command (m for help): p //顯示sda磁盤在內存中的已存在分區(注意:此時修改還沒有寫入磁盤上,如若修改錯誤,可以直接使用q命令退出) Disk /dev/sda: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 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: 0x0009f14f Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 6400 51200000 83 Linux /dev/sda3 6400 8950 20480000 83 Linux /dev/sda4 8950 26109 137829376 5 Extended /dev/sda5 8950 9460 4096000 82 Linux swap / Solaris /dev/sda6 9460 9591 1055804 83 Linux /dev/sda7 9592 10897 10490413+ 83 Linux //新建的磁盤,10G Command (m for help): w //保存退出,并寫如磁盤 The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. //提示磁盤分區情況和內存不同步,要使用命令手動同步 The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. [root@CentOS6 boot]# partx -a /dev/sda //手動同步系統磁盤情況 BLKPG: Device or resource busy error adding partition 1 .... error adding partition 6 [root@CentOS6 boot]# fdisk -l /dev/sda //查看sda磁盤的情況 Disk /dev/sda: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 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: 0x0009f14f Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 6400 51200000 83 Linux /dev/sda3 6400 8950 20480000 83 Linux /dev/sda4 8950 26109 137829376 5 Extended /dev/sda5 8950 9460 4096000 82 Linux swap / Solaris /dev/sda6 9460 9591 1055804 83 Linux /dev/sda7 9592 10897 10490413+ 83 Linux
創建文件系統:
文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。
從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,加密等
格式化:低級格式化(分區之前進行,劃分磁道),高級格式化(分區之后進行,創建文件系統)
VFS:Virtual File System
Linux 文件系統: ext2, ext3, ext4, xfs (SGI), btrfs(Oracle), reiserfs, jfs(AIX ), swap
swap:交換分區
光盤:iso9660
Windows:fat32, ntfs
Unix: FFS (fast ), UFS (unix ), JFS2
網絡文件系統:NFS, CIFS
集群文件系統:GFS2, OCFS2 (oracle)
內核級分布式文件系統:ceph
偽文件系統:proc, ysfs, tmpfs, hugepagefs
用戶空間的分布式文件系統:moosefs, mogilefs, glusterfs
RAW :未經處理或者未經格式化產生的文件系統
根據其是否支持"journal"(日志)功能:
何為日志文件系統:加入了對文件系統更改的日志記錄,減少文件被破壞的機率,訪問磁盤時系統死機不會丟失文件
日志型文件系統: ext3, ext4, xfs, …
非日志型文件系統: ext2, vfat
查前支持的文件系統:# cat /proc/filesystems
磁盤和文件系統管理:
文件系統管理工具:
創建文件系統的工具:mkfs, mke2fs
檢測及修復文件系統的工具:fsck, e2fsck
查看其屬性的工具:dumpe2fs, tune2fs
調整文件系統特性:tune2fs
內核級文件系統的組成部分:
文件系統驅動:由內核提供
文件系統管理工具:由用戶空間的應用程序提供
ext系列文件系統的管理工具:
mkfs:
常見的2中表現方式:
(1)mkfs.FS_TYPE /dev/DEVICE
FS_TYPE:
ext2 ,ext3 ,ext4 ,xfs ,btrfs ,vfat
(2)mkfs -t FS_TYPE /dev/DEVICE
選項:
-b:指定塊大小
-L 'LABEL':設定卷標
ext系列文件系統專用管理工具:mke2fs
mke2fs [OPTIONS] device
-t {ext2|ext3|ext4}:指明要創建的文件系統類型
mkfs.ext4 = mkfs -t ext4 = mke2fs -t ext4
-b {1024|2048|4096}:指明文件系統的塊大?。J的最小存儲單元)
-L LABEL:指明卷標
-j:創建有日志功能的文件系統(ext3)
mke2fs -j = mkfs.ext3 = mkfs -t ext3 = mke2fs -t ext3
-i #:為數據空間中每多少個字節創建一個inode ;此大小不應該小于block的大小
-N #:為數據空間創建個多少個inode
-I 一個inode記錄大小128—4096
-m #:默認5%, 為管理人員預留空間占總空間的百分比
-O FEATURE[,…] :啟用指定特性
-O ^FEATURE:關閉某指定特性
[root@CentOS6 boot]# mke2fs -t ext4 -L mydata -b 1024 /dev/sda7 //指明文件系統類型,指明卷標,指明了塊大小 mke2fs 1.41.12 (17-May-2010) Filesystem label=mydata OS type: Linux Block size=1024 (log=0) //塊大小 Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks ....
e2label命令:卷標的查看和設定
查看:# e2label device
設定:# e2label device LABEL
blkid :塊設備屬性信息查看
blkid [OPTION]… [DEVICE]
-U UUID:根據指定的UUID來查找對應的設備
-L LABEL:根據指定的LABEL來查找對應的設備
[root@CentOS6 boot]# e2label /dev/sda7 //查看卷標 mydata [root@CentOS6 boot]# e2label /dev/sda7 mytest //修改卷標為mytest [root@CentOS6 boot]# blkid /dev/sda7 //查看設備信息,已經卷標是否被修改 /dev/sda7: LABEL="mytest" UUID="fda5fba0-cb96-4067-892c-377c42150ceb" TYPE="ext4"tune2fs命令:查看或修改ext系列文件系統的某些屬性
注意:塊大小創建后不可修改
tune2fs [OPTIONS] device
-l:查看指定文件系統超級塊信息;super block
修改超級塊的內容:
-L 'LABEL':修改卷標
-m #:修正預留給管理員的空間百分比
-j:將ext2無損升級為ext3
-O:文件系統屬性啟用或禁用, –O ^has_journal
-o:調整文件系統的默認掛載選項,–o ^acl
-U UUID:修改UUID號
[root@CentOS6 boot]# tune2fs -l /dev/sda7 tune2fs 1.41.12 (17-May-2010) Filesystem volume name: mytest //卷標 Last mounted on: <not available> Filesystem UUID: fda5fba0-cb96-4067-892c-377c42150ceb Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr .... //文件特性,最重要的是has_journal特性(表示支持日志功能),使用-O選項可以關閉此特性,則文件系統類型退后到ext2 Filesystem flags: signed_directory_hash Default mount options: (none) ... Inode count: 655872 //inode個數 Block count: 10490412 //塊個數 Reserved block count: 524520 //預留給管理員的空間塊個數 Free blocks: 10286629 Free inodes: 655861 First block: 1 Block size: 1024 //塊大小,為我們指明的1024 Fragment size: 1024 ...
dumpe2fs命令:顯示ext系列文件系統的屬性信息
dumpe2fs [-h] device:查看[超級塊信息]所有分組塊信息
用于實現文件系統檢測的工具:
因進程意外中止或系統崩潰等原因導致當前操作非正常終止時,可能會造成文件損壞(掛載為文件系統標記為“dirty”);此時,應該檢測并修復文件系統;建議離線進行
ext系列文件系統的專用工具:
e2fsck:- check a Linux ext2/ext3/ext4 file system
e2fsck [OPTIONS] device
-y:對所有問題自動回答為yes(不建議使用,比如有文件傳輸了99%,手動傳1%就可以了)
-f:即使文件處于clean狀態,也要強制進行檢測
[root@CentOS6 boot]# e2fsck -f /dev/sda7 e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information mytest: 11/655872 files (0.0% non-contiguous), 203783/10490412 blocksfsck:- check and repair a Linux file system
fsck [OPTIONS] device
-t fstype:指明文件系統
-a:無須交互自動修復所有錯誤
-r:交互式修復
原創文章,作者:megedugao,如若轉載,請注明出處:http://www.www58058.com/40895