linux磁盤及文件系統管理
磁盤分區及文件系統管理
RAID設備
LVM: 磁盤的動態編輯管理
CPU, memory(RAM), I/O
I/O設備: Disks, Ethercard (網卡)
Disks: 實現持久存數數據
接口類型:
IDE(ata): 并口 理論速度: 133MB/s
SCSI: 并口 640MB/s
SATA: 串口 SATA3理論速度: 6gbps
SAS: 串口 6gbps
USB: 串口, 480MB/s
并口: 同一線纜可以接多塊設備
IDE: 兩個,主,從
SCSI:
寬帶: 16-1
窄帶: 8-1
串口:同一線纜只能接一臺設備
硬盤: 機械硬盤, 固態硬盤
機械硬盤:
head: 磁頭
cylinder: 柱面
secotr: 扇區
track: 磁道
設備類型:
塊設備(block): 隨機訪問, 數據交換單位是"塊"
字符設備(character): 線性訪問,數據交換單位是"字符"
設備文件: FHS
/dev
設備文件: 用來關聯至設備的驅動程序;設備的訪問入口
設備號:
major: 主設備號,區分設備類型,用于表明設備所需要的驅動程序
minor: 次設備號,區分同種類型下的不同設備,是特定設備的訪問入口
mknod 命令:
make block or character special files
用來創建字符或塊設備的特殊文件
mknod [OPTION]… NAME TYPE [MAJOR MINOR]
[option]
-m MODE: 創建后文件的訪問權限
使用系統調用中的的設備文件更改權限的系統調用來更改權限
設備文件名: ICANN,互聯網名稱地址分配機構制定命名規則
磁盤:
IDE: /dev/hd[a-z]
例如:hda,hdb…
SCSI, SATA, SAS, USB: /dev/sd[a-z]
分區:
/dev/sda#:
/dev/sda1, /dev/sda2, …
注意: CentOS 6和7 將硬盤設備文件標志位/dev/sd[a-z]#
CHS
引用設備的方式:
設備文件名
卷標LABEL
UUID
磁盤分區:
一、為什么分區:
優化I/O性能
實現磁盤空間配額限制
提高修復速度
隔離系統和程序
安裝多個OS
采用不同文件系統
二、分區方式: MBR, GPT
MBR:
使用32位表示扇區數, 分區不能超過2T
0編號扇區被當做mbr, Master Boot Record, 主引導記錄扇區
共512個字節分為三部分:
446 bytes: bootloader, 程序, 引導啟動操作系統的程序
64 bytes: FAT ,文件系統分區表, 每16字節標示一個分區, 一共只能有4個分區
2 bytes: MBR區域的有效性標識; 55AA為有效
MBR備份
新掛載的磁盤: lsscsi 查看首位的設備號
掃描磁盤: echo "- – -" > /sys/class/scsi_host/host2/scan(按照lsscsi查看到的首位設備號,選擇host)
備份: dd if=/dev/sda of=/root/mbr bs=1 count=512
查看mbr內容: hexdump -C mbr
顯示分區信息: fdisk -l
恢復分區信息: dd if=mbr of=/dev/sdb
fdisk -l /dev/sda
清零boot loader: dd if=/dev/zero of=/dev/sdb bs=1 count=446
fdisk -l /dev/sdb
hexdump -C -n 512 /dev/sdb
hexdump -C -v -n 512 /dev/sdb
清零分區表: dd if=/dev/zero of=/dev/sdb bs=1 count=64 skip=446 seek=446
主分區和擴展分區的標識: 1-4
邏輯分區: 只能從5開始
GPT: GUID partition table
lsblk 列出塊設備
查看分區信息: lsblk, fdisk -l /dev/sd*, cat /proc/partition
三、fdisk命令: manipulate disk partition table, 管理磁盤分區表
1、查看磁盤分區信息
fdisk -l [device]… 列出指定磁盤設備上的信息
start 和 end: centos 6 是柱面, centos 7是扇區
2、管理分區
fdisk device
fdisk提供了一個交互式接口來管理分區,有許多子命令,分別用于不同的管理功能;所有的操作均在內存中完成,沒有直接同步到磁盤上;直到使用 w 命令保存至磁盤
常用命令:
n:創建新分區
d:刪除已有分區
t:修改分區類型
l:查看所有已知ID
w:保存并退出
q:不保存退出
m:查看幫助信息
p: 顯示現有分區信息
注意:在已經分區并且已經掛載其中某個分區的磁盤設備上創建的新分區,內核可能在創建完成后無法直接識別,要使內核強制識別
查看:cat /proc/partitions
通知內核強制重讀磁盤分區表,有時可能需要執行多次命令
centos 5, 7: partprobe [device]
centos 6, 7: partx,kpartx
partx -a [device]
kpartx -af [device]
分區創建工具: parted,sfdisk
四、創建文件系統:
1、格式化:
低級格式化: 主要目的是在出廠時劃分磁道,形成簇;
高級格式化: 分區之后, 對分區進行, 主要是為了創建文件系統
2、文件的元數據中不包含文件名,文件名存放在目錄上
元數據區和數據區: inode(index node)
文件元數據: 大小, 權限, 屬主屬組, 時間戳, 數據塊指針 等
符號鏈接文件: 存儲數據指針的空間當中存儲的是真實文件的訪問路徑
設備文件: 存數數據的空間當中存儲的是設備號(major, minor)
3、VFS: Virtual File System(虛擬文件系統)(任何兩個文件系統不能直接鏈接時, 都能通過添加中間層解決, 這個中間層就是VFS)
linux的文件系統: ext2, ext3, ext4, xfs, reiserfs, btrfs
光盤: iso9660
網絡文件系統: nfs, cifs
集群文件系統: gfs2, ocfs2
內核級分布式文件系統: ceph
windows文件系統: vfat, ntfs
偽文件系統: proc, sysfs, tmpfs, hugepagefs
Unix文件系統: UFS, FFS, JFS
交換文件系統: swap
用戶控件的分布式文件系統: mogilefs, moosefs, giusterfs
cat /etc/issue 查看Linux的發行版本
uname -r 查看內核的版本
fdisk分區完成后,使用partx -a /dev/sda 刷新啟動分區
調整分區號之后,使用kpartx -af /dev/sda 刷新分區
1、文件系統管理工具
創建文件系統的工具
mkfs
mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat
檢測和修復文件系統的工具
fsck
fsck.ext2, fsck.ext3
查看其屬性的工具
dumpe2fs, tune2fs
調整文件系統特性
tune2fs
2、內核及文件系統的組成部分
文件系統驅動: 由內核提供
lsmod 查看系統已經加載的模塊
文件系統管理工具: 由用戶空間的應用程序提供
3、ext系統文件系統的管理工具:
mkfs.
使用mkfs命令格式化硬盤后,使用blkid /dev/sda3 查看對應設備的信息
UUID: 通用唯一標識符庫
mkfs -r ext2 <==> mkfs.ext2
ext系列文件系統專用管理工具: mke2fs
mke2fs [OPTION] device
-t{ext2|ext3|ext4}: 指明要創建的文件系統類型
-b{1024(1K)|2048(2K)|4096(4K)}: 指明文件系統
的塊大小
-L LABEL: 指明卷標
-j: 創建有日志功能的文件系統ext3
創建有日志功能的ext3文件系統的方法:
mke2fs -j = mkfs.ext3 =mkfs -t ext3 = mke2fs -t ext3
-i #: 每少個字節有一個inode
-N #: 直接指明要給此文件系統創建的inode的數量
-O[^]FEATURE: 以指定的特性創建目標文件系統,加^關閉特性,不加啟用特性
-m #: 指定預留空間, 百分比數值,不需要加% 和換算
卷標管理: e2label命令
查看: e2label device
設定: e2label device LABEL
tune2fs命令: 查看或修改ext系列文件系統的某些屬性;
adjust tuneable filesystem parameters on ext2/ext3/ext4 filesystem
注意: 塊大小創建后不可修改;
tune2fs [OPTIONS] device
options
-l: 查看超級塊信息
修改指定文件系統的屬性
-j: ext2 –> ext3,無損升級,對數據沒有損害,添加日志選項
-L LABEL:修改卷標
-m #: 修改預留空間百分比
-O[^]FEATURE :開啟或關閉某種特性
-o[^]mount_options: 開啟或者關閉某種默認的掛載選項
acl: 訪問控制列表
uuidgen命令: 生成新的隨機UUID
dumpe2fs命令: 顯示ext系列文件系統的屬性信息
dumpe2fs [-l] device
[h]
用于實現文件系統檢測的工具
因進程意外終止或系統崩潰等原因導致寫入操作非正常終止時, 可能會造成文件損壞, 此時, 應該檢測并修復文件系統. 建議, 離線進行
ext系列文件系統專用工具
e2fsck: check a Linux ext2/ext3/ext4/ file system
e2fsck [OPTIONS] device(分區)
-y: 對所有問題,自動回答為yes
-f: 即使文件系統處于clean狀態,也要強制進行檢測
fsck: 通用命令,check and repair a Linux file system
-t fstype: 指明文件系統類型 man fsck.
-a: 無須交互自動修復所有錯誤
-r: 交互式修復
CentOS 6如何使用xfs文件系統:
可以聯網
# yum install xfsprogs -y
內網:
事先:
cd /etc/yum.repo.d
wget http://xx.xx.xx.xx/centos6.8.repo
mv CentOS-BASE.repo CentOS-base.repo.bak
創建:mkfs.xfs
檢測: fsck.xfs
blkid命令:
blkid device : 查看對應設備的相關屬性信息
blkid -L LABEL:根據指定的LABEL定位設備
blkid -U UUID: 根據UUID定位設備
swap文件系統
Linux上的交換分區必須使用獨立的文件系統(獨立的分區)
且文件系統的System ID必須為82;
創建swap設備: mkswap命令
mkswap [options] device
-L label: 指明卷標
-f: 強制
修改/etc/fstab
使用 swapon -a 生效
swapon -s 查看swap信息
調整swap的優先級時
swap的優先級:
可以指定swap分區0-32767的優先級, 值越大優先級越高; 如果沒有用戶指定, 那么內核會自動給swap指定一個優先級, 這個優先級從-1開始, 每加入一個新的沒有用戶指定優先級的swap, 會給這個優先級減一; 同時, 先添加的swap的缺省優先級比較高, 除非用戶自己指定一個優先級, 而用戶指定的優先級用于高于內核缺省指定的優先級.
Windows無法識別Linux的文件系統;因此, 存儲設備需要在兩種設備之間交叉使用時,應該使用windows和linux同時支持的文件系統fat32(vfat)
# mkfs.vfat device
分區,格式化,修改配置文件,掛載
文件系統的使用
首先要"掛載": mount命令和umount命令
根文件系統之外的其他文件系統想要能夠被訪問,都必須通過"關聯"至根文件系統上的某個目錄來實現,此管關聯操作即為"掛載";此目錄即為"掛載點";
掛載點: mount point,用于作為另一個文件系統的訪問入口
(1)事先存在
(2)應該使用未被或不會被其他進程使用到的目錄
(3)掛載點下原有的文件將會被隱藏
mount命令:
mount [-fnrsvw] [-f vfstype] [-o options] device dir
mount[command options] [-f] [掛載選項]
命令選項:
-a: auto, 自動掛載
-r: read only, 只讀掛載
-w: read and write, 讀寫掛載(默認)
-n: 默認情況下, 設備掛載或卸載的操作會同步更新至/etc/mtab文件中, -n用于禁用此特性
-t vfstype: 指明要掛載的設備上的文件系統的類型; 多數情況下可以省略,此時mount會通過blkid來判斷要掛載的設備的文件系統類型
-L LABEL: 掛載時以卷標的方式指明設備
mount -L LABEL dir
-U UUID: 掛載是以UUID的方式指明設備
mount -U UUID dir
-o options: 掛載選項,掛載后啟用的特性
sync/async: 同步/異步操作;
atime/noatime: 文件或目錄在被訪問時是否更新其訪問時間戳
diratime/nodiratime: 目錄在被訪問時是否更新其訪問時間戳
remount: 重新掛載
acl: 支持使用facl功能
示例: mount -o remount,acl /dev/sda3 /mnt
或者: tune2fs -o acl device
dev/nodev: 此設備上是否允許創建設備文件
exec/noexec: 是否允許運行此設備上的程序文件
auto/noauto:
user/nouser: 是否允許普通用戶掛載此文件系統
suid/nosuid: 是否允許程序文件上的suid和sgid特殊權限生效
defaults: Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime
fuser命令,查看誰在使用掛載點的設備
fuser -km /device (一般在緊急情況使用)
一個使用技巧:
可以實現將目錄綁定至另一個目錄上,作為其臨時訪問入口
mount –bind 源目錄 目標目錄
例如: 本機目錄掛載目錄
修改/etc/fstab配置文件
/boot /mnt/boot none bind 0 0
mount -a
查看當前系統所有已經掛載的設備
# mount
# cat /etc/matb
# cat /proc/mounts
掛載光盤:
mount -r /dev/cdrom mount_point
光盤的設備文件: /dev/cdrom ,/dev/dvd, /dev/sr0
掛載U盤:
事先識別U盤的設備文件
掛載本地的回環設備:
# mount -o loop /PATH/TO/SOME_FILE MOUNT_POINT
命令 losetup
umount命令:
卸載時只需要 umount device|dir
注意: 正在被進程訪問到的掛載點無法被卸載
查看哪個或哪些進程所占用
# lsof MOUNT_POINT
# fuser -v MOUNT_POINT
終止所有正在訪問某掛載點的進程
# fuser -km MOUNT_POINT
交換分區的啟用和禁用:
創建交換分區的命令: mkswap
啟用: swapon
swapon [OPTION] [DEVICE]
-a: 定義在/etc/fstab文件中的所有的swap設備
-p PRIORITY: 指定優先級
/etc/fstab: pri=value
禁用: swapoff
swapoff device
設定除根文件系統以外的其它文件系統能夠開機時自動掛載: /etc/fstab文件
每行定義一個要掛載的文件系統及相關屬性:
6個字段:
(1)要掛載的設備
設備文件:
LABEL
UUID
偽文件系統: 例如sysfs, proc, tmpfs等
(2)掛載點
swap類型的設備的掛載點為swap
(3)文件系統類型:
(4)掛載選項
defaults: 使用默認掛載選項
如果要同時指明多個掛載選項,彼此間以逗號(,)分隔即可
defaults,acl,noatime,noexec
(5)轉儲頻率
0: 從不備份
1: 每天備份一次
2: 每隔一天備份
(6)自檢次序
0: 不自檢
1: 首先自檢,通常只能是根文件系統可用1
2: 次級自檢
…到9
mount -a: 可自動掛載定義在/etc/fstab文件中所有支持自動掛載的設備
df 和du 命令
df命令: 查看磁盤狀態
df [option]… [file]…
-l: 只顯示本地文件系統的相關信息
-h: 人類易于讀懂的human-readable
-i: 顯示inode使用狀況,而非blocks
du命令:
查看文件的大小
du [option]… [file]…
-s: sumary 和
-h: human-readable
dd命令: 復制和改變文件
用法: dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=# count=#
if=file: 從所命名文件讀取而不是從標準輸入
of=file: 寫入到所命名的文件而不是到標準輸出
bs=size: 指定塊的大寫(既是ibs, 也是obs)
ibs=size: 一次讀size個byte
obs=size: 一次寫入size個byte
cbs=size: 一次轉換size個byte
skip=blocks: 從開頭忽略blocks個ibs大小的塊
seek=blocks: 從開頭忽略blocks個obs大小的塊
count=n: 只拷貝n個記錄
conv=conversion[,conversion…] 用指定的參數轉換文件
轉換參數:
ascii: 轉換EBCDIC為ASCII
ebcdic: 轉換ascii為ebcdic
block: 轉換一行數據長度為cbs的記錄, 不足部分用空格填充
unblock: 替代cbs長度的每一行尾的空位為新行
lcase: 把大寫字符轉換為小寫字符
ucase: 把小寫字符轉換為大寫字符
nocreat: 不創建輸出文件
noerror: 出錯時不停止
notrunc: 不截斷輸出文件
sync: 把每個輸入塊填充到ibs個字節, 不足部分用空(null)字符補齊
原創文章,作者:black_fish,如若轉載,請注明出處:http://www.www58058.com/39872