linux基礎學習第十四天-磁盤管理(MBR、分區掛載、SWAP)

2016-08-24

授課內容:

1、磁盤結構

2、分區類型

3、管理分區、文件系統以及掛載設備

4、管理虛擬內存SWAP



一、磁盤結構(機械硬盤)

 head:磁頭

 track:磁道

 cylinder: 柱面

 sector: 扇區,512bytes(最小的存儲單位)

        1、其中:每個盤面有兩面,兩面都可以存儲數據,片兩面都能存數據,要讀取它,必須有磁頭(head),所以,每一個面,都有一個磁頭,一張盤片就有兩個磁頭,每個盤面安裝圓心劃分了不同的類似跑道的存儲區域,稱爲磁道(track),盤面的數據從最外面開始存儲,最外面額是0磁道

相同磁道的立體空間,構成了柱面(cylinder),每個磁盤又可以劃分爲多個區域,稱爲扇區(sector),磁盤的最小存儲單位是扇區,一個扇區的大小是512字節,一個磁道由63個

        2、centos6按照柱面劃分分區,centos7按照扇區劃分分區

二、分區類型

        1、MBR: Master Boot Record,1982年提出的概念,使用32位表示扇區數,分區不超過2T(2^32/1024/1024=2T)

        通常一個磁盤的0磁道0扇區:512bytes存放着磁盤的MBR信息,其中:

    446bytes: boot loader(windows沒有管理器,linux稱爲grub2、lilo)

    64bytes:分區表

    16bytes: 標識一個分區

    4個主分區;3主分區+1擴展(N個邏輯分區)

    2bytes: 55AA

    

    因此,備份一個磁盤的MBR文件信息方法:

    dd if=/dev/sda of=/mnt/usb/MBRbackup bs=1 count=512

    恢復備份:

    dd if=/dev/usb/MBRbackup of=/dev/sda

MBR分區的磁盤邏輯結構:

wKiom1e9mAWCtcOXAAGNWt9UU-c414.png-wh_50

        2、GPT:GUID patition table 

        支持128個分區,使用64位,支持8Z(512Byte/block )64Z (4096Byte/block)使用128位UUID 表示磁盤和分區GPT分區表自動備份在頭和尾兩份,並有CRC校驗位,使用UEFI (統一擴展固件接口)硬件支持GPT


三、管理分區

    分區結構示意圖:邏輯上每個分區都由n個塊組組成


wKioL1e9nCWx9nT7AAAkiOwclhg415.jpg-wh_50

wKioL1e9nZjjNEouAAFbXADdavU197.jpg-wh_50

