磁盤管理(1)

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

(1)磁盤構成:

磁盤管理(1)

磁臂(機械手臂):連接并固定磁頭
馬達(電機):可以轉動盤片,讓磁臂上的磁頭可以在盤片上讀寫數據
扇區:最小的物理存儲單位,每個扇區為512bytes
磁頭:可以讀寫數據
盤片:主要記錄數據
柱面:將扇區組成一個圓就是柱面,柱面是分區的最小單位

(2)磁盤接口

并口:IDE  SCSI   /dev/hd[a-z]
串口:SATA   NAS   USB   /dev/sd[a-z]

(3)設備文件(Linux下一切皆文件)

設備文件定義:
每個設備都有一個文件作為它的訪問入口,此文件就稱之為設備文件;該文件關聯至少一個設備驅動程序,進而能夠跟與之對應的硬件設備進行通信。
設備號碼:
用來標識設備,不同類別的設備有不同的設備號,同一類別的設備有不同的設備或多個設備,因此就有主設備號和次設備號。主次設備用逗號隔開,主設備在前面,次設備在后面。
主設備號:標識設備類型
次設備號:標識同一類型下的不同設備

2、分區類型

(1)MBR(Master Boot Record):主引導記錄

磁盤管理(1)

一般將MBR分為廣義和狹義兩種:廣義的MBR包含整個扇區(引導程序、分區表及分隔標識),也就是上面所說的主引導記錄;而狹義的MBR僅指引導程序。
磁盤的第0柱面第0扇區(共512bytes)即為MBR,以柱面為分區單位。它由三部分組成:
    主引導程序:存儲boot loader,引導加載程序,共446bytes
    硬盤分區表:記錄硬盤的分區個數及其大小,共64bytes,其中每16bytes標識一個分區,因此,一個硬盤只能分四個主分區。
    分區有效標記:共兩個十六進制數:55AA,用于標識MBR是有效的,因此不能去修改,否則會導致機器不能啟動。 
注意:
1)一個硬盤的主分區與擴展分區加起來最多4個,而且擴展分區最多只能有一個
2)邏輯分區是由擴展分區的再分區出來的
3)邏輯分區和擴展分區可以格式化,擴展分區無法格式化
4)邏輯分區的數量依操作系統而不同,Linux系統中,IDE硬盤最多59個邏輯分區(5號到63號),SATA硬盤最多有11個邏輯分區(5號到15號)
5)當磁盤容量大于2T時,現在的MBR機制是無法識別2T以后的磁盤空間的,此時需要使用GPT機制來進行分區

(2)GPT(GUID(Globals Unique Identifiers) partition table):全局唯一標識符分區表

磁盤管理(1)

GPT是基于UEFI(統一擴展固件接口)的硬盤分區結構。在GPT硬盤中,分區表的位置信息儲存在GPT頭中。但出于兼容性考慮,硬盤的第一個扇區仍然用作MBR(Protective MBR),之后才是GPT頭。
GPT特點:
    1)GUID 分區表 (GPT) 磁盤分區樣式支持最大卷為 18 EB (exabytes) 并且每磁盤最多有 128 個分區
    2)GPT 分區磁盤有多余的主要及備份分區表來提高分區數據結構的完整性
    3)GPT 在磁盤最后備份了磁盤的分區表
    4)可以將 MBR 磁盤轉換為 GPT 磁盤,并且只有在磁盤為空的情況下,才可以將 GPT 磁盤轉換為 MBR 磁盤

3、管理分區

(1)lsblk命令

lsblk命令用于列出所有可用塊設備的信息,而且還能顯示他們之間的依賴關系,但是它不會列出RAM盤的信息。塊設備有硬盤,閃存盤,cd-ROM等等

磁盤管理(1)

NAME:這是塊設備名。 
MAJ:MIN:顯示主要和次要設備號。 
RM:顯示設備是否可移動設備。值為1表示可移動設備。 
SIZE:列出設備的容量大小信息。
RO:該項表明設備是否為只讀。在本案例中,所有設備的RO值為0,表明他們不是只讀的。 
TYPE:顯示塊設備是否是磁盤或磁盤上的一個分區。在本例中,sda和sdb是磁盤,而sr0是只讀存儲(rom)。 
MOUNTPOINT:指出設備掛載的掛載點。

1)語法

lsblk [options] [device...]

