磁盤結構:主要是由盤體、控制電路、接口部件等組成。盤體里面封裝了多個盤片的腔體;控制電路包含硬盤BIOS、主控芯片和硬件緩存等單元;接口部件包含電源、數據接口主從跳線等。讀取硬盤數據時,主軸電機帶動盤片旋轉,副軸電機帶動磁頭臂將磁頭放到相應的數據存放的柱面和磁道上,再由磁頭讀出相應扇區中的數據。(圖1-1)
磁道(track):每個盤面被劃分成了多個同心圓環,數據就是存儲在這些同心圓環上。這些同心圓環被稱為磁道。(圖1-2)
扇區(sector):每個磁道上劃分成若干個圓弧,這每一個圓弧稱為扇區,扇區是硬盤上存儲的物理單元通常一個扇區為(512byte)。硬盤的扇區與扇區之間隔了交叉因子,因為硬盤的轉速很快,讀完這個扇區來不及讀下一個扇區,這時就必須等待轉一圈才能讀下一個扇區,造成時間浪費,所有就用交叉因子來解決這個問題。(圖1-3)
柱面(cylinder):不同盤面上相同編號的磁道組成的一個同心的圓柱面,稱為柱面。硬盤的數據讀寫和分區是按柱面進行的,磁頭讀寫數據時首先在同一個柱面的0磁頭開始依次向下直到所有的磁頭全部讀寫完畢后,磁頭在轉向下一個柱面。
圖1-1 圖1-2 圖1-3
硬盤分區:
MBR:主引導記錄(Master Boot Record),計算機開機后根據主板設備的加載項去讀取硬盤的第一個扇區(0柱面,0磁頭,1扇區),該扇區大小為512byte,其中446byte負責找到系統的活動分區,并從活動分區中裝載并運行系統引導程序(bootloader)。后面64byte為分區表,每16byte標識一個活動分區,最多支持4個活動分區。2byte的結束標識符。
文件系統:
文件系統是一套幫助操作系統管理和存儲文件信息的軟件。它對存儲設備的空間進行管理和分配,負責文件的存儲和檢索。
fdisk對硬盤進行分區操作
fdisk -l [-u] [DEVICE] ##查看系統的硬盤信息 fdisk [DEVICE] ##管理設備##常用的子命令的管理功能 p print the partition table ##顯示已有分區 n add a new partition ##創建新分區 d delete a partition ##刪除一個分區 w write table to disk and exit ##保存分區表并退出 q quit without saving changes ##退出不保存修改的內容 m print this menu ##顯示幫助菜單 l list known partition types ##列表分區的ID和類型 change a partition's system id ##調整分區的ID
查看/proc/parttions內核是否識別新分區
[root@mage ~]# cat /proc/partitions major minor #blocks name 8 0 8388608 sda 8 1 512000 sda1 8 2 7875584 sda2 8 16 4194304 sdb 8 17 2104483 sdb1 8 18 2088450 sdb2
如果當前硬盤正在使用,新劃的分區未能識別則用partx命令重讀硬盤分區表
[root@mage ~]# partx -a /dev/sdb ##通知內核重新讀取硬盤分區表 BLKPG: Device or resource busy error adding partition 1 BLKPG: Device or resource busy error adding partition 2
Linux支持多種文件系統:ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap….
由于支持這么多的文件系統,為了方便進程或應用程序的調用,弱化各個文件系統之間的差異,所以就需要在內核與文件系統在有一層中間件。于是就有了虛擬文件系統VFS(Virtual File System),虛擬文件系統將不同文件系統的差異進行隱藏,并向進程或應用程序提供同一的調度接口。應用程序或進程要訪問文件時,只需要使用VFS提供的接口,VFS確定要訪問的文件所屬的文件系統,通過存儲在VFS中的指針調用該文件系統進行相應的操作。
ext2(second EXTended Filesysem)是一個被linux廣泛使用的文件系統。文件的文件名不能超過255個字符。ext2文件系統第一塊為引導扇區(boot sector)用于系統啟動引導使用,即使該分區非系統分區也會保留。引導扇區的塊被分成若干個塊組。
超級塊:該文件系統的信息,包括inode和block的總數、空閑、塊的大小、文件、塊組的大小、文件系統創建時間、默認掛載的參數等。
超級塊會備份到若干個塊組內。
組描述符:存放block和inode的開始與結束的位置,空閑塊數和inode的空閑數,塊組中的目錄數等信息,
inode位圖:對位標識每個inode空閑與否的狀態信息
塊位圖:對位標識每個block空閑與否的狀態信息
inode表:大小為128字節,每個inode恰好描述了一個文件。文件類型,鏈接數據,文件的改變、修改、訪問時間,文件的屬主、屬組、大小,以及12block硬盤物理地址和后面3個間接指針(直接指針、間接指針、三級指針)。
數據塊:存放文件內容數據的位置,每個數據塊的大小在文件系統創建時都已經確認了,一個文件至少占用一個數據塊,可以占用多個數據塊。
ext3是ext2文件系統的升級版,并加入了日志文件系統。系統在寫入數據時會現將數據寫入日志區。再通過日志信息將數據寫入數據區中,這樣的好處,一旦系統非正常關機成數據的損壞??梢酝ㄟ^日志信息快速檢測錯誤區并加以修復。而不需要像ext2遍歷全盤,節約了事件,也提高了數據的可靠性。
創建文件系統
mkfs命令
mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.FS_TYPE /dev/DEVICE mkfs -t FS_TYPE /dev/DEVICE mke2fs ##ext文件系統專用管理工具 mke2fs [OPTION] /dev/DEVICE -t {ext2|ext3|ext4} ##指定要創建的類型 -b {1024|2048|4096} ##指定塊大小 -L 'LABEL' ##指定卷標 -i # ##數據空間每多少個字節創建一個inode;此大小不應該小于block的大?。?nbsp; -N # ##為數據空間創建個多少個inode -m ##為管理人員預留的空間占據的百分比;默認為5% -O FEATURE[,....] ##啟用指定特性 -O ^FEATURE ##關閉指定特性 [root@mage ~]# mke2fs -t ext4 -b 4096 -L 'TEST' -m 3 /dev/sdb1 mke2fs 1.41.12 (17-May-2010)Filesystem label=TEST ##卷標 OS type: Linux Block size=4096 (log=2) ##塊的大小 Fragment size=4096 (log=2) Stride=0 blocks,Stripe width=0 blocks 197600 inodes, 789185 blocks ##該文件系統總共的塊和inode的數量 23675 blocks (3.00%) reserved for the super user First data block=0 Maximum filesystem blocks=809500672 25 block groups ##塊組數量 32768 blocks per group, 32768 fragments per group ##32768塊組成一個塊組 7904 inodes per group Superblock backups stored on blocks: ##超級塊的備份 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Creating journal (16384 blocks): done ##創建的日志文件塊 Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 26 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
塊屬性的信息查看
blkid [OPTION].........[DEVICE] -U UUID ##根據指定的UUID來查找對應的設備 -L LABEL ##根據指定的LABEL來查找對應的設備 [root@mage ~]# blkid /dev/sdb1 /dev/sdb1: LABEL="TEST" UUID="65770a04-cacc-4a27-8c66-c8bdae1ff40d" TYPE="ext4"
修改ext文件系統的卷標
e2label DEVICE [LABEL] [root@mage ~]# e2label /dev/sdb1 MYDATA [root@mage ~]# blkid /dev/sdb1/dev/sdb1: LABEL="MYDATA" UUID="65770a04-cacc-4a27-8c66-c8bdae1ff40d" TYPE="ext4"
調整ext文件系統的參數
tune2fs [OPTION] /dev/DEVICE -l ##查看指定文件系統超級塊信息;super block -L 'LABEL' ##修改卷標 -m # ##修預留給管理員的空間百分比 -j ##將ext2升級為ext3 -O ##文件系統屬性啟用或禁用 -o ##調整文件系統的默認掛載選項 -U:UUID ##修改UUID號 [root@mage~]# tune2fs -l /dev/sdb1 ##查看超級塊 tune2fs 1.41.12 (17-May-2010) Filesystem volume name: TEST Last mounted on: <not available> Filesystem UUID: d2eda9dd-3c63-40d1-8dce-9f2c18b36602 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 Errors behavior: Continue Filesystem OS type: Linux Inode count: 197600 Block count: 789185 Reserved block count: 23675 Free blocks: 759231 Free inodes: 197589 First block: 0 Block size: 4096 Fragment size: 4096 Reserved GDT blocks: 192 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 7904 Inode blocks per group: 494 Flex block group size: 16 Filesystem created: Sun Dec 13 10:31:18 2015 Last mount time: n/a Last write time: Sun Dec 13 10:31:18 2015 Mount count: 0 Maximum mount count: 26 Last checked: Sun Dec 13 10:31:18 2015 Check interval: 15552000 (6 months) Next check after: Fri Jun 10 10:31:18 2016 Lifetime writes: 113 MB Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 28 Desired extra isize: 28 Journal inode: 8 Default directory hash: half_md4 Directory Hash Seed: 4dc8c1cb-a593-4f0f-8da7-2d787b789e4e Journal backup: inode blocks
dumpe2fs [OPTION] /dev/DEV -h ##查看超級塊信息 -x ##查看塊組以信息十六進制顯示 Group 0: (Blocks 0-32767) [ITABLE_ZEROED] ##塊組的block的范圍 Checksum 0xc867, unused inodes 7893 ##校驗碼和未使用的inode的數量 Primary superblock at 0, Group descriptors at 1-1 Reserved GDT blocks at 2-193 Block bitmap at 194 (+194), Inode bitmap at 210 (+210) ##塊位圖,inode位圖 Inode table at 226-719 (+226) ##inode表 24632 free blocks, 7893 free inodes, 2 directories, 7893 unused inodes ##未使用的塊,未使用的inode節點,2個目錄 Free blocks: 8136-32767 ##未使用塊的范圍 Free inodes: 12-7904 ##未使用inode的范圍
原創文章,作者:Y.sir,如若轉載,請注明出處:http://www.www58058.com/9922