1. 程式人生 > >文件系統的簡單操作——磁盤

文件系統的簡單操作——磁盤

磁盤分區 掛載 卸載 dd命令

引言:

 用過LINUX系統的都知道,在LINUX的系統中,一切皆文件。而對於計算機上的文件來說,它們就是磁盤設備上的有著不同排列方式的0和1。如果你說我這段話和蘇軾的《水調歌頭》對於計算機來說有什麽不同。那我也只能說,其實也就是0和1的排列方式不同而已!因此若想真正的了解LINUX上更為高級的文件系統,那麽了解並熟練運用磁盤是不可或缺的一步。

 對於磁盤,本人的認識也很淺顯。但是本著分享的原則我還是要說一些自己的一些小小的看法和經驗,希望對於像我這樣的初學者能夠有所幫助,或者減輕一些學習的負擔。個人認為最簡單也是最直接有效的磁盤使用方法就是如此。本文中所有個人感覺比較重要的命令選項都已高亮顯示方便初學者重點記憶


技術分享圖片

磁盤分區:

 gfisk /dev/sdb 類fdisk 的GPT分區工具

 fdisk /dev/sdb 管理分區

子命令
p 分區列表
t 更改分區類型 例如:8e 83 8
n 創建新分區
d 刪除分區
w 保存並退出
q 不保存並退出

mkfs命令是一個綜合的命令,學習就應該了解本質,所以我們直接看mke2fs這個命令

mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
mke2fs:ext系列文件系統專用管理工具
-t {ext2|ext3|ext4}                   例如:mke2fs -t ext4 /dev/sda1

-b {1024|2048|4096} 指明塊大小                mke2fs -b 4096 /dev/sda1
-L ‘LABEL‘ 卷標
-j: 相當於 -t ext3
-i #: 為數據空間中每多少個字節創建一個inode;此大小不應該小於block的大小
-N #:指定分區中創建多少個inode
-I 一個inode記錄占用的磁盤空間大小,128---4096
-m #: 默認5%,為管理人員預留空間占總空間的百分比
-O FEATURE[,...]:啟用指定特性
-O ^FEATURE:關閉指定特性

mount 掛載命令,其實我們平時用到的選項真不多

-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

umount 卸載命令:

findmnt MOUNT_POINT
查看正在訪問指定文件系統的進程:
lsof 掛載點
fuser -v 掛載點

終止所有在正訪問指定的文件系統的進程:
fuser -km 掛載點 -----------殺死所有正在訪問該設備的進程
卸載:
umount DEVICE --------------------設備:例如/dev/sdb1
umount 掛載點 --------被掛載的文件夾: 例如/app/disk1

dd 強大的磁盤處理工具

用法:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
bs=#:block size, 復制單元大小
count=#:復制多少個bs
of=file 寫到所命名的文件而不是到標準輸出
if=file 從所命名文件讀取而不是從標準輸入

bs=size 指定塊大小(既是是ibs也是obs)
ibs=size 一次讀size個byte
obs=size 一次寫size個byte
cbs=size 一次轉化size個byte
skip=blocks 從開頭忽略blocks個ibs大小的塊 --------對於if負責,即只對if產生效果
seek=blocks 從開頭忽略blocks個obs大小的塊 --------對of生效

count=n 只拷貝n個記錄

例一:

[root@localhost ~]# dd if="input file" of="output file" bs="塊大小" count="多少個塊"
 if 等於輸入,也可以是一個設備
 of 等於輸出,也可以是一個設備

例二 :

[root@localhost ~]# dd if=/etc/passwd of=/tmp/passwd.back
 此處功能跟cp 類似

例三 :

[root@localhost ~]# dd if=/dev/hdc of=/tme/mbr.back bs=512 count=1
 因為MBR存在於一個磁盤的最前面512B,所以此處相當於備份了hdc 設備的MBR

例四 :

[root@localhost ~]# dd if=/dev/sdb1 of=/tmp/boot.whole.disk
 此處是備份了整個sdb1分區的所有內容

例五 :

備份dev/sdb的分區表
 dd if=/dev/sdb of=/app/mbr.bak bs=1 count=64 skip=446 skip表示跳過if設備多少字節
 這句命令的意思就是從sbd磁盤的第446字節開始,一次讀取1字節,讀取64次
 dd if=/app/mbr.bak of=/dev/sdb bs=1 count=64 seek=446 seek表示跳過of設備多少字節
 這句命令的意思就是從sbd磁盤的第446字節開始,一次寫入1字節,寫入64次

例六 :

破壞sdb的55AA,然後通過sda恢復
 dd if=/dev/zero of=/dev/sdb bs=1 count=2 seek=510
 /dev/zero是一個只輸出0的設備,55AA是存在於一個扇區的最後倆字節。
 dd if=/dev/sda of=/dev/sdb bs=1 count=2 skip=510 seek=510

文件系統的簡單操作——磁盤