(1)硬盤的使用流程;

        低格(廠商設置)-->分區(fdisk)-->高格(創建文件系統類型)(mkfs)-->掛載(mount)-->正常使用 

        使用fdisk創建舊硬盤的分區後,雖然物理配置已經保存,但內存還沒有更新識別,需要內存刷新識別使用命令:partprobe,創建新硬盤分區則會自動更新

        (2)分區(fdisk)

        fdisk:查看和修改分區表信息

        fdisk DEVICE

        fdisk /dev/sda 對磁盤/dev/sda進行分區操作

        

        p: 顯示當前硬件的分區,包括沒保存的改動

        n: 創建新分區

        e: 擴展分區

        p: 主分區

        d: 刪除一個分區

        w: 保存退出

        q: 不保存退出

        t: 修改分區類型

        L: 

        l: 顯示所支持的所有類型

        (3)創建文件系統(mkfs)

        文件系統類型:

        Linux文件系統: ext2, ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap

        swap: 交換分區

        光盤:iso9660

        Windows:fat32, ntfs

        Unix: FFS(fast), UFS(unix), JFS2

        網絡文件系統:NFS, CIFS

        集羣文件系統:GFS2, OCFS2(oracle)

        分佈式文件系統:ceph, moosefs, mogilefs, glusterfs, Lustre

        RAW:未經處理或者未經格式化產生的文件系統

        

        目前linux主流的文件系統還是ext系統和xfs

        相關命令:mkfs、blkid、【mke2fs、e2lable、dumpe2fs、tune2fs:針對ext系統的命令】

        mkfs -t ext3 /dev/sda6

        mke2fs:ext系列文件系統專用管理工具

        -t {ext2|ext3|ext4}

        -b {1024|2048|4096}

        -L 'LABEL'

        -j: 相當於-t ext3

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

        -N #:爲數據空間創建個多少個inode

        -m #: 默認5%,爲管理人員預留空間佔總空間的百分比

        -O FEATURE[,...]:啓用指定特性

        -O ^FEATURE:關閉指定特性

        

        mkfs.ext3 = mkfs-t ext3 = mke2fs -j = mke2fs -t ext3

        blkid:塊設備屬性信息查看

        blkid[OPTION]... [DEVICE]

        -U UUID: 根據指定的UUID來查找對應的設備

        -L LABEL:根據指定的LABEL來查找對應的設備

        e2label:管理ext系列文件系統的LABEL

        # e2label DEVICE [LABEL]

        tune2fs:重新設定ext系列文件系統可調整參數的值

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

        -L 'LABEL':修改卷標

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

        -j: 將ext2升級爲ext3

        -O: 文件系統屬性啓用或禁用,–O ^has_journal

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

        -U UUID: 修改UUID號;

        (4)掛載mount

        掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關係,進而使得此目錄做爲其它文件訪問入口的行爲

        卸載:爲解除此關聯關係的過程

        注意:默認是隻有管理員root纔有掛載的權限

        掛載方法:

        mount DEVICE MOUNT_POINT

        mount:通過查看/etc/mtab文件顯示當前已掛載的所有設備

        -t vsftype:指定要掛載的設備上的文件系統類型

        -r: readonly,只讀掛載

        -w: read and write, 讀寫掛載

        -n: 不更新/etc/mtab,相當於#mount

        -a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能)

        -L 'LABEL': 以卷標指定掛載設備

        -U 'UUID': 以UUID指定要掛載的設備

        -B, --bind: 綁定目錄到另一個目錄上

        -o options:(掛載文件系統的選項),多個選項使用逗號分隔

        async:異步模式

        sync:同步模式,內存更改時,同時寫磁盤

        atime/noatime:包含目錄和文件

        diratime/nodiratime:目錄的訪問時間戳

        auto/noauto:是否支持自動掛載,是否支持-a選項

        exec/noexec:是否支持將文件系統上運行應用程序

        dev/nodev:是否支持在此文件系統上使用設備文件

        suid/nosuid:不否支持suid和sgid權限

        remount:重新掛載

        ro:只讀

        rw:讀寫

        user/nouser:是否允許普通用戶掛載此設備,默認管理員才能掛載

        acl:啓用此文件系統上的acl功能

        Defaults:相當於rw, suid, dev, exec, auto, nouser, async

    

        卸載時,有用戶正在使用該掛載分區,則無法正常卸載

        fuser:查看正在訪問的進程和操作

        -v:查看

        -mk:強制剔除正在訪問的進程


演示過程:

