首页
/
每日頭條
/
科技
/
常見的分區工具有哪些
常見的分區工具有哪些
更新时间:2024-07-28 00:11:00
一、磁盤知識

常見的分區工具有哪些(在國産深度操作系統上學習磁盤分區基礎知識)1

(圖片來源博客源尖尖毛草博客)

傳統的機配磁盤由盤片、機械臂、馬達構成。 一塊磁盤會有多個盤片。

  • 磁道:盤片上一圈圈灰色同心圓。
  • 扇區:磁道上一段圓弧,盤片上最小的物理存儲單位,主要有512B和4KB兩種格式。

常見的分區工具有哪些(在國産深度操作系統上學習磁盤分區基礎知識)2

(圖片來源:博客園尖尖毛草博客)

  • 柱面:扇區組成一個圓,上圖中藍色部分。 一個盤片上下兩面都可讀寫,使用兩個磁頭讀寫。

計算存儲容量=存儲容量=磁頭數×磁道(柱面)數×每道扇區數×每扇區字節數磁道扇區柱面三個參數計算存儲容量 = 存儲容量 = 磁頭數 × 磁道(柱面)數 × 每道扇區數 × 每扇區字節數磁道 扇區 柱面 三個參數計算存儲容量=存儲容量=磁頭數×磁道(柱面)數×每道扇區數×每扇區字節數磁道扇區柱面三個參數

老式磁盤中,每個磁道的扇區數是相等的,所以越往圓心存儲密度越高。現代磁盤改為等密度結構,外圍磁道的扇區數量大于内圈磁道,尋址方式也改為以扇區為單位的線性尋址。 為了與老式3D尋址兼容,現代磁盤控制器使用地址翻譯器把3D尋址參數轉為線性參數。

二、在深度系統中打開分區編輯器查看磁盤信息:

常見的分區工具有哪些(在國産深度操作系統上學習磁盤分區基礎知識)3

常見的分區工具有哪些(在國産深度操作系統上學習磁盤分區基礎知識)4

三、分區表

早期的分區以柱面為最小分區單位;現在的分區通常使用扇區為最小分區單位。每個扇區有一個自己的号碼。磁盤分區表主要有MBR和GPT兩種格式,GPT格式可以支持2T以上容量。

  • 主分區:一塊硬盤取多4個主分區。主分區激活就可以用來啟動。
  • 擴展分區:早期設計的硬盤隻能分4個分區。後來建了sda4做為擴展分區,稱為邏輯分區。
  • 邏輯分區可以有很多個。
  • Linux限制,一塊硬盤主分區 擴展分區 最多隻有4個。計算機的分區多于4個餘下空間不能使用。
1. 下面重點看看MBR分區表

早期的Linux為了兼容Windows的磁盤,使用了支持Windows的MBR。MBR全稱是Master Boot Record,通常放在磁盤的第一個扇區。這個扇區通常為512字節大小,當中包括兩種東西:

  • 主引導記錄:446字節
  • 分區表:64字節,最多隻能有4組記錄區,每組記錄區記錄該區起止柱面号碼。
在深度系統使用下面命令讀取MBR記錄:

sudo dd if=/dev/sda of=~/bootsector bs=512 count=1

使用vim -b ~/bootsector打開查看 (在vim命令模式下輸入:%!xxd 顯示16進制模式)

常見的分區工具有哪些(在國産深度操作系統上學習磁盤分區基礎知識)5

末尾的55aa是标志位,圖中選中的 8020開始即第一個分區信息,

  • 第1字節80 表示是活動分區(00表示非活動分區)
  • 第5字節83表示分區類型是Linux分區(8e為Linux LVM分區)

如果要改動文件,可以使用

sudo dd if=~/bootsector of=/dev/sda bs=512 count=1

寫回磁盤。

使用C從扇區讀取文件

#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <libgen.h> #include <unistd.h> static void usage(char *prog_name) { fprintf(stderr, "usage: %s device start count\n", prog_name); fprintf(stderr, "example: %s /dev/sda 0 512\n", prog_name); } int main(int argc, char *argv[]) { char buf[4096]; int fd = 0; int i = 0; int j = 0; int start = 0; int count = 0; char *device = NULL; if(argc != 4){ usage(basename(argv[0])); exit(1); } device = argv[1]; start = atol(argv[2]); count = atol(argv[3]); // 把磁盤像文件一樣打開 fd = open(device, O_RDONLY); if(-1 == fd){ fprintf(stderr, "cannot open device"); exit(1); } // 找到起始位置 if(lseek(fd, start, SEEK_SET) != start){ fprintf(stderr, "cannot seek at %d", start); exit(1); } // 挨個字節讀出來 while(count > 0){ int size = count > sizeof(buf) ? sizeof(buf) : count; read(fd, buf, size); /* 每行顯示16個字節 每兩個字節間以空格分開 */ for(i = 0; i < size/16; i ){ fprintf(stdout,"x:", i*16 start); for(j = 0; j < 16; j ){ fprintf(stdout, " x", (int)buf[i*16 j] & 0xFF); } fprintf(stdout,"\n"); fflush(stdout); } count -= size; start = size; } }

gcc編譯運行:

常見的分區工具有哪些(在國産深度操作系統上學習磁盤分區基礎知識)6

擴展分區

分區記錄裡分一個擴展分區出來,然後在擴展分區前幾個扇區用來再記錄邏輯分區。Linux的SATA硬盤邏輯分區可以突破63個。

