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):主引導記錄
一般將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):全局唯一標識符分區表
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等等
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是否有壞軌
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;檢查是否有損壞的區塊
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>
示例:
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。
示例:
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)超級塊
超級塊的作用是存儲文件系統的大小、有多少是空的和已經填滿的占多少,以及它們各自的總數和其他信息。超級塊占用第一號物理塊,應該做好備份。
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
示例:
原創文章,作者:pao,如若轉載,請注明出處:http://www.www58058.com/42114