2)選項

 -a, --all            打印所有設備
 -b, --bytes          以字節為單位而非易讀的格式來打印 SIZE
 -d, --nodeps         不打印從屬設備(slave)或占位設備(holder)
 -D, --discard        打印時丟棄能力
 -e, --exclude <列表> 根據主設備號排除設備(默認:內存盤)
 -I, --include <列表> 只顯示有指定主設備號的設備
 -f, --fs             輸出文件系統信息
 -h, --help           使用信息(此信息)
 -i, --ascii          只使用 ascii 字符
 -m, --perms          輸出權限信息
 -l, --list           使用列表格式的輸出
 -n, --noheadings     不打印標題
 -o, --output <列表>  輸出列
 -p, --paths          打印完整設備路徑
 -P, --pairs          使用 key=“value” 輸出格式
 -r, --raw            使用原生輸出格式
 -s, --inverse        反向依賴
 -t, --topology       輸出拓撲信息
 -S, --scsi           輸出有關 SCSI 設備的信息

(2)fdisk命令

管理磁盤分區表工具。fdisk用于創建MBR分區,對于一塊硬盤,最多只能管理15個分區。同時也支持GPT分區,但是還處于試驗階段,因此不推薦用fdisk管理GPT分區。

1)語法

fdisk [選項] <磁盤>    更改分區表
fdisk [選項] -l <磁盤> 列出分區表
fdisk -s <分區>        給出分區大小(塊數)

2)選項:

 -l                   查看磁盤分區 
 -b <大小>             扇區大小(512、1024、2048或4096)
    [root@localhost ~]# fdisk -b 1024 /dev/sdb
 -c[=<模式>]           兼容模式:“dos”或“nondos”(默認)
 -h                    打印此幫助文本
 -u[=<單位>]           顯示單位:“cylinders”(柱面)或“sectors”(扇區,默認)
 -v                    打印程序版本
 -C <數字>             指定柱面數
 -H <數字>             指定磁頭數
 -S <數字>             指定每個磁道的扇區數

3)子命令

在fdisk分區操作時,有許多子命令,可以使用子命令 m     來查看,不同分區格式選項有所區別。如:
    命令(輸入 m 獲取幫助):m
    命令操作
       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)

4)創建一個扇區大小為1024,總容量為1G的分區

[root@localhost ~]# fdisk -b 1024 /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。

更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。

命令(輸入 m 獲取幫助):n
All primary partitions are in use
添加邏輯分區 5
起始 扇區 (20974592-23070719,默認為 20974592):
將使用默認值 20974592
Last 扇區, +扇區 or +size{K,M,G} (20974592-23070719,默認為 23070719):+1G
分區 5 已設置為 Linux 類型,大小設為 1 GiB

命令(輸入 m 獲取幫助):p  

磁盤 /dev/sdb:42.9 GB, 42949672960 字節,41943040 個扇區
Units = 扇區 of 1 * 1024 = 1024 bytes
扇區大小(邏輯/物理):1024 字節 / 1024 字節
I/O 大小(最小/最佳):1024 字節 / 1024 字節
磁盤標簽類型:dos
磁盤標識符:0xc6b58e7c

   設備 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     4194304   83  Linux
/dev/sdb2         4196352    14682111    10485760   83  Linux
/dev/sdb3        14682112    20973567     6291456   83  Linux
/dev/sdb4        20973568    23070719     2097152    5  Extended
/dev/sdb5        20974592    22023167     1048576   83  Linux

(3)查看內核 是否已經識別新的分區3個方法

cat /proc/partitions
lsblk
ls /dev/[h,s]d*

(4)通知內核重新讀取硬盤分區表

已有分區處于使用狀態時,新建的分區需要讓內核重新讀取分區表才能顯示。
CentOS 5,7:使用partprobe
CentOS 6,7:
    新增分區:使用partx -a [device]  kpartx -af [device]
    刪除分區:使用partx -d [device]

(5)parted命令

管理調整磁盤分區和分區大小,其操作都是實時生效的,小心使用
用法:parted [ 選項]... [備 設備 [令 命令 [ 參數]...]...]
parted /dev/sdb mklabel gpt|msdos
parted /dev/sdb print
parted /dev/sdb mkpart primary 1 200  (默認M) )
parted /dev/sdb rm 1
parted -l
http://man.linuxde.net/parted(參考)

4、管理文件系統

(1)文件系統介紹

