Linux磁盤和文件系統

Linux磁盤和文件系統

  當我們拿到一塊全新的磁盤的時候,我們並不能直接使用,而是需要經過分區、格式化、掛載後,才能被操作系統識別並寫入和讀取數據。不同的操作系統的文件系統有所不同,因此對磁盤的劃分方式也不一樣。

一.磁盤

1.結構

  在計算機領域,磁盤是現在使用最多、性價比最高的存儲介質。隨着存儲技術的不斷髮張,磁盤又分爲機械硬盤和固態硬盤。機械硬盤主要由:盤片、磁頭、盤片轉軸和磁頭控制器、數據轉換器、接口等幾部分組成。數據存儲在盤片上,在電機的帶動下盤片高速旋轉,每個盤片的存儲面上有一個磁頭,磁頭負責對盤片上數據的寫入和讀取。因此,電腦突然斷電會使得正在寫入的文件完整性被破壞,日常使用中應該防止電腦突然斷電。
磁盤結構如圖所示:
Linux磁盤和文件系統
磁頭:(head) 負責讀取和寫入數據到盤片上,每一個盤面對應一個磁頭
磁道:(track) 把磁盤劃分爲許多同心圓,從外到裏依次編號爲0-1023
扇區:(sector) 把磁道劃分爲很多扇區,是爲磁盤的最小存儲單元,每一個扇區爲512bytes
柱面:(cylinder) 同一磁盤的所有盤片圓心都在轉軸上,每一個盤面的相同編號磁道共同組成柱面,例如所有盤面的0磁道組成了0柱面。

2.磁盤的尋址方式

  磁盤的尋址方式可分爲CHS和LBA。
CHS

採用24bit尋址,因此最大尋址空間爲2^24*512byte=8GB
地址的前10bit表示柱面(cylinder),因此柱面的最大數量爲:2^10=1024  
中間8bit爲磁頭(head),磁頭數等於盤面數,最大盤面數爲:2^8=256
最後6bit爲扇區(sector),每一磁道可劃分的扇區數爲2^6=64  

LBA

  LBA是一個整數,通過轉換成CHS格式完成磁盤具體尋址,採用48bit尋址,因此最大空間支持128PB

因此,當磁盤容量小於8GB時,使用CHS或LBA尋址方式都可以。但磁盤容量大於8GB時,只能使用LBA尋址方式。

二.磁盤分區

  對磁盤的結構和尋址方式有了一定了解以後,接下來我們就可以對磁盤進行分區了。

1.分區方式

分區方式包括:MBR和GPT
MBR

  MBR:Master Boot Record,於1982年發佈,使用32bit標識扇區數,最大分區爲2T,按柱面劃分。其中整塊磁盤的第0磁道第0扇區記錄了OS引導程序和分區信息,因此這一塊扇區對整塊磁盤是很重要的。

 0磁道0扇區:512bytes
            446bytes:boot loader
            64bytes:分區表,每16bytes標識一個分區,因此MBR最多可劃分爲
                            4個主分區或者3主分區+1擴展(擴展可分爲n個邏輯分區)  

GPT

  GPT:GUID partition table 支持128個分區,無主次之分。採用128bit表示磁盤和分區GPT分區表,自動備份在頭和尾,相比於MBR而言,GPT可以適應更大級別的數據量和具有分區信息備份功能。

2.linux中的分區方法

  在linux系統中,對SCSI、SATA、SAS接口的硬盤都命名爲sd,後面跟上a,b,c,d…來命名,同一塊銀盤的不同分區則詞用1,2,3…來區別命名。
lsblk

lsblk命令用於列出塊設備信息,查看磁盤是夠已經被OS識別。
[root@centos7~]#lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0   50G  0 part /
├─sda3   8:3    0   30G  0 part /data
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    3G  0 part [SWAP]
sdb      8:16   0   20G  0 disk 
sr0     11:0    1  3.7G  0 rom  /media/cdrom

parted

parted命令用於對磁盤分區的劃分,其操作都是實時生效的,因此使用的時候應該慎重。
parted /dev/sdb mklabel gpt|msdos  指定磁盤爲MBR或GPT
parted /dev/sdb print              打印磁盤分區信息到屏幕上
parted /dev/sdb mkpart primary     創建分區,默認單位爲M
parted /dev/sdb rm 1               刪除分區 1

fdisk和gdisk

gdisk是一個類fdisk的GPT分區工具,其使用方法和fdisk一樣
fdisk -l [-u] [device] 查看分區
fdisk /dev/sda 之後將進入交互界面
fdisk子命令:
   p 分區列表 
   t 更改分區類型 
   n 創建新分區 
   d 刪除分區 
   v 校驗分區 
   u 轉換單位 
   w 保存並退出 
   q 不保存並退出

分區完成後,需要通過以下命令同志內核重新讀取硬盤分區表

查看內核是否已經識別新的分區:

cat /proc/partitions

centos6通知內核重新讀取硬盤分區表

