亚洲欧洲自拍拍偷综合|波多野结衣一区二区三区高清|女人被黑人狂躁c到高潮小说|国产精品一区二区久久乐下载|国产日产欧产精品精乱子

立即咨詢
2024.09.27 |
硬盤分區顯示不一致:奇怪Bug引發的思考與試錯
今天我們要聊的是我遇到的一個奇怪的bug。

那天下午,陽光透過辦公室的窗戶灑在桌面上,我剛剛處理完一個棘手的bug,正享受著一杯茶的寧靜時光。然而,這份寧靜很快被一陣急促的電話鈴聲打破。

“我們在做虛擬機磁盤擴容,遇到一個奇怪的問題,你能幫忙看看嗎?”電話那頭的聲音透著焦急。

我調整了一下狀態,心中略顯興奮。回復道:“別擔心,我馬上來?!?/p>


一、故障描述


在使用不同的磁盤分區工具(如`fdisk`和`parted`)時,發現它們顯示的分區類型不一致。這種情況看似微小,但實際上可能引發一系列嚴重問題,影響數據安全和系統穩定性。


# fdisk  -l /dev/sda
Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x00000000
  Device Boot      Start         End      Blocks   Id  System/dev/sda1               1   104857599    52428799+  ee  GPT# parted  -s /dev/sda unit s printModel: VMware Virtual disk (scsi)Disk /dev/sda: 125829120sSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:
Number  Start     End         Size        File system  Name                  Flags 1      2048s     411647s     409600s     fat16        EFI System Partition  boot 2      411648s   2508799s    2097152s    xfs 3      2508800s  104855551s  102346752s



二、初步排查


為了進一步了解問題,首先檢查了`fdisk`的版本。版本信息顯示,`fdisk`來自`util-linux 2.23.2`。


1.查看fdisk軟件版本

# which fdisk
/usr/sbin/fdisk
# rpm -qf /usr/sbin/fdisk
util-linux-2.23.2-59.el7.x86_64


2.查看版本


# fdisk -v
fdisk from util-linux 2.23.2


3.查看分區表


# fdisk -lu /dev/sda
Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00000000
 Device Boot Start End Blocks Id System
 /dev/sda1 1 104857599 52428799+ ee GPT
 # fdisk -lu /dev/sda
 Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk label type: dosDisk identifier: 0x00000000 
 Device Boot Start End Blocks Id System
 /dev/sda1 1 104857599 52428799+ ee GPT
 # parted -s /dev/sda unit s print
 Model: VMware Virtual disk (scsi)
 Disk /dev/sda: 125829120s
 Sector size (logical/physical): 512B/512B
 Partition Table: gpt
 Disk Flags:
 Number Start End Size File system Name Flags
  1 2048s 411647s 409600s fat16 EFI System Partition boot 
  2 411648s 2508799s 2097152s xfs 
  3 2508800s 104855551s 102346752s lvm


三、試錯與分析


在初步排查中,發現`fdisk`的版本較舊(`util-linux 2.23.2`)。通常情況下,較新的工具版本會修復舊版本中的一些已知問題。因此,首先想到的是通過升級`util-linux`來解決問題,期望新版本能夠正確處理分區顯示問題。


# rpm -Uvh util-linux-2.23.2-65.el7_9.1.x86_64.rpm --force --nodeps
warning: util-linux-2.23.2-65.el7_9.1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ################################# [100%]
Updating / installing...
 1:util-linux-2.23.2-65.el7_9.1 ################################# [ 50%]
 Cleaning up / removing...
  2:util-linux-2.23.2-59.el7 ################################# [100%]


但是很遺憾,升級后`fdisk`的顯示仍然異常。


# fdisk -l
Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dosDisk identifier: 0x00000000 
Device Boot Start End Blocks Id System
/dev/sda1 1 104857599 52428799+ ee GPT


此時,我開始懷疑分區表本身可能存在問題。


為了進一步驗證這一假設,決定備份MBR扇區,并清空MBR,期望通過重新構建分區表來解決問題。



1.查看扇區


圖片


2.備份mbr


dd if=/dev/sda of=sda_mbr.data bs=512 count=1


