linux磁碟管理
對於linux而言,一切皆檔案,包括裝置檔案,即把裝置檔案關聯至某裝置的驅動程式,進而能夠與該裝置進行通訊,一個寫入操作,對於系統來說是一個輸出操作,對於硬體裝置,則是輸入操作,裝置檔案分為兩種,塊(block)裝置和字元(character)裝置。
裝置檔案:關聯至一個裝置驅動程式,進而能夠跟與之對應硬體裝置進行通訊;每個硬體裝置依靠一個裝置號碼與硬體進行通訊。
裝置號碼:
主裝置號:major number, 標識裝置型別
次裝置號:minor number, 標識同一型別下的不同裝置
輸入ls -l /etc
上圖中,10表示主裝置號,227表示次裝置號
硬碟介面型別及介面速率:
並行:
IDE:133MB/s
SCSI:640MB/s
串列埠:
SATA:6Gbps
SAS:6Gbps
USB:480MB/s
rpm: rotations per minute
/dev/DEV_FILE
磁碟裝置的裝置檔案命名:
IDE: /dev/hd
SCSI, SATA, SAS, USB: /dev/sd
不同裝置:a-z
/dev/sda, /dev/sdb, ...
同一裝置上的不同分割槽:1,2, ...
/dev/sda1, /dev/sda5
機械式硬碟:
track:磁軌
cylinder: 柱面
secotr: 扇區
0磁軌:512bytes
如何分割槽:
按柱面
0磁軌0扇區:共512bytes(MBR: Master Boot Record)其中446bytes為boot loader,
64bytes為分割槽表,每16bytes: 標識一個分割槽剩餘2bytes:如55AA表示前面多少位元組為有效
記錄
4個主分割槽;
3主分割槽+1擴充套件(N個邏輯分割槽)
分割槽管理工具:fdisk, parted, sfdisk
fdisk:對於一塊硬碟來講,最多隻能管理15分割槽;
# fdisk -l [-u] [device...]
# fdisk device
子命令:管理功能
p: print, 顯示已有分割槽;
n: new, 建立
d: delete, 刪除
w: write, 寫入磁碟並退出
q: quit, 放棄更新並退出
m: 獲取幫助
l: 列表所分割槽id
t: 調整分割槽id
檢視核心是否已經識別新的分割槽:
# cat /proc/partations
通知核心重新讀取硬碟分割槽表:
partx -a /dev/DEVICE
-n M:N(表示讀取裝置號由M到N的分割槽)
kpartx -a /dev/DEVICE
-f: force 表示強制執行,有風險,慎用
CentOS 5: 使用partprobe
partprobe [/dev/DEVICE]
Linux檔案系統管理:
Linux檔案系統: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap
swap: 交換分割槽
光碟:iso9660
Windows:fat32, ntfs
Unix: FFS, UFS, JFS2
網路檔案系統:NFS, CIFS
叢集檔案系統:GFS2, OCFS2
分散式檔案系統:ceph, moosefs, mogilefs, GlusterFS, Lustre
根據其是否支援"journal"(日誌)功能:
日誌型檔案系統: ext3, ext4, xfs, ...
非日誌型檔案系統: ext2, vfat
檔案系統的組成部分:
核心中的模組:ext4, xfs, vfat
使用者空間的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat
Linux的虛擬檔案系統:VFS
建立檔案系統:
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;
-m #: 為管理人員預留的空間佔據的百分比;(預設5%)
-O FEATURE[,...]:啟用指定特性
-O ^FEATURE:關閉指定特性
mke2fs -b 1024 -m 3 -L MYDATA /dev/sda5
mkswap:建立交換分割槽
mkswap [options] device
-L 'LABEL'
前提:調整其分割槽的ID為82;
mkswap /dev/sda3
其它常用工具:
blkid:塊裝置屬性資訊檢視
blkid [OPTION]... [DEVICE]
-U UUID: 根據指定的UUID來查詢對應的裝置
blkid -U 'b369e752-1910-4120-aa0e-f8e748a3098a'
-L LABEL:根據指定的LABEL來查詢對應的裝置
blkid -L 'MYDATA'
e2label:管理ext系列檔案系統的LABEL
# e2label DEVICE [LABEL] e2label /dev/sda5 TEST
tune2fs:重新設定ext系列檔案系統可調整引數的值
-l:檢視指定檔案系統超級塊資訊;super block
tune2fs -l /dev/sda5
-L 'LABEL':修改卷標
-m #:修預留給管理員的空間百分比
-j: 將ext2升級為ext3 tune2fs -O has_journal /dev/sda5
-O: 檔案系統屬性啟用或禁用
-o: 調整檔案系統的預設掛載選項 tune2fs -o acl /dev/sda5
-U UUID: 修改UUID號;
dumpe2fs:
-h:檢視超級塊資訊 dumpe2fs -h /dev/sda5
檔案系統檢測:
fsck: File System CheCk
fsck.FS_TYPE (只能根據FS_TYPE檢測其特定的檔案系統)
fsck -t FS_TYPE
-a: 自動修復錯誤
-r: 互動式修復錯誤
fsck.ext3 -r /dev/sda5
Note: FS_TYPE一定要與分割槽上已經檔案型別相同;
e2fsck:ext系列檔案專用的檢測修復工具
-y:自動回答為yes;
-f:強制修復;
檔案系統管理:
將額外檔案系統與根檔案系統某現存的目錄建立起關聯關係,進而使得此目錄做為其它檔案訪問入口的行為稱之為掛載;
解除此關聯關係的過程稱之為解除安裝;
把要掛載的裝置關聯至掛載點:Mount Point
mount
解除安裝時:可使用裝置,也可以使用掛載點
umount
注意:掛載點下原有檔案在掛載完成後會被臨時隱藏,直至掛在裝置解除安裝後才能讀取;
掛載方法: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 '0c50523c-43f1-45e7-85c0-a126711d406e'
(4) 偽檔案系統名稱:proc, sysfs, devtmpfs, configfs
dir:掛載點
事先存在;建議使用空目錄;
程序正在使用中的裝置無法被解除安裝;
常用命令選項:
-t vsftype:指定要掛載的裝置上的檔案系統型別;
-r: readonly,只讀掛載;
-w: read and write, 讀寫掛載;
-n: 不更新/etc/mtab;
-a:自動掛載所有支援自動掛載的裝置;(定義在了/etc/fstab檔案中,且掛載選項中
有“自動掛載”功能)
-L 'LABEL': 以卷標指定掛載裝置;
-U 'UUID': 以UUID指定要掛載的裝置;
-B, --bind: 繫結目錄到另一個目錄上;
注意:檢視核心追蹤到的已掛載的所有裝置:cat /proc/mounts
-o options:(掛載檔案系統的選項)
async:非同步模式;
sync:同步模式;
atime/noatime:包含目錄和檔案;
diratime/nodiratime:目錄的訪問時間戳
auto/noauto:是否支援自動掛載
exec/noexec:是否支援將檔案系統上應用程式執行為程序
dev/nodev:是否支援在此檔案系統上使用裝置檔案;
suid/nosuid:指定是否擁有suid許可權
remount:重新掛載
ro:只讀模式,一般用於光碟
rw:讀寫模式
user/nouser:是否允許普通使用者掛載此裝置
acl:啟用此檔案系統上的acl功能
注意:上述選項可多個同時使用,彼此使用逗號分隔;
預設掛載選項:defaults
rw, suid, dev, exec, auto, nouser, and async
如需開機自動掛載,還需編輯/etc/fstab檔案
解除安裝命令:
# umount DEVICE
# umount MOUNT_POINT
檢視正在訪問指定檔案系統的程序:
# fuser -v MOUNT_POINT
終止所有在正訪問指定的檔案系統的程序:
# fuser -km MOUNT_POINT
掛載交換分割槽:
啟用:swapon
swapon [OPTION]... [DEVICE]
-a:啟用所有的交換分割槽;
-p PRIORITY:指定優先順序;
禁用:swapoff [OPTION]... [DEVICE]
記憶體空間使用狀態:
free [OPTION]
-m: 以MB為單位
-g: 以GB為單位
檔案系統空間佔用等資訊的檢視工具:
df:
-h: human-readable
-i:inodes instead of blocks
-P: 以Posix相容的格式輸出;
檢視某目錄總體空間佔用狀態:
du:
du [OPTION]... DIR
-h: human-readable
-s: summary
檔案掛載的配置檔案:/etc/fstab
每行定義一個要掛載的檔案系統:
要掛載的裝置或偽檔案系統 掛載點 檔案系統型別 掛載選項 轉儲頻率 自檢次序
要掛載的裝置或偽檔案系統:
裝置檔案、LABEL(LABEL="")、UUID(UUID="")、偽檔案系統名稱(proc, sysfs)
掛載選項:
預設為defaults
轉儲頻率:
0:不做備份
1:每天轉儲
2:每隔一天轉儲
自檢次序:
0:不自檢
1:首先自檢;一般只有rootfs才用1;
...
檔案系統上的其它概念:
Inode: Index Node, 索引節點
地址指標:
直接指標:
間接指標:
三級指標:
inode bitmap:對位標識每個inode空閒與否的狀態資訊;
連結檔案:
硬連結:
不能夠對目錄進行;
不能跨分割槽進行;
指向同一個inode的多個不同路徑;建立檔案的硬連結即為為inode建立新的引用路
徑,因此會增加其引用計數;
符號連結:
可以對目錄進行;
可以跨分割槽;
指向的是另一個檔案的路徑;其大小為指向的路徑字串的長度;不增加或減少目標
檔案inode的引用計數;
ln [-sv] SRC DEST
-s:symbolic link
-v: verbose
檔案管理操作對檔案的影響:
檔案刪除:
檔案複製:
檔案移動:
轉載於:https://blog.51cto.com/chaochao3/1689086