操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。文件系統是操作系統用于明確存儲設備或分區上的文件的方法。
從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,加密等。法和數據結構;即在存儲設備上組織文件的方法。
文件系統分類:
Linux文件系統:ext2 ext3 ext4 xfs btrfs vfat jfs等
光盤:iso9660
Windows:fat32 ntfs
Unix:FFS UFS JFS2
網絡文件系統:NFS CIFS
集群文件系統:GFS2 OCFS2
分布式文件系統:ceph moosefs mogilefs glusterfs lustre
RAM:為經處理或者未經格式化產生的文件系統
虛擬文件系:VFS
查前支持的文件系統:cat /proc/filesystems

(2)文件系統管理

1)mkfs命令:創建文件系統

語法:

mkfs [選項] [-t <類型>] [文件系統選項] <設備> [<大小>]

選項:

 -t, --type=<類型>  文件系統類型;若不指定,將使用 ext2
     fs-options     實際文件系統構建程序的參數
     <設備>         要使用設備的路徑
     <大小>         要使用設備上的塊數
 -V, --verbose      解釋正在進行的操作;
                      多次指定 -V 將導致空運行(dry-run)
 -V, --version      顯示版本信息并退出
                      將 -V 作為 --version 選項時必須是惟一選項
 -h, --help         顯示此幫助并退出
 -c:在制做檔案系統前,檢查該partition是否有壞軌

磁盤管理(1)

2)mke2fs命令:ext系列文件系統專用管理工具

語法:create an ext2/ext3/ext4 filesystem

mke2fs [options] device

選項:

-t{ext2、ext3、ext4}:指明要創建的文件系統類型
-b{1024、2048、4096}:指明文件系統塊大小
-L:LABEL指明卷標;
    mke2fs -t ext3 -L mydata -b 1024 /dev/sda3
-j:創建有日志功能的文件系統ext3,相當于 -t ext3
    mke2fs -j = mke2fs -t ext3 = mkfs -t ext3 =mkfs.ext3
-i # :bytes-per-inode ,指明inode與字節的比率,即每多少個字節創建一個inode,此大小不應該小于block 的大小
-N #:直接指明要給此文件系統創建的inode的數量
-I:一個inode記錄的大小128---4096
-O[^]FEATURE:以指定的特性創建目標文件系統(加^表示關閉特性,不加表示啟用特性)
-m #:指定預留的空間,百分比(不用百分號)默認為5%
-q:執行時不顯示任何信息
-M:記錄最后一次掛入的目錄
-c;檢查是否有損壞的區塊

磁盤管理(1)

3)blkid命令:查看指定塊設備的屬性信息

語法:

blkid [OPTION]... [DEVICE]

選項:

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

4)e2label命令:管理ext系列文件系統的LABEL

語法:

e2label DEVICE [LABEL]
查看:e2label devicd 
設定:e2label device LABEL

示例:

設置/dev/sdb1的卷標為/mnt/sdb1
[root@localhost ~]# e2label /dev/sdb1 /mnt/sdb1 
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: LABEL="/mnt/sdb1" UUID="3659ccda-38fc-457c-a8a3-6e7fefb667ce" TYPE="ext2"
顯示某設備的卷標
[root@localhost ~]# e2label /dev/sdb1
/mnt/sdb1
[root@localhost ~]# e2label /dev/sdb2  ## /dev/sdb2未設置卷標

[root@localhost ~]#

5)findfs命令:查找分區

依據卷標(Label)和UUID查找文件系統所對應的設備文件,findfs命令會搜索整個磁盤。

語法:

 findfs [選項] LABEL=<label>
 findfs [選項] UUID=<uuid>

示例:

磁盤管理(1)

6)dumpe2fs命令:查看ext系列文件系統屬性

語法:

dumpe2fs [options] device

選項:

-b:打印文件系統中預留的塊信息;
-ob<超級塊>:指定檢查文件系統時使用的超級塊;
-OB<塊大小>:檢查文件系統時使用的指定的塊大??;
-h:僅顯示超級塊信息;
-i:從指定的文件系統映像文件中讀取文件系統信息;
-x:以16進制格式打印信息塊成員。

示例:

[root@localhost ~]# dumpe2fs /dev/sdb
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          233296d6-20a9-4f10-82c0-d1519596bcee
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              1310720
Block count:              5242880
Reserved block count:     262144
Free blocks:              5149359
Free inodes:              1310709
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1022
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Filesystem created:       Thu Aug 25 21:16:17 2016
Last mount time:          n/a
Last write time:          Thu Aug 25 21:16:18 2016
Mount count:              0
Maximum mount count:      -1
Last checked:             Thu Aug 25 21:16:17 2016
Check interval:           0 (<none>)
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
Default directory hash:   half_md4
Directory Hash Seed:      67c67387-a85d-4a7b-a1a0-e91526517420


