文件系統磁盤管理之fdisk

fdisk文件系統磁盤管理node

一、文件系統介紹(因爲操做的環境是在centos6的linux系統下,所以主要是圍繞在linux系統上解釋說明)linux

隨着網絡的發展,磁盤存儲的發展也獲得快速的發展。磁盤的存儲容量由原來的幾M到如今上T的存儲磁盤。磁盤存儲的變換很大。磁盤的接口類型主要能夠分紅兩類:1、並行的接口;2、串口的類型。其中並行的主要類型分爲IDE:133MB/S;SCSI:640MB/s。二串口類型有SATA:6Gbps,SAS:6Gbps,USB:480MB/s等一些類型。可是近些年磁盤的發展的速度遇到瓶頸。磁盤的存儲速度遇到一個瓶頸。windows

拿一個普通機械硬盤來講,機械式硬盤:track:磁盤,cylinder:柱面,secotr:扇區。按住面分區:0磁道0扇區存放在系統的MBR表的512bytes。其中446bytes是系統的引導加載程序(boot loader)。另外剩餘中的64bytes分別表示的是分區表信息,其中16bytes標識一個分區。最後剩餘的兩個2bytes表示的是分區結束的標誌4個主分區:3主分區+1擴展(n個邏輯分區)centos

wKiom1XjByqyBw6PAADwlxbqZyU324.jpg 

就目前而言,文件系統是操做系統用於明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法,文件系統的類型有不少。好比:linux系統就支持不少種文件系統類型:ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap,甚至連Windows系統下的一些文件系統也可以支持,只是支持的性能不是很好。而咱們日程使用的windows系統它支持的文件系統類型就比較少。主流支持的是fat32和NTFS文件系統類型。另外Unix系統它支持的是:ffs,ufs,jfs2。此外還有不少文件系統類型如:網絡文件系統:nfs,CIFS;集羣文件:gfs2,ocfs2分佈式文件系統:moodefs,mogilefs,glusterfs,lustre等。隨着網絡的快速發展,有些文件系統存儲格式,已經被淘汰或者已經瀕臨淘汰的邊緣。網絡

在CentOS7的版本以前,默認的文件系統的類型爲ext4類型。本次操做的環境實在CentOS6.6的環境下,文件系統類型採用的ext4.對於文件系統的類型就不過多說明,想具體的瞭解的能夠去搜索相關的資料。我們仍是迴歸本次的主題,經過fdisk命令對文件系統的管理。數據結構

二、Fdisk命令介紹app

首先,看到fdisk命令,你們都會有所瞭解。就fdisk(Partition table manipulator for Linux)這個命令我我的的見解是磁盤列表管理工具。若是有誤,你們見諒。 就我我的認爲,fdisk命令很強大,它可以管理文件下的全部磁盤。相對而言,既然命令強大,那麼對其操做也須要必定的謹慎性。分佈式

fdsik 能劃分磁盤成爲若干個區,同時也能爲每一個分區指定分區的文件系統,好比linux 、fat3二、 linux 、linux swap 、fat16 以及其它類Unix類操做系統的文件系統等;固然咱們用fdisk 對磁盤操做分區時,並非一個終點,咱們還要對分區進行格式化所須要的文件系統;這樣一個分區才能使用;這和DOS中的fdisk 是相似的。閒話很少扯,仍是進入主題比較好。ide

三、初步對fdisk命令瞭解工具

在文件系統中,可以直接接觸但磁盤的命令就是fdisk -l。這條命令可以查看當前系統上全部磁盤的使用狀況。其中l的是list的意思。

[root@www ~]# fdisk -l

Disk /dev/sda: 128.8 GB, 128849018880 bytes 255 heads, 63 sectors/track, 15665 cylinders nits = 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: 0x000309a9

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          26      204800   83  Linux

/dev/sda2              26        7859    62914560   8e  Linux LVM

/dev/sda3            7859        8512     5252256   83  Linux

/dev/sda4            8513       15665    57456472+   5  Extended

/dev/sda5            8513       11124    20980858+  83  Linux

/dev/sda6           11125       11778     5253223+  83  Linux

/dev/sda7           11779       11910     1060258+  83  Linux

 

經過使用這條命令可以很好只管查看當前系統磁盤的使用狀況。固然你在不肯定磁盤的使用狀況下,經過這條命令可以幫你解決疑問。同時,這條命令後面還能夠跟磁盤路徑參數。這樣是對單個硬盤的使用狀況查詢,不跟是對整個系統的磁盤使用狀況進行查詢。