[root@Centos7 ~]# fdisk -l 【查看目前的分區情況】
Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 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: 0x00072f47
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      391167      194560   83  Linux
/dev/sda2          391168    98045951    48827392   83  Linux
/dev/sda3        98045952   105857023     3905536   82  Linux swap / Solaris
/dev/sda4       105857024   419430399   156786688    5  Extended
/dev/sda5       105859072   144920575    19530752   83  Linux
[root@Centos7 ~]# fdisk /dev/sda 
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n 【新建分區】
All primary partitions are in use
Adding logical partition 6 
First sector (144922624-419430399, default 144922624): 
Using default value 144922624
Last sector, +sectors or +size{K,M,G} (144922624-419430399, default 419430399): +10G 【10G】
Partition 6 of type Linux and of size 10 GiB is set
Command (m for help): 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.
[root@Centos7 ~]# fdisk -l
Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 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: 0x00072f47
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      391167      194560   83  Linux
/dev/sda2          391168    98045951    48827392   83  Linux
/dev/sda3        98045952   105857023     3905536   82  Linux swap / Solaris
/dev/sda4       105857024   419430399   156786688    5  Extended
/dev/sda5       105859072   144920575    19530752   83  Linux
/dev/sda6       144922624   165894143    10485760   83  Linux
[root@Centos7 ~]# 
[root@Centos7 ~]# cat /proc/partitions 
major minor  #blocks  name
   8        0  209715200 sda
   8        1     194560 sda1
   8        2   48827392 sda2
   8        3    3905536 sda3
   8        4          1 sda4
   8        5   19530752 sda5
  11        0    7587840 sr0
[root@Centos7 ~]# partprobe /dev/sda 【通知內核更新】
[root@Centos7 ~]# cat /proc/partitions 
major minor  #blocks  name
   8        0  209715200 sda
   8        1     194560 sda1
   8        2   48827392 sda2
   8        3    3905536 sda3
   8        4          0 sda4
   8        5   19530752 sda5
   8        6   10485760 sda6
  11        0    7587840 sr0
[root@Centos7 ~]# mkfs -t ext3 /dev/sda  【創建文件系統】
/dev/sda   /dev/sda1  /dev/sda2  /dev/sda3  /dev/sda4  /dev/sda5  /dev/sda6  
[root@Centos7 ~]# mkfs -t ext3 /dev/sda6
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

四、管理虛擬內存SWAP

        (1)SWAP分區:模擬內存,當物理內存不足時,進程需要內存資源是,內存會把一部分沒有在用的進程分頁挪到硬盤的模擬內存中,騰出空間被現在需要使用內存資源的進程

即其作用是可以允許內存過載使用,windows系統也有類似的機制

由於虛擬內存空間是建立在硬盤之上,所以其速度和性能會大打折扣

運行速度:CPU(1納秒)-->緩存(一級緩存,二級..)(10納秒)-->內存(10毫秒)-->硬盤(秒)

        (2)linux的swap和windows的虛擬內存空間區別:

區別就是windows即使物理內存沒有用完也會去用到虛擬內存 ,

而Linux不一樣 Linux只有當物理內存用完的時候纔會去動用虛擬內存(即swap分區)這就是兩者的區別。

        (3)free:查看物理內存和虛擬內存的使用情況

[root@Centos7 shells]# free
total        used        free      shared  buff/cache   available
Mem:        1868692      317020     1189976        9224      361696     1370028
Swap:       3905532           0     3905532

        (4)dd:convert and copy a file,轉換並複製文件,與cp命令相似,只是用法格式有不一樣,dd複製的是數據流,工作在vfs之下

if:文件來源

of:數據存儲目的


dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1:(可以備份MBR)

dd if=/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1:(可以還原MBR)

【】/dev/zero:不斷的往外輸出000,與/dev/null作用相反

        (5)/etc/fstab:系統啓動自動掛載的文件系統配置

[root@Centos7 shells]# cat /etc/fstab 
UUID=4b461f3a-1b13-49c9-80eb-0a03f4fa9519 /                       xfs     defaults        0 0
UUID=c332bc3c-01b4-40e3-b600-c5791719e14b /boot                   xfs     defaults        0 0
UUID=7561a152-2688-4437-a001-814a4cddd745 /testdir                xfs     defaults        0 0
UUID=bb4c502d-ec7c-4237-811c-30de82daaf68 swap                    swap    defaults        0 0

空格分開六個字段【】:

設備(名、路徑、UUID):掛載點:文件系統類型:掛載選項(使用mount命令時的附加選項):轉儲頻率(備份頻率,每多少天做一次完成備份):文件系統檢測次序(只有根可以是1,0表示不檢查) 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章