2. GPT分區(GUID Partition Table)

由于 MBR分區 每個分區表隻有16字節,一個分區被限制最大隻能使用2.2TB的磁盤。GPT将扇區以邏輯區塊(Logincal Block Address,LBA)來處理,一個LBA默認512字節,第一個LBA就是LBA0.

  • GPT使用了34個LBA來記錄分區信息
  • GPT把磁盤的最後34個LBA拿來作備份。
  • LBA0:用來兼容MBR,存儲了啟動引導程序。
  • LBA1:GPT表頭記錄
  • LBA2-33:實際記錄分區信息,每個LBA放4組分區記錄,每組記錄用到128字節空間。GPT分區表對單一分區容量限制達8ZB(1ZB=230TB)GPT 沒有了主分區、邏輯分區的區分 。
四、Linux的磁盤文件名
  • 老的ide接口,使用 /dev/hd開頭,現在已經很少使用;
  • 現在物理磁盤一般模拟成 /dev/sd[a-p]格式,第一塊磁盤為/dev/sda;分區的文件名以第一塊磁盤為例,為/dev/sda[1-128]。
  • 虛拟機的磁盤通常是 /dev/vd[a-p] (比如用阿裡的ECS)
  • 磁盤陣列通常是 /dev/md[0-128]
  • LVM是 /dev/VGNAME/LVNAME
五、Linux 常用的文件格式

Linux較早的文件系統使用的是ext2。centos6: 以ext4為主 。centos7: 以xfs為主,大文件系統,日志型 ,文件可以修複。執行命令: cat /etc/fstab

六、索引節點inode

每個存儲設備或存儲設備的分區被格式化為文件系統後有兩部分:block inode文件存儲在硬盤上,最小存儲單位是扇區,每個扇區可能是512Byte。但操作系統讀取硬盤時,不會一個一個扇區讀,而是一次性連續讀多個扇區,多個扇區稱為一個“塊”。多個扇區組成的塊,是文件存取的最小單位。“塊”的大小,常見的有4B,即連續8個扇區。塊用來存儲數據,而inode用來存儲這些數據元信息,主要包括:

  • 文件大小
  • 文件所屬用戶User ID
  • 文件的Group ID
  • 文件的讀/寫權限
  • 文件的時間戳
  • 鍊接數
  • 文件數據Block的位置inode為每個文件進行信息索引,所以就有了inode的數值。操作系統根據指令,可以通過inode值快速找到相對應的文件。

使用stat命令可以查看文件的inode信息:

$ stat linux2-4.mov 16777220 3753644 -rw-r--r-- 1 apple staff 0 674287083 "Jul 9 23:49:23 2020" "Jul 9 23:07:22 2020" "Jul 9 23:07:23 2020" "Jul 9 23:07:08 2020" 4096 1344096 0 linux2-4.mov

硬盤在格式化的時候,操作系統會将硬盤分成兩個區域:數據區、inode區。每個inode節點的大小一般為128B或256B;inode節點的數量在格式化時給定,一般是每1K或每2K設置一個inode。

如果一塊1G的硬盤,每個inode節點大小為128B,每1K就設置一個inode,那inode占的空間會達到128M,占硬盤的12.8%。

df -i 命令可以查看每個硬盤分區的inode總數和已經使用的數量。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
如何掃碼連接wifi
如何掃碼連接wifi
1、點擊設置”圖标進入設置中心。2、點擊WLAN”進入無線設置界面。3、點擊已連接無線名稱後的鎖頭”圖标。4、用其他手機掃描彈出來的二維碼界面即可連接無線。
2024-07-28
手機有卡卻顯示無卡怎麼回事
手機有卡卻顯示無卡怎麼回事
演示機型:Iphone12系統版本:iOS141、sim卡和插槽接觸不良,廠商設計或者是生産時不完善造成的,表現是sim卡在插槽裡和觸點接觸得不夠緊密,就會出現無法識别sim卡的故障。2、手機的插槽在電氣性能上出現了問題,這種情況有可能受到潮濕天氣所引發,也有可能是在使用中不小心摔碰所緻。3、手機軟件出現了bug。4、此方法适用于小米、蘋果、華為手機。解決的辦法:1、确認是否是SIM問題。在經過手
2024-07-28
如何提高Win10的開機時間
如何提高Win10的開機時間
1、按快捷鍵win+R”打開運行窗口并輸入msconfig”後點擊确定”或者按ENTER”鍵。2、這時候會打開一個名為系統配置”的窗口,在常規”選項框下我們勾選有選擇的啟動”下的加載系統服務”和加載啟動項”。3、然後我們依次點擊引導——高級選項”,在引導高級選項”窗口勾選處理器個數”,處理器個數”下...
2024-07-28
呼叫轉移怎麼設置
呼叫轉移怎麼設置
1、首先進入撥号”界面,點擊右上角的按鍵。2、點擊設置”,接着點擊更多”,選擇來電轉接”。3、彈出窗口後,選擇開啟”,選擇一張sim”卡,接着選擇一種轉接方式即可。
2024-07-28
ih電飯煲是什麼意思
ih電飯煲是什麼意思
1、ih的全名是inductionheat,電磁加熱的意思,顧名思義,這種電飯煲就是用電磁加熱的,不...
2024-07-28
Copyright 2023-2024 - www.tftnews.com All Rights Reserved