[root@www ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 53.7 GB, 53687091200 bytes 255 heads, 63 sectors/track, 6527 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: 0x37a3a8dc

   設備名稱 柱面開始柱面結束磁盤塊系統類型id

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         132     1060258+  83  Linux

/dev/sdb4             133        6527    51367837+   5  Extended

/dev/sdb5             133        1438    10490413+  8e  Linux LVM

/dev/sdb6            1439        2744    10490413+  fd  Linux raid autodetect

/dev/sdb7            2745        4050    10490413+  fd  Linux raid autodetect

/dev/sdb8            4051        5356    10490413+  fd  Linux raid autodetect

/dev/sdb9            5357        6010     5253223+  8e  Linux LVM

/dev/sdb10           6011        6403     3156741   8e  Linux LVM

在這須要對磁盤的劃分進行簡單的說明下。單塊硬盤,分區最多隻能有四個主分區。不能超過四個主分區,因此若是想劃分多個分區,只能採起3主分區+ 一個邏輯分區的方式。而且一塊磁盤最多不能超過15個分區。在linux系統中,系統前1-4分區只能有主分區佔據,邏輯分區只能從5開始。對上面這塊磁盤的一些重要的地方作一些簡單的說明:

 53.7 GB,磁盤的大小

有255個磁面(指的是邏輯磁頭而非物理磁頭);

63個扇區;

6527 個磁柱;

cylinder(磁柱)的容量是 8225280 bytes=8225.280 K(約爲)=8.225280M(約爲)。


四、進一步的瞭解fdisk命令

使用fdisk /dev/sdb,經過fdisk命令後面跟上直接跟上磁盤的路徑,就能操做磁盤。

[root@www ~]# fdisk  /dev/sdb

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): 

