linux磁盤管理及文件系統
硬盤存儲術語
? head:磁頭 ?
track:磁道 ?
cylinder: 柱面 ?
secotr: 扇區,512bytes
分區
? 兩種分區方式:MBR,GPT ?
MBR:
Master Boot Record,1982年,使用32位表示扇區 數,分區不超過2T ?
如何分區:
按柱面 ?
0磁道0扇區:
512bytes 446bytes: boot loader
64bytes:分區表
16bytes: 標識一個分區
2bytes: 55AA ?
4個主分區;3主分區+1擴展(N個邏輯分區)
GPT:
GUID patition table 支持128個分區,使用64位,支 持8Z( 512Byte/block )64Z ( 4096Byte/block) ?
使用128位UUID 表示磁盤和分區 GPT分區表自動備份在頭 和尾兩份,并有CRC校驗位 ?
UEFI (統一擴展固件接口)硬件支持GPT
Linux磁盤管理常用三個命令為df、du和fdisk。
df:列出文件系統的整體磁盤使用量
du:檢查磁盤空間使用量
fdisk:用于磁盤分區
df命令
df命令參數功能:檢查文件系統的磁盤空間占用情況??梢岳迷撁顏慝@取硬盤被占用了多少空間,目前還剩下多少空間等信息。
語法:
df +選項+文件
選項與參數:
-
-a :列出所有的文件系統,包括系統特有的 /proc 等文件系統;
-
-k :以 KBytes 的容量顯示各文件系統;
-
-m :以 MBytes 的容量顯示各文件系統;
-
-h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;
-
-H :以 M=1000K 取代 M=1024K 的進位方式;
-
-T :顯示文件系統類型, 連同該 partition 的 filesystem 名稱 (例如 ext3) 也列出;
-
-i :不用硬盤容量,而以 inode 的數量來顯示
列出所有文件系統 df -a
將容量結果以易讀的容量格式顯示出來 df -h
將系統內的所有特殊文件格式及名稱都列出來 df -aT
將 /etc 底下的可用的磁盤容量以易讀的容量格式顯示 df -h /etc
du命令
linux du命令也是查看使用空間的,但是與df命令不同的是Linux du命令是對文件和目錄磁盤使用的空間的查看,還是和df命令有一些區別的,這里介紹Linux du命令
語法 du + 選項+文件或者目錄名稱
選項與參數:
-
-a :列出所有的文件與目錄容量,因為默認僅統計目錄底下的文件量而已。
-
-h :以人們較易讀的容量格式 (G/M) 顯示;
-
-s :列出總量而已,而不列出每個各別的目錄占用容量;
-
-S :不包括子目錄下的總計,與 -s 有點差別。
-
-k :以 KBytes 列出容量顯示;
-
-m :以 MBytes 列出容量顯示;
實例:
列出/etc所有的文件目錄容量 du -a
與 df 不一樣的是,du 這個命令其實會直接到文件系統內去搜尋所有的文件數據。
分區工具fdisk和gdisk
語法:
fdisk +選項+裝置名
gaisk+選項+裝置名
-l :輸出后面接的裝置所有的分區內容。若僅有 fdisk -l 時, 則系統將會把整個系統內能夠搜尋到的裝置的分區均列出來
創建分區
子命令: ?
p 分區列表 ?
t 更改分區類型 ?
n 創建新分區 ?
d 刪除分區 ?
w 保存并退出 ?
q 不保存并退出
查看內核是否已經識別新的分區:
# cat /proc/partitions
通知內核重新讀取硬盤分區表
新增分區用
partx -a -n M:N /dev/DEVICE
kpartx -a /dev/DEVICE -f: force
刪除分區用
partx -d -n M:N /dev/DEVICE centos6: –nr N-M ?
CentOS 5,7: 使用partprobe ?
partprobe [/dev/DEVICE]
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
文件系統
? 文件系統是操作系統用于明確存儲設備或分區上的文件的方 法和數據結構;即在存儲設備上組織文件的方法。操作系統 中負責管理和存儲文件信息的軟件結構稱為文件管理系統, 簡稱文件系統。 ?
從系統角度來看,文件系統是對文件存儲設備的空間進行組 織和分配,負責文件存儲并對存入的文件進行保護和檢索的 系統。具體地說,它負責為用戶建立文件,存入、讀出、修 改、轉儲文件,控制文件的存取,安全控制,日志,壓縮, 加密等。
文件系統類型
? Linux文件系統: ext2, ext3, ext4, xfs(SGI), btrfs( Oracle), reiserfs, jfs(AIX), swap swap: 交換分區 光盤:iso9660 ?
Windows:fat32, ntfs ?
Unix: FFS(fast), UFS(unix), JFS2 ?
網絡文件系統:NFS, CIFS ?
集群文件系統:GFS2, OCFS2(oracle) ?
分布式文件系統:ceph, moosefs, mogilefs, glusterfs, Lustre ?
RAW:未經處理或者未經格式化產生的文件系統
文件系統分類
? 根據其是否支持"journal"功能:
日志型文件系統: ext3, ext4, xfs, …
非日志型文件系統: ext2, vfat ?
文件系統的組成部分:
內核中的模塊:ext4, xfs, vfat
用戶空間的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat ?
Linux的虛擬文件系統:VFS ?
查前支持的文件系統:cat /proc/filesystems
磁盤格式化(創建文件系統)
磁盤分割完畢后自然就是要進行文件系統的格式化,格式化的命令非常的簡單,使用 mkfs(make filesystem) 命令。
語法:mkfs [-t 文件系統格式] 裝置文件名
mkfs命令:
(1) # mkfs.FS_TYPE /dev/DEVICE ext4 xfs btrfs vfat
(2) # mkfs -t FS_TYPE /dev/DEVICE -L 'LABEL': 設定卷標
創建ext文件系統
?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:關閉指定特性
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
? tune2fs:重新設定ext系列文件系統可調整參數的值
-l:查看指定文件系統超級塊信息;super block
-L 'LABEL':修改卷標
-m #:修預留給管理員的空間百分比
-j: 將ext2升級為ext3
-O: 文件系統屬性啟用或禁用,
–O ^has_journal
-o: 調整文件系統的默認掛載選項,–o ^acl
-U UUID: 修改UUID號 ?
dumpe2fs:
-h:查看超級塊信息(分組信息),分區用分組管理
磁盤檢驗
fsck(file system check)用來檢查和維護不一致的文件系統。
若系統掉電或磁盤發生問題,可利用fsck命令對文件系統進行檢查。
語法:fsck [-t 文件系統] [-ACay] 裝置名稱
選項與參數:
-
-t : 給定檔案系統的型式,若在 /etc/fstab 中已有定義或 kernel 本身已支援的則不需加上此參數
-
-s : 依序一個一個地執行 fsck 的指令來檢查
-
-A : 對/etc/fstab 中所有列出來的 分區(partition)做檢查
-
-C : 顯示完整的檢查進度
-
-d : 打印出 e2fsck 的 debug 結果
-
-p : 同時有 -A 條件時,同時有多個 fsck 的檢查一起執行
-
-R : 同時有 -A 條件時,省略 / 不檢查
-
-V : 詳細顯示模式
-
-a : 如果檢查有錯則自動修復
-
-r : 如果檢查有錯則由使用者回答是否修復
-
-y : 選項指定檢測每個文件是自動輸入yes,在不確定那些是不正常的時候,可以執行 # fsck -y 全部檢查修復。
查看系統有多少文件系統支持的 fsck 命令
檢查分區/dev/sdc2
掛載mount ?
掛載: 將額外文件系統與根文件系統某現存的目錄建立起關聯 關系,進而使得此目錄做為其它文件訪問入口的行為
卸載: 為解除此關聯關系的過程 ?
把設備關聯掛載點:mount Point mount ?
卸載時:可使用設備,也可以使用掛載點 umount ?
掛載點下原有文件在掛載完成后會被臨時隱藏 ?
掛載點目錄一般為空
Linux 的磁盤掛載使用 mount 命令,卸載使用 umount 命令
語法:mount [-t 文件系統] [-L Label名] [-o 額外選項] [-n] 裝置文件名 掛載點
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
mount常用命令選項
? -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, suid, dev, exec, auto, nouser, async
卸載命令
? 查看掛載情況: #findmnt MOUNT_POINT ?
查看正在訪問指定文件系統的進程:
#lsof MOUNT_POINT #fuser -v MOUNT_POINT ?
終止所有在正訪問指定的文件系統的進程:
# fuser -km MOUNT_POINT ?
卸載:
# umount DEVICE
# umount MOUNT_POINT
選項與參數:
-
-f :強制卸除!可用在類似網絡文件系統 (NFS) 無法讀取到的情況下;
-
-n :不升級 /etc/mtab 情況下卸除。
注: 顯示塊文件的三種方法
1、lsblk
2、ll /dev/sd*
3、cat /proc/partitions
原創文章,作者:xiaoqiang512,如若轉載,請注明出處:http://www.www58058.com/40221
linux磁盤和文件系統管理是基礎知識,對于分區工具,格式化工具等都需要能熟練運用,文章對這些知識總結的很全面你,建議下來多加練習。