1. 程式人生 > 實用技巧 >linux磁碟管理

linux磁碟管理

對於linux而言,一切皆檔案,包括裝置檔案,即把裝置檔案關聯至某裝置的驅動程式,進而能夠與該裝置進行通訊,一個寫入操作,對於系統來說是一個輸出操作,對於硬體裝置,則是輸入操作,裝置檔案分為兩種,塊(block)裝置和字元(character)裝置。

裝置檔案:關聯至一個裝置驅動程式,進而能夠跟與之對應硬體裝置進行通訊;每個硬體裝置依靠一個裝置號碼與硬體進行通訊。

裝置號碼:

主裝置號:major number, 標識裝置型別

次裝置號:minor number, 標識同一型別下的不同裝置

輸入ls -l /etc

wKioL1XfBhfweHjRAAFuu3KvvIk191.jpg

上圖中,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

wKiom1XfBNqihq07AAESdiAI1sw305.jpg

如何分割槽:

按柱面

0磁軌0扇區:共512bytes(MBR: Master Boot Record)其中446bytes為boot loader,

64bytes為分割槽表,每16bytes: 標識一個分割槽剩餘2bytes:如55AA表示前面多少位元組為有效

記錄

4個主分割槽;

3主分割槽+1擴充套件(N個邏輯分割槽)

wKioL1XfEBKgb61QAAEU1SV46Cc944.jpg

分割槽管理工具:fdisk, parted, sfdisk

fdisk:對於一塊硬碟來講,最多隻能管理15分割槽;

# fdisk -l [-u] [device...]

wKiom1XfD8yjvLi3AACsRWHPDNQ805.jpg

# fdisk device

子命令:管理功能

p: print, 顯示已有分割槽;

n: new, 建立

d: delete, 刪除

w: write, 寫入磁碟並退出

q: quit, 放棄更新並退出

m: 獲取幫助

l: 列表所分割槽id

t: 調整分割槽id

wKiom1XfCAqAnV5fAADyE12u2qE314.jpg

檢視核心是否已經識別新的分割槽:

# cat /proc/partations

wKioL1XfCc-gjnikAADB_6JP-E8344.jpg


通知核心重新讀取硬碟分割槽表:

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': 設定卷標

wKioL1XfE83AxRRxAAJPPb0PdrU883.jpg

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

wKiom1XfEimB-y1mAAB3wkDOMq4519.jpg


其它常用工具:


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檔案

wKiom1XfF8PS-unkAAHbNiEzcyI201.jpg


解除安裝命令:

# 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為單位

wKioL1XfF0-BQFraAABzehiZLEg187.jpg

檔案系統空間佔用等資訊的檢視工具:

df:

-h: human-readable

-i:inodes instead of blocks

-P: 以Posix相容的格式輸出;

wKiom1XfFPLA5hIPAADFYgRA2Bs190.jpg

檢視某目錄總體空間佔用狀態:

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, 索引節點

地址指標:

直接指標:

間接指標:

三級指標:

wKiom1XfFuaCEGpVAAB_jmaJqsI472.jpg

inode bitmap:對位標識每個inode空閒與否的狀態資訊;


連結檔案:

硬連結:

不能夠對目錄進行;

不能跨分割槽進行;

指向同一個inode的多個不同路徑;建立檔案的硬連結即為為inode建立新的引用路

徑,因此會增加其引用計數;


符號連結:

可以對目錄進行;

可以跨分割槽;

指向的是另一個檔案的路徑;其大小為指向的路徑字串的長度;不增加或減少目標

檔案inode的引用計數;


ln [-sv] SRC DEST

-s:symbolic link

-v: verbose


檔案管理操作對檔案的影響:

檔案刪除:

檔案複製:

檔案移動:


轉載於:https://blog.51cto.com/chaochao3/1689086