磁盤結構
一.概論
1.操作系統的組成部分:
硬件:
根據馮諾依曼體系,計算機的組成: 運算,控制器:cpu 存儲器:主存(ram); io設備: 輔存(rom):持久存儲 網卡:提供服務的出入口 顯示器:輸出設備 鍵鼠:輸入設備 總線: 尋址總線;連接cpu和內存的線纜,32bi 南橋:連接低速設備的線纜,如硬盤,輸入輸出設備 北橋:連接高速設備的線纜,如cpu,內存
硬盤分類:
機械硬盤: 傳統使用機械方式存儲的硬盤 固態(ssd): 使用電子方式存儲的硬盤 lops:io per second 執行io的次數 固態比機械高幾倍 以此評判硬盤的好壞 硬盤大小分類: 機械硬盤:容量大 500G-2T 價格實惠 易損壞 固態硬盤:容量小 120G-512G 價格昂貴 易保存 硬盤接口類型: 個人pc: IDE(ata):并口,133MB/s SATA:串口,第三代:6gbps USB:串口,480MB/s 企業: SCSI:并口 UItrascsl320 320MB/s UItrascsl640 640MB/s SAS:串口 6gbps 并口,同一線纜可以接多塊設備 IDE:兩個,主,從 SCSI: 寬帶:16-1 窄帶:8-1 串口:同一線纜只可以接一個設備
rpm:rotations
per minute
磁盤組成
,
機械硬盤結構圖:
磁道:track0 扇區:sector 512bytes 柱面:不同盤片相同磁道,分區根據柱面進行分區 平均尋道時間: 短--性能好(磁頭旋轉,等待磁盤旋轉的時間) 5400轉 7200轉 10000轉 轉速提高,尋道時間短 SSD組成: U盤的陣列 注:固態硬盤仿照機械硬盤的運作機制,MBR,扇區等
3.設備文件
linux的哲學思想: 一切皆文件 open(),read(),write(),close() 設備類型: 塊(block):隨機訪問,數據交換單位是"塊(block)" 字符(character):線性訪問,數據交換單位是"字符" 如:/dev/zero /devnull 設備文件:FHS 存放在 /dev/ 設備文件:關聯至一個設備的驅動程序,進而能夠跟之對應的硬件設備,進行通信(設備的訪問入口) 設備號: majir:主設備號,區分設備類型,用于表明設備所需要的驅動程序 minor:次設備號,區分同種類型下的不同設備,是特定設備的訪問入口; #crw-rw-rw- 1 root root 1, 7 Aug 26 02:25 full# 創建相同主次設備號,不同設備名稱的設備文件,代表同一文件
mknoad命令:創建設備文件命令
make block or chararcter speclal files
mknod [OPTIONS] …NAME TYPE [MAJOR MINOR]
-m MOD E: 創建后的設備文件的訪問權限
type:指定類型 c b
[major minor]:指定主次設備號
[root@w7 ~]# mknod qwe c 8 2
[root@w7 ~]# ll
crw-r–r– 1 root root 8, 2 Aug 26 04:59 qwe
mkond qwe1 d 8 1 在當前目錄下,建立一個設備文件,把該文件掛載到某文件中,可以訪問跟這個文件相同設備號的設備,相當于建立遠設備的第二的入口
磁盤設備的設備文件名:/dev/DEV_filename 磁盤接口標識: IDE:/dev/hd 例:/dev/hda /dev/hdc SCSI,SATA,USB,SAS:/dev/sd[a-z] 例:/dev/sda /dev/sdb 分區: /dev/sda#; 例:/dev/sda1 /dev/sdb2 注意:centos6 centos7通通將硬盤設備文件標識為/dev/sd[a-z]# 引用設備方式: 設備文件名,卷標,UUID
磁盤分區
1.為什么磁盤分區?
優化I/O性能 實現磁盤空間配額限制 提高修復速度 隔離系統和程序 安裝多個OS 采用不同文件系統
2分區類型
磁盤分區類型為兩種:MBR,GPT MBR(Master Boot Record):0 sector,磁盤的0號柱面的0號磁道的0編號扇區被稱作MBR;叫做主引導記錄,主引導扇區 按柱面分區 分為三個部分:(共512字節) 前面446byets:存放bootloaber,引導啟動操作系統的程序; 后邊64byets:DPT(Disk Pattition Table),標識硬盤分區表,每16個byets標識一個分區,一共只能有四個分區; 4主分區(小于等于4個) 3主1擴展: n個邏輯分區 最后2byets:MBR區域的有效性標識;55AA為有效; 主分區和擴展分區的標識是:1-4 擴展分區有EBR,記錄邏輯分區的分區信息以及下一個EBR的路徑 邏輯分區:只能從5開始
GPT:GUID( Globals Unique Identifiers) partitiontable 支持128個分區,使用64位,支持8Z(512Byte/block ) 64Z (4096Byte/block) 使用128位UUID 表示磁盤和分區 GPT分區表自動備份在頭和尾兩份,并有CRC校驗位 UEFI (統一擴展固件接口)硬件支持GPT,使操作系統啟動
3.查看分區
圖形化:
命令行:
管理分區
創建分區使用:
fdisk 創建MBR分區,也支持GPT,對于一塊硬盤,最多只能管理15分區 gdisk 創建GPT分區 GNU parted 高級分區操作(創建、復制、調整大小等等) partprobe-重新設置內存中的內核分區表版本
創建分區:
fdisk工具: fdisk -l [-u] [device...] fdisk提供了一個交互式接口來管理分區,它有許多子命令,分別用于不同的管理功能; 所有操作均在內存中進行,沒有直接同步到磁盤;直到使用w命令保存到磁盤上才會生效 選項: -l :查看硬盤信息 加分區名,可查看指定分區,默認是所有分區 不加選項,進入fdisk管理模式: 子命令: 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) fdisk -l /dev/sda Disk /dev/sda: 128.8 GB, 128849018880 bytes 255 heads, 63 sectors/track, 15665 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: 0x000a50bd Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 10469 83886080 83 Linux /dev/sda3 10469 13019 20480000 83 Linux /dev/sda4 13019 15666 21257216 5 Extended /dev/sda5 13019 13280 2097152 82 Linux swap / Solaris 對cenots6來說start是開始柱面,End是結束柱面,對centos7來說start是開始扇區,End是結束扇區 gdisk工具: gfisk /dev/sdb 類fdisk 的專業GPT分區工具
同步分區表:
在創建分區后,系統可能不會識別到新創建的分區,我們只能在不重啟設備的情況下,手工識別分區. 注意:在已經分區并且已經掛載其中某個分區的磁盤設備上創建的新分區,內核可能在創建完成后無法直接識別 查看內核是否已經識別新的分區: # cat /proc/partations #lsblk lsblk -f /dev/sd[a-z] 查看分區的文件系統類型 echo "---" > /sys/class/scsi_host/host2scan 刷新硬盤 centos6 echo "---" > /sys/class/scsi_host/host0/scan 刷新硬盤 centos7 通知內核重新讀取硬盤分區表 CentOS 5, 7: 使用partprobe Centos 6: 新增分區用 partx -a -n M:N /dev/DEVICE kpartx -a /dev/DEVICE -f: force 刪除分區用 partx -d -n M:N /dev/DEVICE centos6: –nr N-M parted命令: 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
鏈接文件:訪問同一個文件的不同路徑;
注意:符號鏈接文件的大小是其指向的文件的路徑字符串的字節數
硬鏈接:指向同一個inode的多個文件路徑, 創建硬鏈接命令 > - ln src link_file,ln 目標文件(原文件) 新創建的文件 > - 支持-v選項,顯示創建過程 特性 > - (1)目錄不支持硬鏈接 > - (2)硬鏈接不能跨文件系統 > - (3)創建硬鏈接會增減inode引用計數 符號連接:指向一個文件路徑的另一個文件路徑, 創建軟鏈接的命令 > - ln -s src link_file,ln -s 目標文件(原文件) 新創建的文件) > - 支持-v選項,顯示創建過程 特性 > - (1)符號鏈接與文件是兩個各自獨立的文件,各有自己的inode,對原文件創建符號鏈接不會增加引用計數 > - (2)支持對目錄創建符號鏈接,可以跨文件系統 > - (3)刪除符號鏈接不影響原文件,但刪除原文件,符號指定的路徑即不存在,此時會變成無效鏈接
管理文件系統
文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。 操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。 從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。 具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,加密等
1.文件系統類型
Linux文件系統: : ext2(Extended file system), ext3,ext4, xfs SGI) , btrfs( Oracle) , reiserfs, jfs(AIX) , swap 光盤: iso9660 Windows: fat32, ntfs Unix: FFS( fast) , UFS( unix) , JFS2 網絡文件系統: NFS, CIFS 集群文件系統: GFS2, OCFS2( oracle) 分布式文件系統: ceph, moosefs, mogilefs, glusterfs,Lustre RAW:未經處理或者未經格式化產生的文件系統
2.文件系統分類
根據其是否支持"journal"功能: 日志型文件系統: ext3, ext4, xfs, ... 非日志型文件系統: ext2, vfat 文件系統的組成部分: 內核中的模塊: ext4, xfs, vfat 用戶空間的管理工具: mkfs.ext4, mkfs.xfs,mkfs.vfat 內核文件系統的組成部分: lsmod:查看當前系統內核已經裝載的模塊 文件系統驅動:由內核提供 文件系統管理工具:由用戶空間的應用程序提供 查前支持的文件系統: cat /proc/filesystems Linux的虛擬文件系統: VFS
文件系統的選擇: 根據存儲數據的單個文件大小,及數據類型 首先要有日志,ext2,vfat可以淘汰了。 其次是看各自優勢,jfs似乎沒有明顯的優點,果斷還是直接用ext4省心。 XFS大文件速度快,reiserfs 作者殺妻子進去了基本等于死掉了,小文件性能是很不錯的。 fuse系列的文件系統不算原生的,但是如果有特別需求(比如ntfs、aufs)還是考慮使用一下。 本地兩個殺手級別的文件系統btrfs和zfs,都屬于開發中的(雖說已經production ready了),目前并沒有廣泛使用。
3.創建文件系統
格式化:低級格式化,(分區之前進行,劃分磁道)高級格式化(分區之后對分區進行,創建文件系統) 元數據區,數據區 元數據區:inode(index node) 文件:文件,大小權限,從屬關系,時間戳,數據塊指針... 符號鏈接文件:存儲數據指針的空間當中存儲的是真實文件的訪問路徑; 設備文件:存儲數據指針的空間當中存儲的是設備號(major,minor) 磁盤在劃分完元數據區和數據區以后要在數據去預留一段空間(工作空間)供超級用戶使用,在磁盤空間飽滿后用此段空間進行管理;刪除,整理。。。。。 位圖索引:每個inode號和每個磁盤數據塊都需要位圖索引來判斷是否被占用,位圖為0表示此位圖對應的inode號或者數據塊為空閑,1表示占用
mkfs命令:
(1) # mkfs.FS_TYPE /dev/DEVICE
ext4
xfs
btrfs
vfat
(2) # mkfs -t FS_TYPE /dev/DEVICE
-L 'LABEL': 設定卷標
-i #: 為數據空間中每多少個字節創建一個inode;此大小不應該小于block的大小
-N #:為數據空間創建個多少個inode
-I 一個inode記錄大小128—4096
-m #: 默認5%,為管理人員預留空間占總空間的百分比
-O FEATURE[,…]:啟用指定特性
-O ^FEATURE:關閉指定特性
mke2fs: ext系列文件系統專用管理工具
-t {ext2|ext3|ext4}
-b {1024|2048|4096}
-L 'LABEL'
-j: 相當于 -t ext3
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3-i #: 為數據空間中每多少個字節創建一個inode;此大小不應該小于block的大小
-N #:為數據空間創建個多少個inode
-I 一個inode記錄大小128—4096
-m #: 默認5%,為管理人員預留空間占總空間的百分比
-O FEATURE[,…]:啟用指定特性
-O ^FEATURE:關閉指定特性
centos6 默認不支持xfs 如果要安裝得先安裝xfsprogs工具
windows無法識別linux的文件系統;因此,存儲設備需要兩種系統之間交叉使用時,應該使用windows和linux同時支持的文件系統;fat32(vfat);
mkfs.vfat device
4.文件系統管理工具
blkid:塊設備屬性信息查看
blkid [OPTION]… [DEVICE]
-U UUID: 根據指定的UUID來查找對應的設備
-L LABEL:根據指定的LABEL來查找對應的設備
[root@w7 ~]# blkid /dev/sdc1: LABEL="qwecz" UUID="88c0011a-e573-4719-9757-b6e60ccfc08f" TYPE="ext4" PARTUUID="d44b6ba9-b442-469d-9dca-25a0e687f131" /dev/sdc2: UUID="12fe07e9-665d-485b-b040-10817289820c" TYPE="ext4" PARTUUID="0a301313-291d-4112-b13f-cd92c268274a" /dev/sda1: UUID="6c3c827d-60c8-4778-b9b0-439da928a614" TYPE="xfs" /dev/sda2: UUID="820ccbbb-45e5-4a16-89cc-7deeab7b6fdd" TYPE="xfs" /dev/sda3: UUID="a456c4bc-bb4d-4001-91e1-99a09f61943a" TYPE="swap" /dev/sr0: UUID="2015-12-09-22-36-30-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" [root@w7 ~]# blkid -U a456c4bc-bb4d-4001-91e1-99a09f61943a /dev/sda3 [root@w7 ~]# blkid -L qwecz /dev/sdc1 /dev/sdc1
uuidgen:可隨機生成UUID
findfs :查找分區,
findfs [options] LABEL=label
findfs [options] UUID=uuid
[root@w7 ~]# blkid /dev/sdc1: LABEL="qwecz" UUID="88c0011a-e573-4719-9757-b6e60ccfc08f" TYPE="ext4" /dev/sdc2: UUID="12fe07e9-665d-485b-b040-10817289820c" TYPE="ext4" /dev/sda1: UUID="6c3c827d-60c8-4778-b9b0-439da928a614" TYPE="xfs" /dev/sda2: UUID="820ccbbb-45e5-4a16-89cc-7deeab7b6fdd" TYPE="xfs" /dev/sda3: UUID="a456c4bc-bb4d-4001-91e1-99a09f61943a" TYPE="swap" /dev/sr0: UUID="2015-12-09-22-36-30-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" [root@w7 ~]# findfs LABEL=qwecz /dev/sdc1 [root@w7 ~]# findfs UUID=88c0011a-e573-4719-9757-b6e60ccfc08f /dev/sdc1
e2label:管理ext系列文件系統的LABEL
e2label DEVICE [LABEL]
[root@w7 ~]# e2label /dev/sdc1 命令跟分區名,查看分區的卷標 qwecz [root@w7 ~]# e2label /dev/sdc1 qesd 命令跟分區名加上新卷標,修改分區的卷標 [root@w7 ~]# e2label /dev/sdc1 qesd [root@w7 ~]#
5.超級塊
超級塊: 塊組的個數 每個塊組中塊的個數 塊的大小 空閑、已使用的磁盤塊個數 空閑indoe、已經被使用indoe個數
tune2fs:重新設定ext系列文件系統可調整參數的值
-l:查看指定文件系統超級塊信息; super block
-L 'LABEL':修改卷標 卷標一般表示為掛載點
-m #:修預留給管理員的空間百分比 可調為0
-j: 將ext2升級為ext3
-O: 文件系統屬性啟用或禁用, –O ^has_journal Filesystem features
-o: 調整文件系統的默認掛載選項,–o ^acl Default mount options
-U UUID: 修改UUID號
dumpe2fs:
-h:查看超級塊信息(分組信息),分區用分組管理
6.文件系統檢測和修復
常發生于死機或者非正常關機之后
掛載為文件系統標記為“ dirty”
fsck: File System Check
作用:用于實現文件系統檢測的工具 修復的工作特性就是把不連續的文件刪除
注意:在非掛載的情況下修復
因進程以外終止或系統崩潰等原有導致寫入操作非正常終止時,可能會造成文件損壞;此時,應該檢測并修復文件系統;建議,離線進行
fsck:check and repair a Linux file system
-t fstype:指明文件系統類型
fsck -t ext4 = fsck.ext4
-a:無需交互而自動檔修復所有錯誤;
-r: 交互式修復;
注意: FS_TYPE一定要與分區上已經文件類型相同;
e2fsck: ext系列文件專用的檢測修復工具
e2fsck:check a Linux ext2/ext3/ext4 file system
e2fsck[option]device
-y:自動回答為yes
-f:強制修復
掛載設備
根文件系統之外的其他文件系統要想能夠被訪問,都必須通過“關聯”至根文件系統上的某個目錄來實現,此關聯操作即為“掛載”;此目錄即為“掛載點”;
掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它文件訪問入口的行為
卸載:為解除此關聯關系的過程
把設備關聯掛載點: mount Point
mount
卸載時:可使用設備,也可以使用掛載點
umount
掛載點下原有文件在掛載完成后會被臨時隱藏
應該使用未被或不會被其他進程使用的目錄掛載
1.掛載命令
掛載方法: mount DEVICE MOUNT_POINT
mount:通過查看/etc/mtab文件顯示當前已掛載的所有設備
mount [-fnrsvw] [-t vfstype] [-o options] device dir
dir:掛載點
事先存在;建議使用空目錄
進程正在使用中的設備無法被卸載
掛載點目錄一般為空
device:指明要掛載的設備;
(1) 設備文件:例如/dev/sda5
(2) 卷標: -L 'LABEL', 例如 -L 'MYDATA'
(3) UUID, -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'
(4) 偽文件系統名稱: proc, sysfs, devtmpfs, configfs
命令選項:
-t vsftype:指定要掛載的設備上的文件系統類型,多數情況下可省略,此時mount會通過blkid來判斷要掛載的設備的文件系統類型
-r: readonly,只讀掛載
-w: read and write, 讀寫掛載
-n: 默認情況下,設備掛載或卸載的操作會同步更新至/etc/mtab文件中,-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, nosuid, dev, exec, auto, nouser, async
默認掛載的默認選項
mount /dev/sr0 /mnt
查看內核追蹤到的已掛載的所有設備:
cat /proc/mounts
一個使用技巧:
可以實現將目錄綁定在另一個目錄上,作為其臨時訪問入口;
mount --bind 源目錄 目標目錄
掛載本地的回環設備;
mount -o loop /path/to/some_loop_file mount_point
2.卸載命令
查看掛載情況:
findmnt MOUNT_POINT
mount
cat /etcmatb
cat /proc/mounts
查看正在訪問指定文件系統的進程:
lsof MOUNT_POINT
fuser -v MOUNT_POINT
終止所有在正訪問指定的文件系統的進程:
fuser -km MOUNT_POINT
卸載:
umount DEVICE
umount MOUNT_POINT
3.文件掛載配置文件:/etc/fstab
配置文件系統體系
被mount、 fsck和其它程序使用
系統重啟時保留文件系統體系
可以在設備欄使用文件系統卷標
使用mount -a 命令掛載/etc/fstab中的所有文件系統
設定除了根文件系統以外的其他文件系統能夠開機時自動掛載:/etc/fstab文件
/etc/fstab 每行定義一個要掛載的文件系統;
要掛載的設備或偽文件系統
掛載點
文件系統類型
掛載選項
轉儲頻率
自檢次序
要掛載的設備或偽文件系統: 設備文件 LABEL(LABEL="") UUID(UUID="") 偽文件系統名稱(proc,sysfs) 掛載點: swap類型的設備的掛載點為swap 其他的設備掛載點自定義指向某個路徑 文件系統: 使用blkid命令查看掛載分區的文件系統類型 掛載選項: defaults:使用默認的掛載選項 如果要同時指明多個掛載選項,彼此間以逗號分隔 轉儲頻率: 0:不做備份 1:每天轉儲 2:每隔一天轉儲 自檢次序: 0:不自檢 1:首先自檢;一般只有根文件系統才用1 2:次級自檢
交換分區
linux上的交換分區必須使用獨立的文件系統
且文件系統的system id 必須為82
交換分區是系統RAM的補充
1.基本設置包括:
? 創建交換分區或者文件
? 使用mkswap寫入特殊簽名
? 在/etc/fstab文件中添加適當的條目
? 使用swapon -a 激活交換空間
2.創建swap設備
mkswap命令:
mkswap [option] device -L label:指明卷標 -f:強制
3.掛載交換空間
啟用: swapon
swapon [OPTION]… [DEVICE]
-a:激活所有的交換分區;
-p PRIORITY:指定優先級
/etc/fstab:pri=value
禁用: swapoff [OPTION]… [DEVICE]
4.swap的優先級
用戶可以給某個swap指定一個0到32767的優先級 如果用戶沒有指定,那么核心會自動給swap指定一個優先級,這個優先級從-1開始,每加入一個新的沒有用戶 指定優先級的swap,會給這個優先級減一。先添加的swap的缺省優先級比較高,除非用戶自己指定 一個優先級,而用戶指定的優先級(是正數)永遠高于核心缺省指定的優先級(是負數)。 優化性能:分布存放,高性能磁盤存放
移動介質的掛載
掛載意味著使外來的文件系統看起來如同是主目錄樹的一部分
訪問前、介質必須被掛載
摘除時,介質必須被卸載
按照默認設置,非根用戶只能掛載某些設備(光盤、 DVD、軟盤、 USB等等)
掛載點通常在/media 或/mnt下
1.使用光盤介質
在圖形環境下自動啟動掛載
/run/media/<user>/<label>
否則就必須被手工掛載
mount -r /dev/cdrom /mnt/ mount /dev/sr0 /mnt/
卸載光盤:
umount /mnt eject命令也可卸載或彈出磁盤
創建ISO文件
cp /dev/cdrom /root/centos7.iso mkisofs -r -o /root/etc.iso /etc
刻錄光盤
wodim –v –eject centos.iso
2.掛載USB介質
被內核探測為SCSI設備
/dev/sdaX、 /dev/sdbX、或類似的設備文件
在圖形環境中自動掛載
圖標在[計算機]窗口中創建
掛載在/run/media//
手動掛載
mount /dev/sdb1 /mnt
手動卸載
umount /mnt
常見工具
1.隨機創建UUID號
[root@w7 mnt]# uuidgen 212506ac-f127-4ea8-b466-c2a61f17a229
2.查看磁盤命令
lsblk 查看磁盤命令
[root@w7 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT fd0 2:0 1 4K 0 disk sda 8:0 0 80G 0 disk ├─sda1 8:1 0 200M 0 part /boot ├─sda2 8:2 0 58.6G 0 part / └─sda3 8:3 0 2G 0 part [SWAP] sr0 11:0 1 7.2G 0 rom
3.hexdump 查看二進制文件
在磁盤可查看設備文件的MBR [root@w7 mnt]# hexdump -C -n 512 /dev/sdc 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001c0 01 00 ee fe ff ff 01 00 00 00 ff ff 7f 02 00 00 |................| 000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| 00000200
4.查看系統加載的模塊信息
lsmod命令: [root@w7 mnt]# lsmod Module Size Used by ext4 578819 0 mbcache 14958 1 ext4 jbd2 102940 1 ext4 nls_utf8 12557 0 isofs 39844 0 dm_mirror 22135 0 dm_region_hash 20862 1 dm_mirror
5. 內存空間使用狀態:
free [OPTION]
-m: 以MB為單位
-g: 以GB為單位
6.文件系統空間占用等信息的查看工具:
df [OPTION]… [FILE]…
-H 以1000為單位
-T 文件系統類型
-h: human-readable
-i: inodes instead of blocks
-P: 以Posix兼容的格式輸出
7.查看某目錄總體空間占用狀態:
du [OPTION]… DIR
-h: human-readable
-s: summary
8.工具dd
dd命令: convert and copy a file
用法:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
bs=#: block size, 復制單元大小
count=#:復制多少個bs
后跟選項:
of=file 寫到所命名的文件而不是到標準輸出
if=file 從所命名文件讀取而不是從標準輸入
bs=size 指定塊大?。仁鞘莍bs也是obs)
ibs=size 一次讀size個byte
obs=size 一次寫size個byte
cbs=size 一次轉化size個byte
skip=blocks 從開頭忽略blocks個ibs大小的塊
seek=blocks 從開頭忽略blocks個obs大小的塊
count=n 只拷貝n個記錄
conv=conversion[,conversion…] 用指定的參數轉換文件。
轉換參數:
ascii 轉換 EBCDIC 為 ASCII
ebcdic 轉換 ASCII 為 EBCDIC
block 轉換為長度為 cbs 的記錄,不足部分用空格填充。
nblock 替代cbs長度的每一行尾的空格為新行
lcase 把大寫字符轉換為小寫字符
ucase 把小寫字符轉換為大寫字符
swab 交換輸入的每對字節
noerror 出錯時不停止
notrunc 不截短輸出文件
sync 把每個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊
用法:
磁盤拷貝:
dd if=/dev/sda of=/dev/sdb
備份MBR:
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
破壞MBR中的bootloader:
dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446備份:
將本地的/dev/sdx整盤備份到/dev/sdy
dd if=/dev/sdx of=/dev/sdy
將/dev/sdx全盤數據備份到指定路徑的image文件
dd if=/dev/sdx of=/path/to/image
備份/dev/sdx全盤數據,并利用gzip工具進行壓縮,保存到指定路徑
dd if=/dev/sdx | gzip >/path/to/image.gz恢復:
將備份文件恢復到指定盤
dd if=/path/to/image of=/dev/sdx
將壓縮的備份文件恢復到指定盤
gzip -dc /path/to/image.gz | dd of=/dev/sdx拷貝內存資料到硬盤
將內存里的數據拷貝到root目錄下的mem.bin文件
dd if=/dev/mem of=/root/mem.bin bs=1024從光盤拷貝iso鏡像
拷貝光盤數據到root文件夾下,并保存為cd.iso文件
dd if=/dev/cdrom of=/root/cd.iso銷毀磁盤數據
dd if=/dev/urandom of=/dev/sda1
利用隨機的數據填充硬盤,在某些必要的場合可以用來銷毀數據執行此操作以后, /dev/sda1將無法掛載,創建和拷貝操作無法執行。得到最恰當的block size
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=12500 of=/root/1Gb.file
通過比較dd指令輸出中所顯示的命令執行時間,即可確定系統 最佳的block size大小測試硬盤讀寫速度
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
通過上兩個命令輸出的執行時間,可以計算出測試硬盤的讀/寫 速度修復硬盤
dd if=/dev/sda of=/dev/sda
當硬盤較長時間(比如1, 2年)放置不使用后,磁盤上會產生消磁點。當磁頭讀到這些區域時會遇到困難,并可能導致I/O錯誤。當這種情況影響到硬盤的第一個扇區時 ,可能導致硬盤報廢。上邊的命令有可能使這些數據起死回生。且這個過程是安全,高效的。有一個大與2K的二進制文件fileA。 現在想從第64個字節位置開始讀取,需要讀取的大小是128Byts。又有fileB, 想把上面讀取到的128Bytes寫到第32個字節開始的位置,替換128Bytes,請問如何實現?
dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
實戰:
1、創建一個2G的文件系統,塊大小為2048byte, 預留1%用空間,文件系統ext4,卷標為TEST,要求此分區開機后自動掛載至/testdir目錄,且默認有acl掛載選項
2、寫一個腳本,完成如下功能:
(1) 列出當前系統識別到的所有磁盤設備
(2) 如磁盤數量為1,則顯示其空間使用信息
否則,則顯示最后一個磁盤上的空間使用信
原創文章,作者:wencx,如若轉載,請注明出處:http://www.www58058.com/40376