Group 0: (Blocks 0-32767)
  主 superblock at 0, Group descriptors at 1-2
  保留的GDT塊位于 3-1024
  Block bitmap at 1025 (+1025), Inode bitmap at 1026 (+1026)
  Inode表位于 1027-1538 (+1027)
  31223 free blocks, 8181 free inodes, 2 directories
  可用塊數: 1545-32767
  可用inode數: 12-8192
...(N個塊組)

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

注意:塊設備塊大小無法修改

語法:

tune2fs [options] device

選項:

-c:調整最大加載次數;
-C:設置文件系統已經被加載的次數;
-e:設置內核代碼檢測到錯誤時的行為;
-f:強制執行修改,即使發生錯誤;
-i:設置相鄰兩次文件系統檢查的相隔時間;
-j:為“ext2”文件系統添加日志功能,將其轉換為“ext3”文件系統;
-l:顯示文件超級塊內容;
-L:設置文件系統卷標;
-m:顯示文件保留塊的百分比;
-M:設置文件系統最后被加載到的目錄;
-o:設置或清除文件系統加載的特性或選項;清除[^o]
-O:設置或清除文件系統的特性或選項;清除[^O]
-r:設置文件系統保留塊的大小;
-T:設置文件系統上次被檢查的時間;
-u:設置可以使用文件系統保留塊的用戶;
-U:設置文件系統的UUID。

示例:

磁盤管理(1)

8)fsck命令:文件系統檢測和修改的工具

語法:

fsck [options] device

選項:

-a:自動修復文件系統,不詢問任何問題;
-A:依照/etc/fstab配置文件的內容,檢查文件內所列的全部文件系統;
-N:不執行指令,僅列出實際執行會進行的動作;
-P:當搭配"-A"參數使用時,則會同時檢查所有的文件系統;
-r:采用互動模式,在執行修復時詢問問題,讓用戶得以確認并決定處理方式;
-R:當搭配"-A"參數使用時,則會略過/目錄的文件系統不予檢查;
-s:依序執行檢查作業,而非同時執行;
-t<文件系統類型>:指定要檢查的文件系統類型;
-T:執行fsck指令時,不顯示標題信息;
-V:顯示指令執行過程。    
-y:對所有問題自動回答為yes

注意:建議離線檢測

9)e2fsck命令:ext系列文件系統的專用工具

e2fsck執行后的傳回值及代表意義如下: 
    0 沒有任何錯誤發生。 
    1 文件系統發生錯誤,并且已經修正。 
    2 文件系統發生錯誤,并且已經修正。 
    4 文件系統發生錯誤,但沒有修正。 
    8 運作時發生錯誤。 
    16 使用的語法發生錯誤。 
    128 共享的函數庫發生錯誤。

語法:

e2fsck [options] device

選項:

-a:不詢問使用者意見,便自動修復文件系統;
-b<superblock>:指定superblock,而不使用預設的superblock;
-B<區塊大小>:指定區塊的大小,單位為字節;
-c:一并執行badblocks,以標示損壞的區塊;
-C:將檢查過程的信息完整記錄在file descriptor中,使得整個檢查過程都能完整監控;
-d:顯示排錯信息;
-f:即使文件系統沒有錯誤跡象,仍強制地檢查正確性;
-F:執行前先清除設備的緩沖區;
-l<文件>:將文件中指定的區塊加到損壞區塊列表;
-L<文件>:先清除損壞區塊列表,再將文件中指定的區塊加到損壞區塊列表。因此損壞區塊列表的區塊跟文件中指定的區塊是一樣的;
-n:以只讀模式開啟文件系統,并采取非互動方式執行,所有的問題對話均設置以"no"回答;
-p:不詢問使用者意見,便自動修復文件系統;
-r:此參數只為了兼容性而存在,并無實際作用;
-s:如果文件系統的字節順序不適當,就交換字節順序,否則不做任何動作;
-S:不管文件系統的字節順序,一律交換字節順序;、
-t:顯示時間信息;
-v:執行時顯示詳細的信息;
-V:顯示版本信息;
-y:采取非互動方式執行,所有的問題均設置以"yes"回答。

10)超級塊

超級塊的作用是存儲文件系統的大小、有多少是空的和已經填滿的占多少,以及它們各自的總數和其他信息。超級塊占用第一號物理塊,應該做好備份。

磁盤管理(1)

5、掛載文件系統

掛載: 將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它文件訪問入口的行為
卸載:為解除此關聯關系的過程
掛載點下原有文件在掛載完成后會被臨時隱藏,掛載點目錄一般為空,且要事先存在

