磁盤分區,文件系統的創建、修改和檢測

    寫博客,對我來說不僅是學習的過程,也是一個心理歷練的過程,多說無益,開始吧?。?!

    博客是馬哥視頻里的博客作業:文件系統的創建、修改和檢測。我就從磁盤管理開始把

    


環境:

    創建的centos6.5虛擬機

    磁盤空間大小20G

    裝機過程中手動分區,預留了10G左右的空間用來練習

[root@scm-dzm ~]# uname -a
Linux scm-dzm 2.6.32-504.el6.i686 #1 SMP Wed Oct 15 03:02:07 UTC 2014 i686 i686 i386 GNU/Linux


一、一些概念,雖然一知半解,但也有助于對整體知識的理解和把握

固態硬盤現在越來越便宜也越來越常見了,但是現在還沒有普遍使用,僅用于企業I/O壓力過大時用于救命的。

這里要說的還是關于機械式硬盤,硬盤是主機的I/O設備,它是通過主板與主機的其他組件連接起來并協調工作的

a.計算機的組成部分

1,最底層是硬件設備,主要包括三個組件:CPU,內存,I/O設備
CPU:cpu由控制器和運算器組成
內存:當下要被cpu處理的數據和要使用的程序,cpu不能從內存以外的任何位置取數據
I/O設備:常見的有硬盤和網卡,網卡是通過網絡交換數據,硬盤給本地提供設備的持久存貯功能,還有鍵盤鼠標等設備

2,內核:
管理組件能夠協調工作
將硬件規格接口抽象給程序員
硬件驅動由硬件廠商提供,由內核管理

b.I/O端口

每個硬件設備都需要在cpu上注冊一個不同的終端信號
I/Oports:I/O設備地址,在硬件層次的地址標志

c.linux上硬件設備被識別為文件

設備文件類型:塊設備clock(例如磁盤),字符設備char(例如鍵盤)
設備文件的作用:關聯至一個設備驅動程序,進而能夠與之對應的硬件設備進行通信。硬盤的設備文件也是如此
每個硬件設備在內核都是靠一個設備號來識別的,不同類別的設備號碼是不同的,其中主設備號(major number)標識設備類型,次設備號(minor number)標識同一設備類型的不同設備,同時設備只有元數據沒有數據
設備文件存儲位置:/dev/DEV_FILE

d.磁盤

設備的接口類型

并行:交換速率慢,為了避免干擾
IDE     133MB/s
SCSI3.0640MB/s
串口:
SATA6Gbps
SAS6Gbps
USB3.0480MB/s
rpm:轉速,7200 10000 15000

磁盤設備的設備文件命名

IDE:/dev/hd
SCST SATA SAS USB:/dev/sd
不同設備:a~z
例如:/dev/sda /dev/sdb等等
同一設備不同的分區:
例如:/dev/sda1 /dev/sda2...

機械式硬盤:雙面可讀寫的

磁道:track

柱面:cylinder,號碼形同的多個磁道組成的柱體

扇區:sector

分區方式:

按柱面分區

0柱面0扇區:512bytes

MBR:master boot record主引導記錄
 446bytes:boot load 引導加載器
 64bytes:分區表,16bytes標識1個分區,總共標識4個分區
 所以如果對1個磁盤想4個以上的分區,就必須有1個擴展分區,一般都是3個主分區,1個擴展分區,1個擴展分區又可以劃分多個邏輯分區
 2bytes:MBR的有效性標識55AA

二、磁盤分區

1. 工具:fdisk parted sfdisk

fdisk:對于一個硬盤來講,最多只能管理15個分區

fdisk -L [DEVICE] <-查看分區

fdisk DEVICE <-分區

例子:

