磁盤管理
Linux思想一切皆文件:
open(),read(),write(),close()
I/O 設備地址
設備類型:
塊設備:block,存取單位“塊”,磁盤 (隨機訪問)
字符設備:char,存取單位“字符”,鍵盤 (邏輯訪問)
設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通訊。
設備編號:
ll /dev/sda*
root disk 8.0
root disk 8.1
每一個設備都擁有一個主要號碼,代表設備的類型,第二個是同一類型的唯一編號。
硬盤接口類型:
并行:
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
磁頭 head
2磁頭數 =1盤片
磁道 track
扇區 sector (512字節)
head 256 磁頭
track 1024 磁道
secror 63 扇區
CHS(culinder柱面)
culinder=track*head=512*63*256=8M
(centos6版本之后就不用整個柱面分區)
LBA 邏輯尋址(6版本之后就使用)
分區
兩種分區方式: 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(Globals Unique Identifiers)partition table 支持128個分區,使用64位,支持8Z(512Byte/block )64Z (4096Byte/block)
?使用128位UUID 表示磁盤和分區GPT分區表自動備份在頭和尾兩份,并有CRC校驗位
?UEFI (統一擴展固件接口)硬件支持GPT,使操作系統啟動
EFI部分又可以分為4個區域:EFI信息區(GPT頭)、分區表、GPT分區、備份區域
linux 使用的分區方式
lilo
grub (5,6版本)
grub2(7版本之后使用)
echo "- – -"> /sys/class/scsi_host/host0/scan
掃描新添加的硬盤
(查看分區)
lsblk 查看硬盤信息 (讀取內存中的信息)
fdisk -l /dev/sdd 查看硬盤信息
hexdump -C -n 512 /dev/sda 查看磁盤前512字節的信息
dd if=/dev/sda of=/testdir/mbrbak bs=1 count=512
備份mbr
dd if=/testdir/mbrbak of=/dev/sdd
將磁盤中備份的磁盤信息放到sdd
dd if=/dev/zero of=/dev/sdd bs=1 count=446 將前446字節用0替代
dd if=/dev/zero of/=dev/sdd bs=1 count=2 skip=510 seek=510
用0代替最后兩個字節的分區標識55AA。
最后兩位字節存儲標識的55 AA變成00 00
dd if=/testdir/mbrbak of=/dev/sdd bs=1 count=2 skip=510 seek=510
恢復分區標識
管理分區
列出塊設備
lsblk
創建分區使用:
fdisk創建MBR分區,也支持GPT,對于一塊硬盤,最多只能管理15分區
fdisk /dev/sdc
w:存盤退出
n:添加一個新的分區、柱面為單位,
p:顯示
d:刪除
q:不保存退出
t:更改分區類型
gdisk創建GPT分區
查看內核是否已經識別新的分區:
cat /proc/partations
partx -a /dev/sda (6使用這個指令)
partprobe
同步
GNU parted高級分區操作(創建、復制、調整大小等等)
parted /dev/sdc mklabel msdos
創建新的磁盤格式為MBR
parted /dev/sdc mklabel gpt
創建新的磁盤格式為GPT
fdisk -l /dev/sdc
查看分區的起始到結束點,塊的數量,ID
parted /dev/sdc/mkpart primary 1 1024
起始點 終止點 創建一個分區
parted /dev/sdc/ rm 1
刪除/dev/sdc 第一個分區
partprobe-重新設置內存中的內核分區表版本
文件系統
文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;
即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。
?從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,加密等。
ext3(centos5)
ext4(centos6)
xfs(centos7)
光盤:iso9660
網絡文件系統:NFS,CIFS (Linux包 samba)
集群文件系統: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
lsmod 可以查看設備的驅動是否安裝成功
創建文件系統
mkfs.
mkfs -t ext4
mke2fs
mke2fs /dev/sdc1 建立ext文件系統
一個塊=4k
tune2fs -l /dev/sd*
超級塊是存儲關于塊的數據,塊的大小,塊的元數據。
組超級塊,存儲塊的大小,和每個組有多少塊,塊的元數據。
超級塊會自動備份。
blkid 查看盤的文件系統
tun2fs -o ^has_journal /dev/sd*
移除 日志功能,ext3變ext2
創建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
tune2fs -m 0 /dev/sda5
-i#: 為數據空間中每多少個字節創建一個inode;此大小不應該小于block的大小
-N#:為數據空間創建個多少個inode
-I 一個inode記錄大小128—4096
-m #: 默認5%,為管理人員預留空間占總空間的百分比
-O FEATURE[,…]:啟用指定特性
-O ^FEATURE:關閉指定特性
文件系統標簽
blkid:塊設備屬性信息查看
-U UUID: 根據指定的UUID來查找對應的設備
-L LABEL:根據指定的LABEL來查找對應的設備
e2label /dev/sdc2 /mnt/sdc2
加卷標
tune2fs
tune2fs:重新設定ext系列文件系統可調整參數的值
-l:查看指定文件系統超級塊信息;super block
-L 'LABEL':修改卷標
-m #:修預留給管理員的空間百分比
-j: 將ext2升級為ext3
-O: 文件系統屬性啟用或禁用,–O ^has_journal
-o: 調整文件系統的默認掛載選項,–o ^acl
-U UUID: 修改UUID號
ecntos6 手動分區格式化ext 沒有acl功能
tune2fs -o acl /dev/sd*
ACL:
具有能再添加局限權限的能力,實現靈活的權限管理
Centos 7 默認創建xfs 和ext4 文件系統有ACL功能。
Centos 7 版本之前,默認手工創建的ext4文件系統無ACL功能。
手動添加:
tune2fs -o acl /dve/sdb1
mount -o acl /dve/sbd1 /mnt
ACL 生效順序:所有者,自定義用戶,自定義組,其他人。
tune2fs -l /dev/sd*
文件系統檢測和修復
常發生于死機或者非正常關機之后
掛載為文件系統標記為“dirty”
fsck: File System Check
fsck.FS_TYPE
fsck-t FS_TYPE
-a: 自動修復錯誤
-r: 交互式修復錯誤
fsck -y /dev/sd* 默認在yes的選項下修復
不要在掛載的情況下修復,不然修復會破壞元數據。
注意: FS_TYPE一定要與分區上已經文件類型相同;
fsck -a /dev/sd*
文件修復
fsck 通常用來檢查并適當修復一個或多個Linux文件系統. filesys 可以是一個設備名(例如: /dev/hdc1 , /dev/sdb2 ), 一個掛載點(例如: / , /usr , /home ), 或一個ext2文件系統的磁盤標簽, 也可以是UUID指定符(例如: UUID=8868abf6-88c5-4a83-98b8-bfc24057f7bd 或 LABEL=root). 通常, fsck 會試著以并行的方式同時在不同的物理磁盤上運行文件系統檢查,這樣可以減少對所有文件系統進行檢查的時間。
如果沒有在命令行指定文件系統,并且沒有指定 -A 選項, fsck 將默認順序地檢查 /etc/fstab 中登記的文件系統。這和使用 -As 選項是相同的。
fsck 退出的返回值是下列情況之和:
0 – 沒有錯誤
1 – 文件系統有錯但已修復
2 – 系統應當重啟
4 – 文件系統錯誤沒有修復
8 – 運行錯誤
16 – 用法或語法錯誤
32 – 用戶撤銷了fsck 操作
128 – 共享庫出錯
當檢測多個文件系統時,退出的返回值是對每個文件系統檢查的返回值按位或的結果。
e2fsck:ext系列文件專用的檢測修復工具
-y:自動回答為yes
-f:強制修復
最大掛載次數和時間間隔會觸發fsck檢查命令。
fuser -v /mnt/sdb1 查看誰在掛載使用用
fuser -km /mnt/sdb1 強行T出掛載
掛載點目錄一般為空
mount 查看掛載
cat /etc/mounts(特殊項都能看到)
掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它文件訪問入口的行為
?卸載:為解除此關聯關系的過程
把設備關聯掛載點:mount Point
mount
?卸載時:可使用設備,也可以使用掛載點
umount
?掛載點下原有文件在掛載完成后會被臨時隱藏
?掛載點目錄一般為空
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 remount,noatime /mnt/
取消掛載再重新掛載,不使用atime
mount -o noexec,noatime /mnt/
取消掛載再重新掛載,不使用執行文件
不要輕易將掛載權限比普通用戶
創建了一個新的文件夾/mnt/sdd
將硬盤/dev/sdd 掛載在/mnt/sdd中
-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
原創文章,作者:swzczx,如若轉載,請注明出處:http://www.www58058.com/40517