mount命令:掛載

語法:

 mount [-fnrsvw] [-t vfstype] [-o options] device(設備) dir(掛載點)

選項:

-t vsftype :指定要掛載的設備上的文件系統類型
-r: readonly ,只讀掛載
-w: read and write,  讀寫掛載
-n: 不更新/etc/mtab ,相當于#mount
-a :自動掛載所有支持自動掛載的設備( 定義在了/etc/fstab文件中,且掛載選項中有auto 功能)
-L 'LABEL': 以卷標指定掛載設備
-U 'UUID': 以UUID 指定要掛載的設備
-B, --bind: 可以實現將目錄綁定至另一個目錄上,作為其臨時訪問入口
    mount --bind 源目錄 目標目錄
查看內核追蹤到的已掛載的所有設備:cat /proc/mounts

-o選項的后接選項:

sync/async:同步/異步操作
atime/noatime:文件或目錄被讀取訪問時是否更新最近一次訪問時間戳
diratime/nodiratime:目錄在被訪問時是否更新其最近一次訪問時間戳
remount:重新掛載
acl:支持使用facl功能,默認不支持
    mount -o remount,acl /dev/sda3 /mnt
    tune2fs -o acl device
dev/nodev :此設備上是否允許創建設備文件
exec/noexec:是否允許運行此設備上的程序文件
auto/noauto:是否允許自動掛載
user/nouser:是否允許普通用戶掛載此文件系統
suid/nosuid:是否允許程序文件上的suid和sgid特殊權限生效
ro:只讀
rw:讀寫

查看當前系統所有已經掛載的設備

1)mount
2)cat /etc/mtab文件中,-n就是禁止此特性
3)cat /proc/mounts
4)findmnt MOUNT_POINT

查看正在訪問指定文件系統的進程

lsof MOUNT_POINT
fuser -v MOUNT_POINT

終止所有在正訪問指定的文件系統的進程

fuser -km MOUNT_POINT

卸載:umount命令

umount DEVICE
umount MOUNT_POINT

示例: 磁盤管理(1)

原創文章,作者:pao,如若轉載,請注明出處:http://www.www58058.com/42114

(0)
paopao
上一篇 2016-08-30 13:55
下一篇 2016-08-30 13:55

相關推薦

  • cp和ln命令簡述

    cp和軟ln命令簡述 cp          備注: 1.       該命令可以自動判斷你所復制的是文件還是目錄 2.       當源是一個文件,目標(目的…

    2017-08-19
  • 第五周作業:find、cut、grep用法

    第五周作業 1、顯示當前系統上root、fedora或user1用戶的默認shell; 2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,形如:hello(); 3、使用echo命令輸出一個絕對路徑,使用grep取出其基名; 擴展:取出其路徑名  4、找出ifconfig命令結果中的1-255之間數字; …

    Linux干貨 2016-11-28
  • nginx學習

    nginx    nginx的核心配置項:        Core functionality:核心配置,Glob配置段            daemon:是否開啟為守護進程        &nbs…

    2017-05-08
  • 一些基礎命令的基本用法介紹

    節選一部分常用參數用法 基礎命令 tty 切換X Window或命令行模式 Ctrl+Alt+F1~F6  tty1~tty6文字界面 Ctrl+Alt+F7  圖形界面 startx 登錄圖形界面系統 date 日期 date +%Y/%m/%d  當前日期 date +%H:…

    Linux干貨 2016-10-31
  • 第一周作業

    一、計算機的組成及其功能。 計算機是由運算器、控制器、存儲器、輸入設備、輸出設備五大部件組成,每一個部分分別按照要求執行特定的基本功能。 運算器:運算器的主要功能是對數據進行各種運算。 控制器:控制器是整個計算機系統的控制中心,它指揮計算機各部分協調地工作,保證計算機按照預先規定的目標和步驟有條不紊的進行操作及處理。 存儲器:存儲器的主要功能是存儲程序和各種…

    Linux干貨 2017-01-18
  • keepalived+nginx部署(單主模型)

    環境準備Centos7系統,后端服務器提供web服務。地址規劃: VS1: 172.18.51.7 VS2:172.17.51.77 RS1:172.18.51.74 RS2:172.18.51.75 VirtualIP:172.18.51.82 拓撲圖: 原理:nginx是高度模塊化的應用程序,其中nginx_proxy模塊即可實現負載均衡,將前端的用戶請…

    2017-05-17
欧美性久久久久