磁盤管理
Linux中哲學思想:Linux一切皆文件,所有訪問磁盤設備就如同訪問一個文件一樣,因此要想使用需要一個文件接口
如何向設備中輸入數據?
首先將設備在系統上映射成一個文件,在此文件上進行讀寫操作就相當于對設備進行讀寫,對程序而言首先是打開一個文件open(),然后執行read()或者write(),最后關閉文件closed()
設備分類
塊設備:Block ,存取單位為塊
字符設備:char ,存取單位為字符
設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應的硬件設備盡心通信
設備文件和設備的對應關系:一個設備文件只能被一個設備關聯,如果一個設備文件關聯兩個設備文件,第一個設備的內容將會被第二個設備內容覆蓋
設備號碼:每個設備在內核集中都是靠設備號進行標識
設備號分類:主設備號:major number 用于標識不同設備
次設備號:minor numbei 用于標識統一類型下的不同設備
查看設備號:
其中8為主設備號,0、1、2…為次設備號
設備名稱:不同的硬盤接口會顯示不同的設備名稱
并行:
IDE :理論傳輸速度133MB/s
scsi:傳輸速度640MB/s
串口:
sata:6Gbps
sas:6Gbps
usb:480MB/s
硬盤轉速:rpm 5400rpm /每分鐘轉動5400轉
IDE:
centos5以前在顯示名稱:/dev/hd
centos6、7以后設備名稱為/dev/sd
SCSI, SATA, SAS, USB: /dev/sd
不同設備: a- z
/dev/sda, /dev/sdb, …
同一設備上的不同分區: 1,2, …
/dev/sda1, /dev/sda5
虛擬機磁盤:
/dev/vd
硬盤結構:
組成:盤片(雙面讀寫)、軸、馬達、磁頭、機械臂
磁盤存儲專業術語
磁道 track:每個盤片被分成N個同心圓,每個同心圓稱為磁道,使用來真正存儲數據的
扇區 sector:每個磁道按512個字節為單位等分,被劃分的區域叫做扇區
柱面 cylinder:每次盤片都是雙面讀寫的的,每個盤片上相同位置都會有一個相同的編號,所謂的相同的編號的磁道稱為柱面
磁盤分區
為什么要進行磁盤分區:
1、優化I/o性能
2、實現磁盤的配額限制管理
3、提高修復速度
4、隔離系統和程序
5、安裝多個操作系統
磁盤分區方式:
MBR 和GPT
MBR :master boot record ,使用32表示扇區數,最大不能超過2TB
MBR:存儲在0磁道,0扇區中前512字節
0-446字節:存儲boot loader ,引導加載
446-510:存儲分區表,每16字節存貯一個分區表,這也是為什么一個磁盤只能分4個主分區或3個主分區和一個擴展分區的原因
后2個字節:存儲有效信息55aa表示有效
MBR分區圖
查看MBR內容:
為了防止MBR被破壞,系統無法正常啟動,需要備份MBR ,備份方法如下
恢復MBR dd if=/testdir/Mbr of=/dev/sda bs=1 count=512
注意:擴展分區中的邏輯分區不能備份,因邏輯分區保存在擴展分區中,并非MBR中
GPT分區
GPT:GUID patition table 支持128個分區,使用 64位,支持8Z( 512Byte/block ) 64Z ( 4096Byte/block)
使用 128位UUID 表示磁盤和分區 GPT分區表自動備份在頭和尾兩份,并有CRC校驗位
UEFI (統一擴展固件接口 )硬件支持GPT
uuidgen :create a new UUID value ,每個磁盤在
創建分區命令
fdisk
使用格式
fdisk [-uc] [-b sectorsize] [-C cyls] [-H heads] [-S sects] device
常用選項:-l:列出分區表
-u:指定分區顯示格式,默認是扇區顯示 -u=cylinder 則為以柱面顯示分區信息
-c:指定顯示是否已dos顯示,默認不以dos顯示,dos格式要求分區中整個兒柱面必須在一個分區中,否則會提示錯誤
fdisk /dev/sda :對硬盤sda進行分區,fdisk是交互式命令,在進行分區時有好多的子命令
m:列出幫助
d:刪除分區
n:添加分區,
p:打印分區信息
w:保存分區信息退出
q:不保存退出
t:轉換分區格式
l:累出分區類型
開始分區啦!
1、fdisk /dev/sdb :注意,當磁盤中已經有擴展分區了,再添加分區不顯示擴展分區選項e,只能添加主分區和l(邏輯分區)
2,選擇分區類型l邏輯分區,p主分區,擴展分區
3w:保存退出
顯示系統下的生效的設備(內存中已經識別的設備):
lsblk
ll /dev/sd*
cat /proc/partitions
有時候增加的分區不能及時加載到內存,需要手動讓內核重新讀取分區表,以下有三種方法
1、partx -a /dev/sdb
-d 從內存中將分區信息刪除
-l:列出分區信息
partx -a -n|–nr 2:3 只重新加載2和3分區
partx -d –rn 2:3 從內存中將2 3分區刪除
2、kpart -a /dev/sdb
3、partrpobe /dev/sdb 不適用于centos6版本
磁盤管管理工具2
parted
顯示磁盤分區信息:parted /dev/sdb print
顯示所有磁盤信息:parted -l
刪除第一個分區:parted /dev/sdb rm 1
創建分區 :part /dev/sdb mkpart primary 1(分區其實位置) 1024(結束位置)
改變磁盤分區格式:parted /dev/sdb mklabel gpt|msdos gpt:GPT分區格式 msdos :MBR分區格式
GPT分區工具gdisk
需要先將分區表定義成GPT分區格式
parted /dev/sdb mklabel gpt ,其余的和fdisk類似
文件系統
定義:文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構
稱為文件管理系統,簡稱文件系統。
從系統角度來看,文件系統是對文件存儲設備的空間進行組 織和分配,負責文件存儲并對存入的文件進行保護和檢索的
系統。具體地說,它負責為用戶建立文件,存入、讀出、修 改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,
加密等。
文件系統分類:
Linux文件系統: ext2, ext3, ext4, xfs( SGI) , btrfs(
Oracle) , reiserfs, jfs( AIX) , swap
swap: 交換分區
光盤: iso9660
Windows: fat32(優盤中格式在Linux中顯示為vfat), ntfs
Unix: FFS( fast) , UFS( unix) , JFS2
網絡文件系統: NFS, CIFS
集群文件系統: GFS2, OCFS2( oracle)
分布式文件系統: ceph, moosefs, mogilefs, glusterfs,Lustre
RAW:未經處理或者未經格式化產生的文件系統
Linux系統能實現不同文件系統共存,和一切接文件色的思想是利用了虛擬文件系統(VFS)
查看系統中支持的文件系統:cat /proc/fielsystem
創建文件系統命令三種方法:其實是等價的只是寫法不同
一、 mkfs.file_Type /dev/sdb1
fiel_Type:種類ext4 ext3 xfs ext2 vfat 等
二、mkfs -t /dev/sdb
-t:指定文件類型
-L '/mnt/sdb1' 設定卷標,相當于起了個別名
三、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:關閉指定特性
使用塊設備的三種方法
1、使用UUID (推薦使用方法,應為uuid固定,并且唯一)2、使用卷標也就是mkfs -L指定的 3、使用設備名稱/dev/sdb2
查看塊設備信息命令:
blkid [option] [設備名]
-U 通過UUID找到指定的設備
-L通過卷標找到指定的設備
_ueditor_page_break_tag__ueditor_page_break_tag_
管理ext類型設備卷標
e2lable /dev/sdb2 '/mnt/sdb2'
通過lable(卷標)或者、UUID查找設備
findfs UUID=uuid號
findfs LABLE='lable名'
重新設定ext系列文件的屬性
tune2fs
– l:查看指定文件系統超級塊信息; super block
– L 'LABEL':修改卷標
– m #:修預留給管理員的空間百分比,有些空間只能管理員使用,普通用戶不能使用
– j: 將ext2升級為ext3
– O: 文件系統屬性啟用或禁用 , –O ^has_journal
– o: 調整文件系統的默認掛載選項, –o ^acl
– U UUID: 修改UUID號;
dumpe2fs:
– h:查看超級塊信息 =tune2fs -l
dumpe2fs /dec/sdb2 查看分區用分組管理,信息更詳細
塊:文件最小存儲單位,塊大小分類1024 2048 4096 格式化時可以改變
超級塊:用于存儲文件系統的控制信息的數據結構。描述文件系統的狀態、文件系統類型、大小、區塊數、索引節 點數等,存放于磁盤的特定扇區中
文件系統修復
當用tune2fs查看文件系統超級塊信息時 filesystem state:記錄了文件系統狀態,當狀態為not clean 時說明文件系統異常
可用fsck對其進行修復或者常發生于死機或者非正常關機之后掛載為文件系統標記為“ dirty”
fsck: File System Check
fsck.FS_TYPE
fsck – t FS_TYPE
– a: 自動修復錯誤
– r: 交互式修復錯誤
注意: FS_TYPE一定要與分區上已經文件類型相同;
e2fsck: ext系列文件專用的檢測修復工具
– y:自動回答為yes
– f:強制修復
掛載
定義:掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它文件訪問入口的行為
卸載:為解除此關聯關系的過程
注意:掛載的文件一般為空,如果不為空掛載完成后原有的文件會被隱藏
mount:通過查看/etc/mtab文件顯示當前已掛載的所有設備
使用格式:
mount device mount_point
mount /dev/sdb2 /mnt/sdb2
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,相當于#mount
– a:自動掛載所有支持自動掛載的設備(定義在了 /etc/fstab文件中,且掛載選項中有auto功能)
– L 'LABEL': 以卷標指定掛載設備
-U 'UUID': 以UUID指定要掛載的設備
– B, — bind: 綁定目錄到另一個目錄上
查看內核追蹤到的已掛載的所有設備:
cat /proc/mounts :軟鏈接文件,鏈接到/proc/myself/mounts
/etc/mtab軟鏈接到/pro/mounts
– 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功能,默認centos中自己添加的設備不自動開啟此功能
Defaults:相當于rw, suid, dev, exec, auto, nouser, async
卸載
卸載之前查看掛載情況
findmnt /dev/sdb |findmnt
查看正在訪問文件系統的進程,當進程占用時系統是無法卸載文件系統的
lsof mount_point
fuser -v mount_point
終止所有正在訪問的文件系統的進程
fuser -km mount_point
卸載
umount mount_point
umount device
將設備考到普通文件
mknod 文件名 b(設備類型) 要拷貝設備主編號 要拷貝設備的次編號
原創文章,作者:wangnannan,如若轉載,請注明出處:http://www.www58058.com/40056
看完博客會對1磁盤管理有一個概覽性的認識,但在邏輯表達的組織上顯得略微混亂,如果能再優化下邏輯規劃會更讓人印象深刻