新增分區用
partx -a /dev/DEVICE
kpartx -a /dev/DEVICE -f: force
刪除分區用
partx -d --nr M-N /dev/sdb

CentOS 5,7: 使用partprobe
partprobe /dev/sdb

三.文件系統
  文件系統是操作系統用於明確存儲設備上的文件和數據結構,負責管理和存儲數據的軟件結構。不同的操作系統有不同的文件系統,以下是linux中常見的文件系統:

  ext2:適用於那些分區容量不是太大,更新也不頻繁的情況,例如 /boot 分區。
   ext3:是 ext2 的改進版本,其支持日誌功能,能夠幫助系統從非正常關機導致的異常中恢復。它通常被用作通用的文件系統
   ext4:是 ext 文件系統的最新版。提供了很多新的特性,包括納秒級時間戳、創建和使用巨型文件(16TB)、最大1EB的文件系統,以及速度的提升
   xfs:SGI,支持最大8EB的文件系統
   swap: linux中的交換內存,採用一塊硬盤分區作爲swap分區,物理內存會將使用頻率不高的文件放到swap中。

爲新分區創建文件系統

mkfs

mkfs.FS_TYPE /dev/DEVICE 其中FS_TYPE爲文件系統
mkfs -t FS_TYPE /dev/DEVICE 也可以用-t後面加上文件系統
    -L : 設定卷標

mke2fs

mke2fs是ext系列文件系統專用管理工具
-t {ext2|ext3|ext4} 指定文件系統
-b {1024|2048|4096} 指定分區中一個塊的大小
-L 'LABEL'          指定卷標
-j: 相當於 -t ext3
-i #: 爲數據空間中每多少個字節創建一個inode;此大小不應該小於block的大小
-N #:指定分區中創建多少個inode
-I :單個inode記錄佔用的磁盤空間大小,128---4096
-m #: 默認5%,爲管理人員預留空間佔總空間的百分比
-O FEATURE[,...]:啓用指定特性
-O ^FEATURE:關閉指定特性

tune2fs

tune2fs用來重新設定ext系列文件系統可調整參數的值
-l:查看指定文件系統超級塊信息;super block
-L 'LABEL':修改卷標
-m #:修預留給管理員的空間百分比
-j: 將ext2升級爲ext3
-O: 文件系統屬性啓用或禁用, –O ^has_journal
-o: 調整文件系統的默認掛載選項,–o ^acl
-U UUID: 修改UUID號
dumpe2fs:
塊分組管理,32768塊
-h:查看超級塊信息,不顯示分組信息

四.掛載

  當我們完成了對硬盤創建文件系統之後,最後一步掛載之後我們就可以愉快的使用新硬盤了。

掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關係,進而使得此目錄做爲其它文件訪問入口的行爲

mount

mount 查看當前已掛載的所有設備
mount DEVICE MOUNT_POINT 
其中DEVICE爲要掛載的設備。
       1.設備文件,例如/dev/sdb2
       2.卷標,例如-L '/mnt/sda1'
       3.UUID,設備的唯一標識,128bit
MOUNT_POINT爲掛載點,一般爲一個空文件夾。

mount常用命令選項
-o options:(掛載文件系統的選項),多個選項使用逗號分隔
async:異步模式 sync:同步模式,內存更改時,同時寫磁盤
atime/noatime:包含目錄和文件
diratime/nodiratime:目錄的訪問時間戳
auto/noauto:是否支持自動掛載,是否支持-a選項
exec/noexec:是否支持將文件系統上運行應用程序
dev/nodev:是否支持在此文件系統上使用設備文件
suid/nosuid:是否支持suid和sgid權限
remount:重新掛載
ro:只讀 rw:讀寫
user/nouser:是否允許普通用戶掛載此設備,/etc/fstab使用
acl:啓用此文件系統上的acl功能
loop: 使用loop設備
defaults:相當於rw, suid, dev, exec, auto, nouser, async   

卸載

umount DEVICE
umount MOUNT_POINT

以上命令的掛載在系統重啓之後會失效,永久掛載的話需要把掛載信息寫入/etc/fstab中

/etc/fstab每行定義一個要掛載的文件系統,每一列則爲不同的選項。

tmpfs                   /dev/shm                                  tmpfs   defaults        0 0  
1                         2                                                    3        4                5 6

1、要掛載的設備或僞文件系統
設備文件
LABEL:LABEL=""
UUID:UUID=""
僞文件系統名稱:proc, sysfs
2、掛載點
3、文件系統類型:ext4,xfs,nfs,none
4、掛載選項:defaults ,acl,bind
5、轉儲頻率:0:不做備份 1:每天轉儲 2:每隔一天轉儲
6、fsck檢查的文件系統的順序:允許的數字是0, 1, 和2
    0:不自檢
    1:首先自檢;一般只有rootfs才用
    2:非rootfs使用

完成以上幾部,我們就可以愉快的使用新硬盤了,但對於硬盤更高級的掛載和文件系統的設置,使得硬盤上的數據更加安全,則需要更深入的學習和掌握。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章