[root@scm-dzm ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x000428cc
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1275    10240000   83  Linux
/dev/sda2            1275        1406     1048576   82  Linux swap / Solaris
詳解:整個磁盤空間21.5GB,21474836480 bytes
  255個磁頭,每個磁道63個扇區,2610個柱面
  512×63×255表示一個柱面大小,512×63×255×2610就是磁盤的大小,共63×255×2610扇區
  I/O size (minimum/optimal)
  磁盤標識符
  磁盤分區
  設備名稱引導 開始柱面結束柱面塊數量 分區ID號 系統類型
[root@scm-dzm ~]# fdisk /dev/sda
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 <- 輸入m查看子命令
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition# 刪除分區
   l   list known partition types# 查看所支持的分區類型以及編號ID
   m   print this menu# 查看幫助
   n   add a new partition# new,新建分區
   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 # 調整分區ID
   u   change display/entry units #
   v   verify the partition table
   w   write table to disk and exit # 保存此次操作
   x   extra functionality (experts only)
Command (m for help): n <- 輸入子命令n,新建分區
Command action
   e   extended
   p   primary partition (1-4)
e <- 輸入分區類型為擴展分區
Partition number (1-4): 4 <- 輸入分區編號為4,以下均默認,將剩余空間全部分給擴展分區
First cylinder (1406-2610, default 1406): 
Using default value 1406
Last cylinder, +cylinders or +size{K,M,G} (1406-2610, default 2610): 
Using default value 2610
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l <- 輸入l選擇創建邏輯分區
First cylinder (1406-2610, default 1406): <- 直接回車,默認從1406柱面開始
Using default value 1406
Value out of range.
Last cylinder, +cylinders or +size{K,M,G} (1406-2610, default 2610): +2G <- 創建2G大小的分區
Command (m for help): w <- 輸入子命令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.

2.通知系統分區變化

命令partx,kpartx,和centos5使用的partprobe

查看已被內核識別的分區( cat /proc/partitions),剛才創建的分區并未識別:

[root@scm-dzm ~]# cat /proc/partitions 
major minor  #blocks  name
   8        0   20971520 sda
   8        1   10240000 sda1
   8        2    1048576 sda2

    partx命令說明

    -a DEVICE掃描整個磁盤

    –nr M-N 

      M:  

       : 

    kpartx命令說明

    -a DEVICE

    -f DEVICE

[root@scm-dzm ~]# partx -a /dev/sda
BLKPG: Device or resource busy<- 據說由于虛擬機的原因才有這個報錯
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
[root@scm-dzm ~]# cat /proc/partitions 
major minor  #blocks  name
   8        0   20971520 sda
   8        1   10240000 sda1
   8        2    1048576 sda2
   8        4         31 sda4
   8        5    2100546 sda5
   8        6     530113 sda6

    kpartx這個命令載入新分區失敗

三、創建文件系統

1. 常見的文件系統

linux文件系統

      ext2

      ext3

      ext4

      xfs

      btrfs

      reiserfs

      swap

      光盤系統:ISO9660

 交換分區對于不同的應用要求不同
  ① oracle,mysql數據庫系統,如果一旦把內存數據放回硬盤上,性能會急劇下降,對于這種設備,交換分區一般512-1G就夠了,但物理內存一般需達到64G-512G
  ② 對于批處理系統,內存使用率不高,對于機器運行的性能要求也不是很高,swap可以設置的比較大,一般等于物理內存,不過8G已經非常大了

     windows:fat32,ntfs

     unix:FFS UFS JFS2

     網絡文件系統:NFS cifs

     集群文件系統:GFS2 OCF2

     分布式文件系統:ceph moosefs mogileft lustre

2. 創建文件系統

支持的文件系統:cat /proc/filesystems 可查看,lsmod可查看內核加載的模塊

創建文件系統的命令mkfs,mke2fs,mkfs.FS_TYPE:

mkfs.cramfs   mkfs.ext2     mkfs.ext3     mkfs.ext4     mkfs.ext4dev  mkfs.msdos    mkfs.vfat

mkfs.ext4 mkfs.ext2 mkfs.ext3 & mke2fs等如下選項意義一樣,可man查看

     -t fs-type {ext2|ext3|ext4}

     -b block-size {1024|2048|4096}  # 設置塊大小,創建好的文件系統不能在修改此值

     -L new-volume-label # 設置卷標

     -i bytes-per-inode # 多少字節創建一個inode

     -N number-of-inodes # 設置創建inode的數量

     -m reserved-blocks-percentage # 為管理員預留空間的百分比,默認5%

     -O feature[,…] # 啟用指定特性,-O ^feature關閉指定特性

命令的使用:

[root@scm-dzm ~]# mkfs.ext4 -L MySystem -b 4096 -m 3 /dev/sda5
mke2fs 1.41.12 (17-May-2010)
Filesystem label=MySystem
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131376 inodes, 525136 blocks
15754 blocks (3.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=541065216
17 block groups
32768 blocks per group, 32768 fragments per group
7728 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 29 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

3. 查看塊設備屬性

命令blkid,e2label,tune2fs

blkid:

     -U UUID # 根據指定的UUID查找指定設備

     -L LABEL # 根據指定的LABEL查找指定設備

[root@scm-dzm ~]# blkid /dev/sda5
/dev/sda5: LABEL="MySystem" UUID="8e383118-3e91-4393-b602-f24cb3d0256f" TYPE="ext4" 
[root@scm-dzm ~]# blkid -U 8e383118-3e91-4393-b602-f24cb3d0256f
/dev/sda5
[root@scm-dzm ~]# blkid -L MySystem
/dev/sda5
[root@scm-dzm ~]# blkid -O full   
/dev/sda1: UUID="7336f3a1-61ce-4ff5-9aba-e71a26748f74" TYPE="ext4" 
/dev/sda2: UUID="db406704-df06-46a2-a44f-94bb91c7daf4" TYPE="swap" 
/dev/sda5: LABEL="MySystem" UUID="8e383118-3e91-4393-b602-f24cb3d0256f" TYPE="ext4"

e2label:

e2label /dev/sda5 # 查看LABEL

e2label /dev/sda5 "NewLable" # 設置LABEL

[root@scm-dzm ~]# e2label /dev/sda5 "NewLable"
[root@scm-dzm ~]# blkid -L NewLable
/dev/sda5

tune2fs

     -l device # 查看指定分區的超級快信息

     -L "NewLabel" # 修改卷標

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

     -j # 升級fs

     -O feature # 啟用指定特性,-O ^feature關閉指定特性

     -o   # 調整文件系統的默認掛載選項,加^表示取消

     -u UUID # 修改UUID

[root@scm-dzm ~]# tune2fs -l /dev/sda5
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   NewLable
Last mounted on:          <not available>
Filesystem UUID:          8e383118-3e91-4393-b602-f24cb3d0256f
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:              131376
Block count:              525136
Reserved block count:     15754
Free blocks:              499721
Free inodes:              131365
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      128
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         7728
Inode blocks per group:   483
Flex block group size:    16
Filesystem created:       Thu Jun 23 17:02:23 2016
Last mount time:          n/a
Last write time:          Thu Jun 23 17:28:50 2016
Mount count:              0
Maximum mount count:      29
Last checked:             Thu Jun 23 17:02:23 2016
Check interval:           15552000 (6 months)
Next check after:         Tue Dec 20 17:02:23 2016
Lifetime writes:          97 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:      419725ca-0c22-4146-885a-0044b03a19ee
Journal backup:           inode blocks
[root@scm-dzm ~]# tune2fs -L "NNewLabel" /dev/sda5 
tune2fs 1.41.12 (17-May-2010)

[root@scm-dzm ~]# blkid -L NNewLabel
/dev/sda5

[root@scm-dzm ~]# tune2fs -o user_xattr /dev/sda5 
tune2fs 1.41.12 (17-May-2010)
[root@scm-dzm ~]# tune2fs -o acl /dev/sda5           
tune2fs 1.41.12 (17-May-2010)

關于超級塊保存了很多信息:整個分區中的整個結構劃分保存在超級塊中,有多少塊組,每組擁有多少塊,每個組分別從第幾塊開始從第幾塊結束,每個塊多大,而且每個組中有多少塊占用,有多少塊free

如果超級塊丟失,整個分區將無法使用,所以超級塊在分區中有很多個備份,再出現意外時用來恢復分區的

4. 創建交換分區

首先需要使用工具fdisk調整分區的ID為82,然后做如下操作

[root@scm-dzm ~]# mkswap -L MySwap /dev/sda6
Setting up swapspace version 1, size = 530108 KiB
LABEL=MySwap, UUID=3b99e1ac-60f8-4ae1-9453-5c9cdee86266

四、 文件系統檢測

工具:fsck.FS_TYPE 或者fsck -t FS_TYPE 

     -a # 自動修復

     -r # 交互式修復

[root@scm-dzm ~]# fsck.ext4 -a /dev/sda5
NNewLabel: clean, 11/131376 files, 25415/525136 blocks

工具:e2fsck:ext系列文件系統專用檢測修復工具

     -y # 自動修復

     -f # 強制修復

[root@scm-dzm ~]# e2fsck -y /dev/sda5

e2fsck 1.41.12 (17-May-2010)
NNewLabel: clean, 11/131376 files, 25415/525136 blocks

五、最后總結:

    1. 首先分區fdisk parted sfdisk

    2. 通知內核載入分區partx,kpartx,和centos5使用的partprobe

    3. 創建文件系統:

        mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev mkfs.msdos mkfs.vfat mkfs,mke2fs

       創建swap分區

        mkswap

        查看創建的文件系統:命令blkid,e2label,tune2fs

    4. 真正想要使用分區還需要掛在:mount

原創文章,作者:Net20_天意,如若轉載,請注明出處:http://www.www58058.com/19815

(0)
Net20_天意Net20_天意
上一篇 2016-06-26 22:43
下一篇 2016-06-26 22:44

相關推薦

  • 《 Git 權威指南 》學習筆記

    這個沒辦法直接發博客了,篇幅太長,無法直接在 Blog 上排版了,直接發上 pdf 文檔了。 接 《LNAMP Shell 部署腳本》 博文的內容,線上測試系統的 Git 環境部署。 整個 Git 環境包括了:     Git / Gitweb     Gitolite / Gerrit &nbsp…

    Linux干貨 2015-10-27
  • M20-1 8月5號作業

    作業:    1、取本機IP地址;    2、取各分區利用率的數值;    3、統計/etc/init.d/functions 文件中每個單詞出現的次數,并按頻率從高到低顯示;    4、/etc/rc.d/init.d/functions或/etc/rc.d/init.d/fu…

    Linux干貨 2016-08-15
  • Linux作業管理、并發執行、計劃任務

    概述     本章將為大家介紹一些進程管理的補充部分作業管理和任務的并發執行,同時也將介紹一下Linux系統上計劃任務的相關內容,具體分為:         1、Linux作業管理     &nbsp…

    Linux干貨 2016-09-09
  • 第八周練習腳本部分

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;在線的主機使用綠色顯示;不在線的主使用紅色顯示; #!/bin/bash # for((i=1;i<=254;i++));do     site="172.16.250.${i}&quot…

    Linux干貨 2016-12-15
  • 編譯安裝apache

    編譯安裝apache可簡單分為3步: 第一步:下載apache軟件包解決依賴關系并生成Makefile 1.首先準備開發環境,可以通過yum安裝開發包組:yum groupinstall Development Tools 2.準備apache軟件包,可以通過http://httpd.apache.org下載到本地。隨后解包tar -xf?httpd-2.4…

    Linux干貨 2017-12-03
  • nginx配置(一)

    Nginx:http協議:web服務器(類似于httpd)、http reverse proxy(類似于httpd)、imap/pop3 reverse proxy NGINX is a free, open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/…

    Linux干貨 2017-05-05
欧美性久久久久