出現上面這個界面,說明已經登陸了磁盤操做界面。其中若是進入磁盤以後,你不懂得如何進行操做,系統會有幫助提示(m for help。當你在磁盤上鍵入m命令就會彈出幫助信息。

Command action

   a   toggle a bootable flag

   b   edit bsd disklabel

   c   toggle the dos compatibility flag

   d   delete a partition  刪除分區

   g   create a new empty GPT partition table

   G   create an IRIX (SGI) partition table

   l   list known partition types 建立邏輯分區

   m   print this menu  顯示菜單信息

   n   add a new partition 增長一個新分區

   o   create a new empty DOS partition table

   p   print the partition table 顯示當前磁盤的全部分區信息

   q   quit without saving changes 不保存信息退出磁盤操做

   s   create a new empty Sun disklabel

   t   change a partition's system id 改變分區類型

   u   change display/entry units

   v   verify the partition table

   w   write table to disk and exit 保存操做信息退出

   x   extra functionality (experts only)

會把全部的提示信息都彈出。本人偷些就來,命令後面對一些經常使用的命令進行簡單的說明。但願對你們學習有些幫助。接下我作些對經常使用命令的簡單演示

一、列出當前操做硬盤的分區狀況,用p
Command (m for help): p

Disk /dev/sdb: 53.7 GB, 53687091200 bytes

255 heads, 63 sectors/track, 6527 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: 0x37a3a8dc

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb4             133        6527    51367837+   5  Extended

/dev/sdb5             133        1438    10490413+  8e  Linux LVM

/dev/sdb6            1439        2744    10490413+  fd  Linux raid autodetect

/dev/sdb7            2745        4050    10490413+  fd  Linux raid autodetect

/dev/sdb8            4051        5356    10490413+  fd  Linux raid autodetect

/dev/sdb9            5357        6010     5253223+  8e  Linux LVM

/dev/sdb10           6011        6403     3156741   8e  Linux LVM


二、經過fdisk的d指令來刪除一個分區

Command (m for help): p 注:列出分區狀況;
Disk /dev/sda: 1035 MB, 1035730944 bytes
256 heads, 63 sectors/track, 125 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 25 201568+ c W95 FAT32 (LBA)
/dev/sda2 26 125 806400 5 Extended
/dev/sda5 26 50 201568+ 83 Linux
/dev/sda6 51 76 200781 83 Linux
Command (m for help): d 注:執行刪除分區指定;
Partition number (1-6): 6 注:我想刪除 sda6 ,就在這裏輸入 6 ;
Command (m for help): p 注:再查看一下硬盤分區狀況,看是否刪除了?

Disk /dev/sda: 1035 MB, 1035730944 bytes
256 heads, 63 sectors/track, 125 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 25 201568+ c W95 FAT32 (LBA)
/dev/sda2 26 125 806400 5 Extended
/dev/sda5 26 50 201568+ 83 Linux
Command (m for help):
在刪除分區的時候,千萬不能隨去刪除,須要確認刪除的分區。

 

三、經過fdisk的n指令增長一個分區
Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p  

Partition number (1-4): 1(主分區一共有四個,默認從1開始。這裏咱們就選擇1

First cylinder (1-6527, default 1): (因爲磁盤還沒進行分區,因此磁盤從1扇區開始)

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-6527, default 6527): +10G

對上面的一些操做進行解釋:

鍵入N命令的時候,會彈出兩個選擇。系統會告訴你,目前能夠建立的分區類型。主分區或則邏輯分區(對上面紅色部分的說明)。在這裏,我就選擇主分區了。接着鍵入p命令。
Last cylinder or +size or +sizeM or +sizeK (51-125, default 125): +200M 

注:這個是定義分區大小的,+10G 就是大小爲10G;固然您也能夠根據p提示的單位cylinder的大小來算,而後來指定 End的數值。
四、經過fdisk的t指令指定分區類型

Command (m for help): t 注:經過t來指定分區類型;
Partition number (1-5): 5 注:要改變哪一個分區類型呢?我指定了6,其實也就是sdb5
Hex code (type L to list codes):L 注:在這裏輸入L,就能夠查看分區類型的id了;
默認新創的分區的類型是83.

Command (m for help): p
Command (m for help): p

Disk /dev/sdb: 53.7 GB, 53687091200 bytes

255 heads, 63 sectors/track, 6527 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: 0x37a3a8dc

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1        1306    10490413+  83  Linux

/dev/sdb2            1307        6527    41937682+   5  Extended

/dev/sdb5            1307        2612    10490413+  8e  Linux LVM
五、fdisk 的退出,用q或者 w
其中 q是 不保存退出,w是保存退出
Command (m for help): w

Command (m for help): q

到這裏磁盤一些經常使用
五、磁盤操做的後續工做

在磁盤上的操做結束以後,並不意味這系統可以設備處已經改變的操做。這點linux系統和Windows系統有很大的區別。Windows系統對磁盤作出操做比較簡單,可以及時操做,及時設備。而linux系統須要去從新讀取文件才能識別。識別的方法有兩種,重啓系統和從新讀取配置文件。重啓系統的方法在這就不演示,演示從新讀取配置文件的方法。

一、退出磁盤操做以後,對系統的磁盤列表的文件查看。確認系統是否識別到分區。而查看文件內容信息的命令不少,不過多解釋。

[root@www ~]# cat /proc/partitions 

major minor  #blocks  name

   8        0  125829120 sda

   8        1     204800 sda1

   8        2   62914560 sda2

   8        3    5252256 sda3

   8        4          1 sda4

   8        5   20980858 sda5

   8        6    5253223 sda6

   8        7    1060258 sda7

經過以上的命令,能夠確認,系統仍是否已經識別到新增磁盤信息。

二、系統重讀硬盤分區信息的方法有幾種,這裏只對幾個命令作出一些簡單說明解釋。如partx,kpartx以及系統自動的partprob命令。其中partx命令,我我的的解釋是告訴內核關於磁盤列表的信息和編號。而kpartx命令的意思是對於磁盤列表建立一個設備路徑。至於最後提到的partprob命令,在centos6以前使用較多;而如今使用的比較少。可是這條命是系統自帶的。而這些命令所能夠跟的選項,這裏就不過多的說明。接下里執行下面的命令partx -a /dev/sda,執行這條命須要注意些地方,有時候執行第一次的時候,系統並不必定會識別出對磁盤的改動。因此多執行一次,系統就可以識別到。

[root@www ~]# partx -a /dev/sda

BLKPG: Device or resource busy

error adding partition 1

BLKPG: Device or resource busy

error adding partition 2

BLKPG: Device or resource busy

對於在執行過程當中出現的錯誤別要擔憂,並非說明系統沒有識別到新分區信息。

[root@www ~]# cat /proc/partitions 

  major minor  #blocks  name

   8        0  125829120 sda

   8        1     204800 sda1

   8        2   62914560 sda2

   8        3    5252256 sda3

   8        4          1 sda4

   8        5   20980858 sda5

   8        6    5253223 sda6

   8        7    1060258 sda7

   8        8   10490413 sda8

  再次去查看/proc/partitions 文件信息的時候,就能發現,新增長的分區,系統已經識別到了。識別到以後,接下里就須要去對磁盤進行格式化。這不操做也Windows系統上有些相似,一個新建的分區,不管在什麼系統上都須要格式化纔可以使用。因此在linux系統也不例外。

六、磁盤分區的格式化

一、在linux系統下,格式化的工具備不少。看我的的選擇,在這裏我的作出一些簡單的介紹,詳細具體的使用方法。能夠去使用man命令去查看

第一種方式:mkfs.FS_TYPE使用這條命令能夠直接格式你指定的分區;第二種方式:mkfs -t FS_TYPE跟指定的分區類型也能夠,能夠跟上-L這個選項,指定卷名。。第三種方式:mke2fs命令也能夠說。可是這條命令只適用ext的文件系統類型。以上這些格式分區的命令,可以支持不少種的文件系統類型,上面已經有說明,這裏就不過多的解釋。接下來主要說明一下第三種方式的使用方法;先解釋一些它一些經常使用的選項參數:

-t :主要指明的須要跟的系統類型,因爲這條命限制於在ext類型的文件系統類型,因此只能在{ext2,ext3,ext4}中選擇。

-b :主要是來指明塊打下的,有{1024,2048,4096}選擇幾種選擇

-L 'label':用來指明分區的卷標名稱的

-j :若是跟上這個參數就至關於建立ext3類型的文件系統。

-i #(字節數):爲數據空間中每多少個字節建立一個inode;此大小不該該小於block的大小

-n #(節點數): 爲數據空間建立多少個inode

-m #(百分比) 位管理人員預留的空間佔據的百分比;默認百分之五

[root@www ~]# mke2fs -t ext4 -L mytest -b 2048 -m 3  /dev/sda8

mke2fs 1.41.12 (17-May-2010)

Filesystem label=mytest

OS type: Linux

Block size=2048 (log=1)

Fragment size=2048 (log=1)

Stride=0 blocks, Stripe width=0 blocks

657408 inodes, 5245206 blocks

157356 blocks (3.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=543162368

321 block groups

16384 blocks per group, 16384 fragments per group

2048 inodes per group

Superblock backups stored on blocks: 

16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 2048000, 3981312

Writing inode tables: done                            

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

 

This filesystem will be automatically checked every 25 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

    二、標紅色地方是指定的一些選項,都實現了。接下來能夠經過blkid命令再次確認是否建立成果。這條命令的一些選項參數就不過多說明,能夠去經過man命令自行了解。

[root@www ~]# blkid /dev/sda8

/dev/sda8: LABEL="mytest" UUID="e8aacd79-f63d-4a39-822d-b20b692aee0a" TYPE="ext4"

 

三、若是對格式化的分區不滿意,還能夠經過tune2fs:從新設定ext系統文件系統可調整參數的值。這樣可以很好的知足要求。

-j:將ext2升級爲ext3

-m #:修改預留給管理員的空間百分比

-l:查看指定文件系統超級快信息:super block;

-L:'label'修改卷標

-o:調整文件系統的默認掛載選項

-U UUID:修改UUID號;

除了上面說的這幾個命令,還有不少命令均可以查看管理磁盤信息如:e2label:管理ext系列文件系統的; dumpe2fs:-h:查看超級塊信息

七、掛載磁盤分區,在Windows系統格式化以後就能使用,可是在linux系統下,須要掛載才能使用。掛載命令相對來講比較簡單。Mount命令跟上設備名和須要掛載點就能夠。

[root@www ~]# mount /dev/sda8 /mnt/

[root@www ~]# mount

/dev/mapper/vg0-root on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/sda1 on /boot type ext4 (rw)

/dev/mapper/vg0-usr on /usr type ext4 (rw)

/dev/mapper/vg0-var on /var type ext4 (rw)

/dev/sda5 on /testing type ext4 (rw)

/dev/sda6 on /mogdata type ext3 (rw,acl)

/dev/sda7 on /data type ext3 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

/dev/sda8 on /mnt type ext4 (rw)

能夠看到新建的分區已經掛載成功,能夠正常使用。

[root@www mnt]# touch a.txt

[root@www mnt]# ll

total 16

-rw-r--r-- 1 root root     0 Aug 23 22:49 a.txt

drwx------ 2 root root 16384 Aug 23 21:56 lost+found

到這裏一個簡單的分區文件系統的簡單建立使用基本完成,還有不少地方,沒有過多解釋說明。這裏補充說明若是一個文件系統損壞,那應該怎麼解決呢?你們有想過嗎?接下里對文件的修復進行簡單的說明。


一、在對文件系統檢查以前,先要把須要檢查的文件系統進行卸載。否則不可以進行檢查,fsck,簡單的說明就是文件系統檢測的意思。

fsck -t fs_type(須要認真指明須要檢查的文件系統類型)

 -a:自動修復錯誤

 -r:交互式修復錯誤


e2fsck是一個對ext系統文件專用的檢查修復工具

-y:自動回到爲yes

-f:強制修復

接下來進行一些簡單的演示過程:

[root@www ~]# umount /mnt/

在linux系統中,若是執行命令沒有報錯就是最好的狀況。

[root@www ~]# 

[root@www ~]# 

[root@www ~]# fsck -t ext4 /dev/sda8

fsck from util-linux-ng 2.17.2

e2fsck 1.41.12 (17-May-2010)

mytest: clean, 12/657408 files, 121824/5245206 blocks

到此基本須要寫的東西都寫了!

相關文章
相關標籤/搜索