盤管理和文件系統
一、磁盤結構
1. 設備文件
I/O Ports: I/O設備地址
一切皆文件:open(), read(), write(), close()
設備類型:
塊設備:block,存取單位“塊”,磁盤
字符設備:char,存取單位“字符”,鍵盤
設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信
設備號碼:
主設備號:major number, 標識設備類型
次設備號:minor number, 標識同一類型下的不同設備
磁盤設備的設備文件命名:/dev/DEV_FILE
SCSI, SATA, SAS, IDE,USB: /dev/sd
虛擬磁盤:/dev/vd 、/dev/xvd
不同磁盤標識:a-z,aa,ab…
/dev/sda, /dev/sdb, ...
同一設備上的不同分區:1,2, ...
/dev/sda1, /dev/sda5
硬盤存儲術語
head:磁頭
track:磁道
cylinder:柱面
sector:扇區,512bytes
CHS和LBA
CHS
採用24bit位尋址
其中前10位表示cylinder,中間8位表示head,後面6位表示sector
最大尋址空間8GB
LBA(logical block addressing)
LBA是一個整數,通過轉換成CHS格式完成磁盤具體尋址
ATA-1規範中定義了28位尋址模式,以每扇區512位組來計算,ATA-1所定
義的28位LBA上限達到128 GiB。2002年ATA-6規範採用48位LBA,同樣以
每扇區512位組計算容量上限可達128 Petabytes
由於CHS尋址方式的尋址空間在大概8GB以內,所以在磁盤容量小於大概8GB
時,可以使用CHS尋址方式或是LBA尋址方式;在磁盤容量大於大概8GB時,則
只能使用LBA尋址方式
2. 磁盤結構類型
並行:
IDE:133MB/s
SCSI:640MB/s
串口:
SATA:6Gbps
SAS:6Gbps
USB:480MB/
機械硬盤和固態硬盤的區別:
機械硬盤(HDD):Hard Disk Drive,即是傳統普通硬盤,主要由:盤片,磁頭,盤
片轉軸及控制電機,磁頭控制器,數據轉換器,接口,緩存等幾個部分組成。機械硬盤
中所有的盤片都裝在一個旋轉軸上,每張盤片之間是平行的,在每個盤片的存儲面上有
一個磁頭,磁頭與盤片之間的距離比頭髮絲的直徑還小,所有的磁頭聯在一個磁頭控制
器上,由磁頭控制器負責各個磁頭的運動。磁頭可沿盤片的半徑方向運動,加上盤片每
分鐘幾千轉的高速旋轉,磁頭就可以定位在盤片的指定位置上進行數據的讀寫操作。數
據通過磁頭由電磁流來改變極性方式被電磁流寫到磁盤上,也可以通過相反方式讀取。
硬盤爲精密設備,進入硬盤的空氣必須過濾
固態硬盤(SSD):Solid State Drive,用固態電子存儲芯片陣列而製成的硬盤,由控制單元和存儲單元(FLASH芯片、
DRAM芯片)組成。固態硬盤在接口的規範和定義、功能及使用方法上與普通硬盤的完全相同,在產品外形和尺寸上也與普通硬盤一致
相較於HDD,SSD在防震抗摔、傳輸速率、功耗、重量、噪音上有明顯優勢,SSD傳輸速率性能是HDD的2倍
相較於SSD,HDD在價格、容量佔有絕對優勢
硬盤有價,數據無價,目前SSD不能完全取代HHD
二、分區類型
1.使用分區空間
1)設備識別
2)設備分區
3)創建文件系統
4)標記文件系統
5)在/etc/fstab文件中創建條目
6)掛載新的文件系統
2.分區的優點
1)優化I/O性能
2)實現磁盤空間配額限制
3)提高修復速度
4)隔離系統和程序
5)安裝多個OS
6)採用不同文件系統
3.分區
兩種分區方式:MBR,GPT
MBR: Master Boot Record,1982年,使用32位表示扇區數,分區不超過2T
如何分區:按柱面
0磁道0扇區:512bytes
446bytes: boot loader
64bytes:分區表,其中每16bytes標識一個分區
2bytes: 55AA
MBR分區中一塊硬盤最多有4個主分區,也可以3主分區+1擴展(N個邏輯分區)
GPT分區
1.GPT:GUID(Globals Unique Identifiers) partition table 支持128個分區,使用64位,支持8Z( 512Byte/block )64Z ( 4096Byte/block)
2.使用128位UUID(Universally Unique Identifier) 表示磁盤和分區 GPT分區表自動備份在頭和尾兩份,並有CRC校驗位
3.UEFI (Unified Extensible Firmware Interface 統一可擴展固件接口)硬件支持GPT,使操作系統啓動
EFI部分又可以分爲4個區域:EFI信息區(GPT頭)、分區表、GPT分區、備份區域
4.BIOS+MBR與UEFI+GPT
三、管理分區
1.管理分區
列出塊設備
lsblk
創建分區使用:
fdisk 創建MBR 分區
gdisk 創建GPT 分區
parted 高級分區操作
重新設置內存中的內核分區表版本
partprobe
2.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 列出分區信息
( 1 ) 創建分區前查看全新的磁盤屬性
hexdump - Cv - n512 / dev/ sdb
fdisk - l / dev/ sdb
lsblk
( 2 ) 創建gpt/ MBR 分區
parted / dev/ sdb mklabel gpt/ msdos
查看創建成功的分區屬性信息
parted / dev/ sdb print
( 3 ) 在剛創建的分區中創建主分區 ( 默認是以M 爲單位)
parted / dev/ sdb mkpart primary 1 200
parted / dev/ sdb mkpart primary 200 400
( 4 ) 刪除主分區
parted / dev/ sdb rm 1
1 ) 如果想創建從1 - 3000 的主分區可以嘛?
答案是不可以
parted / dev/ sdb mkpart primary 1 3000
輸入yes
查看結果會發現只有1 - 200 的主分區生成了後面的生成不了, 由於有主分區2的存在
( 5 ) 查看磁盤分區的屬性信息
parted - l
可以看出/ dev/ sdb磁盤存在gpt標識符, 所以通過第六步來刪除標識符
( 6 ) 恢復該分區的爲空白的標識符
dd if = / dev/ zero of = / dev/ sdb bs= 1 count= 2 seek= 510
parted / dev/ sdb print
3.分區工具fdisk和gdisk
gdisk / dev/ sdb 類fdisk 的GPT 分區工具
fdisk - l [ - u] [ device... ] 查看分區
fdisk / dev/ sdb 管理分區
子命令:
p 分區列表
t 更改分區類型
n 創建新分區
d 刪除分區
v 校驗分區
u 轉換單位
w 保存並退出
q 不保存並退出
查看分區是否成果:
lsblk
cat / proc/ partitions
ls / dev/ sdb*
fdisk - l / dev/ sdb
4.同步分區表
同步分區表 ( 一般已經存在分區的磁盤再次分區就可能需要同步, 注意看w退出的時候也沒有報出WARNING 的警告)
cat / proc/ partitions
centos6通知內核重新讀取硬盤分區表
新增分區用
partx - a / dev/ DEVICE
kpartx - a / dev/ DEVICE - f: force
刪除分區用
partx - d -- nr M - N / dev/ DEVICE
CentOS 5 ,7 : 使用partprobe
partprobe [ / dev/ DEVICE ]
克隆分區表 ( 一般如果兩個磁盤一樣大小, 和主磁盤只有主分區的沒有擴展分區的情況可以使用)
dd if = / dev/ sda of = / dev/ sdb bs= 1 count= 64 skip= 446 seek= 446
小技巧快速刪除磁盤的分區表
dd if = / dev/ zero of = / dev/ sdb bs= 1 count= 66 seek= 446
四、管理文件系統
1.文件系統
1.文件系統是操作系統用於明確存儲設備或分區上的文件的方法和數據結構;即
在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結
構稱爲文件管理系統,簡稱文件系統
2.從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文
件存儲並對存入的文件進行保護和檢索的系統。具體地說,它負責爲用戶建立
文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日誌,壓
縮,加密等
3.支持的文件系統:/lib/modules/`uname –r`/kernel/fs
4.各種文件系統:https://en.wikipedia.org/wiki/Comparison_of_file_systems
文件系統類型
1.Linux文件系統:
ext2(Extended file system) :適用於那些分區容量不是太大,更新也不頻繁的情況,例如 /boot 分區
ext3:是 ext2 的改進版本,其支持日誌功能,能夠幫助系統從非正常關機導致的異常中恢復。它通常被用作通用的文件系統
ext4:是 ext 文件系統的最新版。提供了很多新的特性,包括納秒級時間戳、創建和使用巨型文件(16TB)、最大1EB的文件系統,以及速度的提升
xfs:SGI,支持最大8EB的文件系統
btrfs(Oracle), reiserfs, jfs(AIX), swap
2.光盤:iso9660
3.Windows:FAT32, exFAT,NTFS
4.Unix: FFS(fast), UFS(unix), JFS2
5.網絡文件系統:NFS, CIFS
6.集羣文件系統:GFS2, OCFS2(oracle)
7.分佈式文件系統: fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
8.RAW:未經處理或者未經格式化產生的文件系統
文件系統分類:
1.根據其是否支持"journal"功能:
日誌型文件系統: ext3, ext4, xfs, ...
非日誌型文件系統: ext2, vfat
2.文件系統的組成部分:
內核中的模塊:ext4, xfs, vfat
用戶空間的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
3.Linux的虛擬文件系統:VFS
4.查前支持的文件系統:cat /proc/filesystems
2.創建ext文件系統
mkfs命令:
( 1 ) mkfs. FS_TYPE / dev/ DEVICE ( 一般情況用該命令來創建文件系統)
ext4
xfs
btrfs
vfat
( 2 ) mkfs - t FS_TYPE / dev/ DEVICE
- L 'LABEL' 設定卷標
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 關閉指定特性
例子:
mkfs. ext2 - b 1024 - m 1 - I 128 - L / mnt/ sdb2 / dev/ sdb2
創建ext2文件系統, 指定塊大小爲1024 爲管理人員預留百分之1 的空間, 並且一個inode記錄佔用磁盤空間128 字節, 和設置/ mnt/ sdb2爲卷標. blkid命令查看屬性
blkid:塊設備屬性信息查看 ( 常用)
blkid [ OPTION ] ... [ DEVICE ]
- U UUID 根據指定的UUID 來查找對應的設備
- L LABEL 根據指定的LABEL 來查找對應的設備
e2label:管理ext系列文件系統的LABEL
e2label DEVICE [ LABEL ]
findfs :查找分區
findfs [ options] LABEL = < label>
findfs [ options] UUID = < uuid>
tune2fs:重新設定ext系列文件系統可調整參數的值
- l 查看指定文件系統超級塊信息;super block
- L 'LABEL ’ 修改卷標
- m # 修預留給管理員的空間百分比
- j 將ext2升級爲ext3
- O 文件系統屬性啓用或禁用, –O ^ has_journal
- o 調整文件系統的默認掛載選項,–o ^ acl
- U UUID 修改UUID 號
例子:
tune2fs - O has_journal / dev/ sdb2
將ext2文件系統改爲ext3
tune2fs - U d4b50a2e- cc32- 4 a22- 8 a3a- 9 c9943338c52 / dev/ sdb2
修改uuid
tune2fs - L / mnt/ sdb / dev/ sdb2
修改卷標
dumpe2fs:顯示ext文件系統信息,將磁盤塊分組管理
- h:查看超級塊信息,不顯示分組信息
例子:
dumpe2fs - h / dev/ sdb2
xfs_info:顯示已掛載的 xfs 文件系統信息
xfs_info mountpoint
例子:
mount / dev/ sdb1 / data/ sdb1/
xfs_info / data/ sdb1/
3.文件系統檢測和修復
文件系統夾故障常發生於死機或者非正常關機之後,掛載爲文件系統標記爲“no clean”
注意:一定不要在掛載狀態下執行下面命令修復
fsck: File System Check
fsck. FS_TYPE
fsck - t FS_TYPE
注意:FS_TYPE 一定要與分區上已經文件類型相同
- a 自動修復
- r 交互式修復錯誤
e2fsck:ext系列文件專用的檢測修復工具
- y 自動回答爲yes
- f 強制修復
- p 自動進行安全的修復文件系統問題
xfs_repair:xfs文件系統專用檢測修復工具
- f 修復文件,而設備
- n 只檢查
- d 允許修復只讀的掛載設備,在單用戶下修復 / 時使用,然後立即reboot
總結
文件系統管理工具
通用:mkfs、blkid、fsck
ext系列文件系統專用工具:mke2fs、dumpe2fs、tune2fs、e2label、e2fsck
五、掛載設備
1.掛載mount
掛載方法:mount DEVICE MOUNT_POINT
mount:通過查看/ etc/ mtab文件顯示當前已掛載的所有設備
mount [ - fnrsvw] [ - t vfstype] [ - o options] device dir
device:指明要掛載的設備;
( 1 ) 設備文件:例如/ dev/ sda5
( 2 ) 卷標:- L 'LABEL' , 例如 - L 'MYDATA'
( 3 ) UUID , - U 'UUID' :例如 - U '0 c50523c- 43 f1- 45e7 -
85 c0- a126711d406e'
( 4 ) 僞文件系統名稱:proc, sysfs, devtmpfs, configfs
dir:掛載點
事先存在,建議使用空目錄
進程正在使用中的設備無法被卸載
命令選項:
- t vsftype 指定要掛載的設備上的文件系統類型
- r readonly,只讀掛載
- w read and write, 讀寫掛載
- n 不更新/ etc/ mtab,mount不可見
- a 自動掛載所有支持自動掛載的設備 ( 定義在了/ etc/ fstab文件
中,且掛載選項中有auto功能)
- L 'LABEL' 以卷標指定掛載設備
- U 'UUID' 以UUID 指定要掛載的設備
- B , -- bind 綁定目錄到另一個目錄上
查看內核追蹤到的已掛載的所有設備
cat / proc/ mounts
- o options: ( 掛載文件系統的選項) ,多個選項使用逗號分隔
async 異步模式 sync 同步模式, 內存更改時,同時寫磁盤
atime/ noatime 包含目錄和文件
diratime/ nodiratime 目錄的訪問時間戳
auto/ noauto 是否支持自動掛載, 是否支持- a選項
exec/ noexec 是否支持將文件系統上運行應用程序
dev/ nodev 是否支持在此文件系統上使用設備文件
suid/ nosuid 是否支持suid和sgid權限
remount 重新掛載
ro 只讀 rw 讀寫
user/ nouser 是否允許普通用戶掛載此設備,/ etc/ fstab使用
acl 啓用此文件系統上的acl功能
loop 使用loop設備
defaults:相當於rw, suid, dev, exec, auto, nouser, async
例子:
( 1 ) 只讀掛載, 不能創建文件
mount - r / dev/ sdb1 / data/ sdb1/
( 2 ) 相當於重新掛載, 一般都用該命令, 當/ 目錄需要重新掛載的時候必須用該方法
mount - o remount, rw / data/ sdb1/
( 3 ) 把一個文件系統掛載多個目錄 ( 可以看到相同的文件)
mount / dev/ sdb1 / data/ sdb1/
mount / dev/ sdb1 / data/ sdb2/
tree / data/ sd*
df查看是看不到/ dev/ sdb1掛載在哪兩個目錄下的, 需要用mount查看
( 4 ) 後掛載的文件系統會覆蓋舊掛載的文件 ( 一般情況掛載文件系統選擇空的目錄)
mount / dev/ sdb1 / data/ sdb2
mount / dev/ sdb2 / data/ sdb2
可以看到/ data/ sdb2的文件消失了
umount / dev/ sdb2
可以看到/ data/ sdb2的文件回覆了
umount / data/ sdb2 ( 使用該和使用umount / dev/ sdb2一樣, 如果需要把掛載的文件系統全部取消需要umount兩次)
( 5 ) 文件夾往文件夾掛載 ( 就像可以解決硬鏈接不能掛目錄的功能)
mount - B / boot/ / data/ boot/
( 6 ) 文件往目錄掛載 ( centos7) ( 可以使用當u盤使用, 寫完的文件可以傳輸給其他系統然後對方只要掛載就可以看到裏面的文件了)
1 ) 創建二進制文件
dd if = / dev/ zero of = / data/ disk bs= 1 M count= 100
2 ) 二進制文件格式化成xfs文件系統
mkfs. xfs / data/ disk
blkid / data/ disk
3 ) 將文件往目錄進行掛載
mkdir - p / data/ mnt/ disk ; mount / data/ disk / data/ mnt/ disk
ls / data/ mnt/ disk/
touch / data/ mnt/ disk/ f2. txt
losetup - a ( 查看掛載情況mount也可以和df可以看到)
注: centos6, 掛載的時候需要加- o loop,
1. 由於centos6默認只有8 個loop所以不夠使用需要自己創建loop
mknod / dev/ loop100 b 7 100
ll / dev/ loop*
2. 可以系統啓動的時候自動創建多個loop設備
vim / boot/ grub/ grub. conf
在kernel行最後加入max_loop= 100 ( 數量自己寫)
( 7 ) centos6中如果掛載的文件系統沒有acl功能
mount - o remount, acl / dev/ sdb1
2.卸載命令
查看掛載情況
findmnt MOUNT_POINT | device
查看正在訪問指定文件系統的進程
lsof MOUNT_POINT
fuser - v MOUNT_POINT
終止所有在正訪問指定的文件系統的進程
fuser - km MOUNT_POINT
卸載
umount DEVICE
umount MOUNT_POINT
掛載點和/ etc/ fstab
配置文件系統體系
被mount、fsck和其它程序使用
系統重啓時保留文件系統體系
可以在設備欄使用文件系統卷標
使用mount - a 命令掛載/ etc/ fstab中的所有文件系統
/ etc/ fstab每行定義一個要掛載的文件系統
1 、要掛載的設備或僞文件系統
設備文件
LABEL :LABEL = ""
UUID :UUID = ""
僞文件系統名稱:proc, sysfs
2 、掛載點
3 、文件系統類型:ext4,xfs,iso9660,nfs,none
4 、掛載選項:defaults ,acl,bind
5 、轉儲頻率:0 :不做備份 1 :每天轉儲 2 :每隔一天轉儲
6 、fsck檢查的文件系統的順序:允許的數字是0 1 2
0 :不自檢
1 :首先自檢;一般只有rootfs才用
2 :非rootfs使用
例子:
1. 查看掛載的磁盤是否有用在使用 ( 在隔壁窗口打開另一個連接, 然後進入到對應的目錄下) :
fuser - v / data/ sdb1
fuser - km / data/ sdb1
2. 查看掛載的情況:
findmnt / data/ sdb1
findmnt / dev/ sdb1
TARGET SOURCE FSTYPE OPTIONS
/ data/ sdb1 / dev/ sdb1 xfs rw, relatime, attr2, inode64, noquota
1 ) 取消掛載
umount / data/ sdb1
findmnt / data/ sdb1
echo $? 輸出的結果是1 , 可以通過這樣來判斷目錄是否被掛載成功了, 如果輸入結果是1 那麼就重新開始掛載,
3. 把掛載的屬性信息寫入文件, 完成開機自動掛載或者通過 ( mount - a) :
1 ) vim / etc/ fstab ( 在查看模式進入: r ! blkid / dev/ sdb1)
2 ) 根據格式寫入
UUID = f5ea93ef- 1686 - 4 c26- 9780 - 2 ec9ec350e2b / data/ sdb1 xfs defaults 0 0
3 ) 保存退出
mount - a
df
注意: 在centos6的話可以在defaults這個選項修改爲acl這樣掛載的時候自動啓動acl的功能,
( tune2fs - l / dev/ sdb1) 可以查看是沒有acl功能的, 也可以在一開始創建文件系統的時候
通過tune2fs命令來添加功能, 具體看上文.
4. 創建新的磁盤空間來掛載/ home目錄
1 ) 創建磁盤空間給/ home目錄
gdisk / dev/ sdb ( 添加: n 大小: + 5 G 格式: 8200 保存退出: w)
2 ) 查看有沒有劃分成功, 需要同步一下數據
lsblk
partprobe
blkid / dev/ sdb4
3 ) 格式化文件系統
mkfs. xfs / dev/ sdb4
4 ) 先將創建好的文件系統掛載空目錄上再把/ home目錄下文件拷貝過來
mkdir / data/ mnt/ sdb4
mount / dev/ sdb4 / data/ mnt/ sdb4
cp - av / home/ . / data/ mnt/ sdb4/
5 ) 查看兩個文件夾大小是否相同
du - sh / data/ mnt/ sdb4
du - sh / home/
6 ) 將/ dev/ sdb4掛載到/ home目錄
mount / dev/ sdb4 / home/
注意: 一般情況下都是會進去單用戶模式來進行添加 ( init 1 ) 避免有其他用戶在使用/ home目錄
六、管理虛擬內存
1.交換分區
1. swap交換分區是系統RAM 的補充,Swap 分區支持虛擬內存。當沒有足夠的RAM 保存系統處理的數據時會將數據寫入 swap 分區
2. 當系統缺乏 swap 空間時,內核會因 RAM 內存耗盡而終止進程。配置過多swap 空間會造成存儲設備處於分配狀態但閒置,造成浪費,過多 swap 空間還會掩蓋內存泄露
3. 基本設置包括:
• 創建交換分區或者文件
• 使用mkswap寫入特殊簽名
• 在/ etc/ fstab文件中添加適當的條目
• 使用swapon - a 激活交換空間
4. 啓用:swapon
swapon [ OPTION ] ... [ DEVICE ]
- a:激活所有的交換分區
- p PRIORITY :指定優先級
/ etc/ fstab 在第4 列中:pri= value
5. 禁用:swapoff [ OPTION ] ... [ DEVICE ]
6. 可以指定swap分區0 到32767 的優先級,值越大優先級越高
7. 如果用戶沒有指定,那麼核心會自動給swap指定一個優先級,這個優先級從- 1 開始,每加入一個新的沒有用戶指定優先級的swap,會給這個優先級減一
8. 先添加的swap的缺省優先級比較高,除非用戶自己指定一個優先級,而用戶指定的優先級 ( 是正數) 永遠高於核心缺省指定的優先級 ( 是負數)
9. 優化性能:分佈存放,高性能磁盤存放
例子:
( 1 ) 創建新的一個swap分區:
1 ) 將一個磁盤劃分成swap格式
gdisk / dev/ sdb ( 添加: n 大小: + 4 G 格式: 8200 保存退出: w)
2 ) 查看有沒有劃分成功, 需要同步一下數據
lsblk
partprobe
blkid / dev/ sdb3
3 ) 格式化系統
mkswap / dev/ sdb3
blkid / dev/ sdb3
4 ) 掛載swap分區
swapon - a / dev/ sdb3
5 ) 查看結果
swapon - s
free - h
6 ) 將創建的swap分區寫到文件中, 可以將新創建的swap分區作爲首個分區, 主要是優先級修改大一些就好了
vim / etc/ fstab ( 在查看模式進入: r! blkid / dev/ sdb3)
UUID = 04459e83 - 7 d3d- 4713 - 94 a9- 0 fd1f8714126 swap swap pri= 10 0 0
swapoff - a
swapon - s
7 ) 小測試
dd if = / dev/ zero of = / dev/ null bs= 3 G count= 1
swapon - s
Filename Type Size Used Priority
/ dev/ sda3 partition 4194300 0 - 1
/ dev/ sdb3 partition 4194300 121568 10
可以看出不再是先使用一開始創建的swap分區了, 已經使用了剛纔創建的/ dev/ sdb3的分區了
( 2 ) 用文件來創建swap分區
1 ) 創建文件
dd if = / dev/ zero of = / swapfile bs= 1 M count= 2048
2 ) 創建swap分區系統
mkswap / swapfile
3 ) 查看創建後的結果
blkid / swapfile
4 ) 掛載分區
swapon - a / swapfile
chmod 600 / swapfile
swapon - s
注: 寫入/ etc/ fstab文件的話只能寫文件名字不能寫uuid
/ swapfile swap swap defaults 0 0
擴展: 文件夾掛載到文件夾的情況
/ boot / mnt/ boot none bind 0 0
掛載光盤
/ dev/ sr0 / mnt/ cdrom iso9660 defaults 0 0
七、實驗
( 1 ) 備份磁盤的分區表
dd if = / dev/ sda of = / data/ zjl bs= 1 count= 66 skip= 446
hexdump - C / data/ zjl
( 2 ) 消除磁盤有效標識符55 AA
dd if = / dev/ zero of = / dev/ sda bs= 1 count= 2 seek= 510
查看是否消除成功, 二進制文件方式:
hexdump - C - n 512 / dev/ sda
內存方式:
lsblk / dev/ sda ( 內存中的不是更新, 只有文件的纔會, 因爲數據已經被寫到內存中了)
文件方式:
fdisk - l / dev/ sda
( 3 ) 恢復磁盤有效標識符 ( 通過剛纔備份的文件來恢復) :
dd if = / data/ zjl of = / dev/ sda bs= 1 count= 2 skip= 64 seek= 510
查看是否恢復成功. 和上面命令一樣
( 4 ) 消除磁盤的分區表
dd if = / dev/ zero of = / dev/ sda bs= 1 count= 64 seek= 446
查看是否恢復成功. 和上面命令一樣, ( 用文件方式查看會和上面第二步驟看到的結果不一樣, 這次是有標識符的, 但是沒有分區表)
( 5 ) 如果系統重啓後該怎麼修復
1 ) 首先要把備份好的分區表文件傳輸到其他機器
scp / data/ zjl IP 地址A : / data
2 ) 系統重啓後進入救援模式
3 ) 在救援模式系統配置一個ip ( 或者可以通過u盤拷貝文件過來)
ifconfig eno16777736 192.168 .31 .166 / 24
ip addr
4 ) 從遠程拷貝分區表文件
scp IP 地址A : / data/ zjl .
5 ) 恢復分區表
dd if = zjl of = / dev/ sda bs= 1 count= 64 seek= 446
查看命令同上
6 ) 需要刷新內存的數據到磁盤中
sync ( 多刷幾下, 稍等一會再重啓就好了)
移動介質
1. 掛載意味着使外來的文件系統看起來如同是主目錄樹的一部分
2. 訪問前,介質必須被掛載
3. 摘除時,介質必須被卸載
4. 按照默認設置,非根用戶只能掛載某些設備(光盤、DVD 、軟盤、USB 等等)
5. 掛載點通常在/ media 或/ mnt下
使用光盤
在圖形環境下自動啓動掛載/ run/ media/ < user> / < label>
否則就必須被手工掛載
mount / dev/ cdrom / mnt/
操作光盤:
eject 彈出光盤
eject - t 彈入光盤
創建ISO 文件
cp / dev/ cdrom / root/ centos. iso
mkisofs - r - o / root/ etc. iso / etc
刻錄光盤
wodim –v –eject centos. iso
掛載USB 介質
查看USB 設備是否識別
lsusb
被內核探測爲SCSI 設備
/ dev/ sdaX、/ dev/ sdbX或類似的設備文件
在圖形環境中自動掛載
圖標在[ 計算機] 窗口中創建
掛載在/ run/ media/ < user> / < label>
手動掛載
mount / dev/ sdb1 / mnt
八、練習
1 、創建一個2 G的文件系統,塊大小爲2048 byte,預留1 % 可用空間, 文件系統ext4,卷標爲TEST ,要求此分區開機後自動掛載至/ test目錄,且默認有acl掛載選項
2 、寫一個腳本,完成如下功能:
( 1 ) 列出當前系統識別到的所有磁盤設備
( 2 ) 如磁盤數量爲1 ,則顯示其空間使用信息
否則,則顯示最後一個磁盤上的空間使用信息
3 、將CentOS6的CentOS- 6.10 - x86_64- bin- DVD1 . iso和CentOS- 6.10 - x86_64- bin- DVD2 . iso兩個文件,合併成一個CentOS- 6.10 - x86_64- Everything. iso文件,並將其配置爲yum源