3.清空mbr


dd if=/dev/zero of=/dev/sda bs=512 count=1

# dd if=/dev/zero of=/dev/sda bs=512 count=1

1+0 records in

1+0 records out

512 bytes (512 B) copied, 0.000450755 s, 1.1 MB/s


圖片


然而,不幸的是,再次分區表丟失。


# fdisk -l /dev/sda
Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
# parted /dev/sda print
Error: /dev/sda: unrecognised disk label
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 64.4GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:


這個也讓我意識到,問題的根源可能比想象中的要復雜。


文章到這里,大家不妨停一下,思考一下。如果是你,接下來你打算分幾步來分析,又需要哪些信息來幫助你找到問題的原因,并且如何解決呢… ...
(思考時間)



四、故障分析


如果你已經有了答案,不妨一起來看看我的分析。


在試錯過程中,發現`fdisk`和`parted`顯示的分區信息不一致。`fdisk`顯示的分區類型與預期不符,而`parted`則顯示正常。這引起了的注意,開始懷疑是否是分區表本身的問題。
進一步分析發現,磁盤在之前被擴展到60GB。GPT分區表包括主分區表和備份分區表,正常情況下,主分區表位于硬盤的LBA1~LBA33,而備份分區表位于硬盤的最后位置。如果磁盤大小被調整后,備份分區表沒有正確更新,就會導致`fdisk`顯示異常。



圖片

圖片


五、故障模擬


為了驗證這一假設,我模擬了在GPT環境下擴展分區的情況,果然復現了相同的故障。


模擬故障在gpt環境下拉大sda分區,可以復現故障。
##擴容sda之前##


圖片


##擴容sda之后##


圖片


六、故障原因


至此,故障原因也就很清晰了。在創建GUID分區表(GPT)時,系統會同時創建一個MBR(msdos)分區表,其中包含一個覆蓋整個磁盤或高達2TB的0xEE(GPT)分區,稱為MBR保護分區。這個分區用于提醒舊命令和實用程序磁盤確實已分區。


GPT分區表包括主分區表和備份分區表。正常情況下,主分區表位于硬盤的LBA1~LBA33,而備份分區表位于硬盤的最后位置。如果磁盤大小被調整后,備份分區表沒有正確更新,就會導致`fdisk`顯示異常。



圖片

正常gpt分區 通過hexdump查看,200是主分區開始,033ffe00 是secondary (backup) 分區。



</pre&gt


相關推薦
助力IT企業信創服務,和企業一起走向成功
立即領取企業福利 預約您的專屬顧問
400-1037-370
主站蜘蛛池模板: 午夜少妇一区二区| 成人欧美一区二区三区小说| 午夜一区二区不卡| 亚洲国产精华液网站w| 久久99精品国产麻豆不卡| 欧美精品高清在线观看| 欧美一区二区三区系列| 欧美牲交a欧美牲交aⅴ久久| 国产山东熟女48嗷嗷叫| 日韩高清无码免费播放一区二区三区| 一区二区在线精品免费观看| 国产三级一区二区三区| 尤物国产在线精品福利三区| 无码专区 丝袜美腿 制服师生| 日躁夜躁狠狠躁2001| av东京热无码专区| 美女喷水视频一区二区| 日韩精品无码视频一区二区蜜桃| 国产情侣作爱视频免费观看| 区一区二区三成人| 久久丫精品国产| 亚洲国产精品综合久久网各 | 中文字幕不卡av无码专线一本 | 久久国产精品免费一区| 一个色综合国产色综合| 久久久中文字幕一区二区| 亚洲中文字幕久久精品无码va| 熟女无套高潮内谢吼叫免费| 无套内射极品少妇chinese| 久久久精品妓女影院妓女网| 久久综合av免费观看| 人妻人人做人做人人爱| 最新国产乱人伦偷精品免费网站| 国产成人av一区二区三区| 亚洲精品成人福利网站app| 精品久久国产综合婷婷五月| 久艾草久久综合精品无码| 国产精品麻豆一区二区三区| 天干天干天啪啪夜爽爽99| 九色porny丨自拍视频| 4hu四虎永久免费地址ww416|