1、磁盤結構
2、分區類型
3、管理分區、文件系統以及掛載設備
4、管理虛擬內存SWAP
一、磁盤結構(機械硬盤)
CHS尋址模式將硬盤劃分為磁頭(Heads)、柱面(Cylinder)、扇區(Sector)。
?heads:磁頭
?tracks:磁道
?cylinder: 柱面
?sector: 扇區,512bytes(最小的存儲單位)
1、其中:每個盤面有兩面,兩面都可以存儲數據,片兩面都能存數據,要讀取它,必須有磁頭(head),所以,每一個面,都有一個磁頭,一張盤片就有兩個磁頭,每個盤面安裝圓心劃分了不同的類似跑道的存儲區域,稱為磁道(track),盤面的數據從最外面開始存儲,最外面額是0磁道
相同磁道的立體空間,構成了柱面(cylinder),每個磁盤又可以劃分為多個區域,稱為扇區(sector),磁盤的最小存儲單位是扇區,一個扇區的大小是512字節,一個磁道由63個
2、centos6按照柱面劃分分區,centos7按照扇區劃分分區
3、知道了磁頭數、柱面數、扇區數,就可以很容易地確定數據保存在硬盤的哪個位置。也很容易確定硬盤的容量,
其計算公式是: 硬盤容量=磁頭數×柱面數×扇區數×512字節
二、分區類型
1、MBR: Master Boot Record,1982年提出的概念,使用32位表示扇區數,分區不超過2T(2^32/1024/1024=2T)
通常一個磁盤的0磁道0扇區:512bytes存放著磁盤的MBR信息,其中:
446bytes: boot loader(windows沒有管理器,linux稱為grub2、lilo)
64bytes:分區表
16bytes: 標識一個分區
4個主分區;3主分區+1擴展(N個邏輯分區)
2bytes: 55AA
因此,備份一個磁盤的MBR文件信息方法(此方法只能備份主分區和擴展分區表信息,不能備份邏輯分區信息):
dd if=/dev/sda of=/mnt/usb/MBRbackup bs=1 count=512
恢復備份:
dd if=/dev/usb/MBRbackup of=/dev/sda
MBR分區的磁盤邏輯結構:
2、GPT:GUID patition table
支持128個分區,使用64位,支持8Z(512Byte/block )64Z (4096Byte/block)使用128位UUID 表示磁盤和分區GPT分區表自動備份在頭和尾兩份,并有CRC校驗位,使用UEFI (統一擴展固件接口)硬件支持GPT?
三、管理分區
(1)硬盤的使用流程;
低格(廠商設置)–>分區(fdisk)–>高格(創建文件系統類型)(mkfs)–>掛載(mount)–>正常使用
使用fdisk創建舊硬盤的分區后,雖然物理配置已經保存,但內存還沒有更新識別,需要內存刷新識別使用命令:partprobe,創建新硬盤分區則會自動更新
(2)分區(fdisk)
fdisk:查看和修改分區表信息
fdisk DEVICE
fdisk /dev/sda 對磁盤/dev/sda進行分區操作
p: 顯示當前硬件的分區,包括沒保存的改動
n: 創建新分區
e: 擴展分區
p: 主分區
d: 刪除一個分區
w: 保存退出
q: 不保存退出
t: 修改分區類型
L:
l: 顯示所支持的所有類型
(3)創建文件系統(mkfs)
文件系統類型:
Linux文件系統: ext2, ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap
swap: 交換分區
光盤:iso9660
Windows:fat32, ntfs
Unix: FFS(fast), UFS(unix), JFS2
網絡文件系統:NFS, CIFS
集群文件系統:GFS2, OCFS2(oracle)
分布式文件系統:ceph, moosefs, mogilefs, glusterfs, Lustre
RAW:未經處理或者未經格式化產生的文件系統
目前linux主流的文件系統還是ext系統和xfs
相關命令:mkfs、blkid、【mke2fs、e2lable、dumpe2fs、tune2fs:針對ext系統的命令】
mkfs -t ext3 /dev/sda6
mke2fs:ext系列文件系統專用管理工具
-t {ext2|ext3|ext4}
-b {1024|2048|4096}
-L 'LABEL'
-j: 相當于-t ext3
-i#: 為數據空間中每多少個字節創建一個inode;此大小不應該小于block的大小
-N #:為數據空間創建個多少個inode
-m #: 默認5%,為管理人員預留空間占總空間的百分比
-O FEATURE[,…]:啟用指定特性
-O ^FEATURE:關閉指定特性
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
blkid:塊設備屬性信息查看
blkid[OPTION]… [DEVICE]
-U UUID: 根據指定的UUID來查找對應的設備
-L LABEL:根據指定的LABEL來查找對應的設備
e2label:管理ext系列文件系統的LABEL
# e2label DEVICE [LABEL]
tune2fs:重新設定ext系列文件系統可調整參數的值
-l:查看指定文件系統超級塊信息;super block
-L 'LABEL':修改卷標
-m #:修預留給管理員的空間百分比
-j: 將ext2升級為ext3
-O: 文件系統屬性啟用或禁用,–O ^has_journal
-o: 調整文件系統的默認掛載選項,–o ^acl
-U UUID: 修改UUID號;
(4)掛載mount
掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它文件訪問入口的行為
卸載:為解除此關聯關系的過程
注意:默認是只有管理員root才有掛載的權限
掛載方法:
mount DEVICE MOUNT_POINT
? mount:通過查看/etc/mtab文件顯示當前已掛載的所有設備
-t vsftype:指定要掛載的設備上的文件系統類型
-r: readonly,只讀掛載
-w: read and write, 讀寫掛載
-n: 不更新/etc/mtab,相當于#mount
-a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能)
-L 'LABEL': 以卷標指定掛載設備
-U 'UUID': 以UUID指定要掛載的設備
-B, –bind: 綁定目錄到另一個目錄上
-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功能
loop:掛載本地文件做成的分區
Defaults:相當于rw, suid, dev, exec, auto, nouser, async
卸載時,有用戶正在使用該掛載分區,則無法正常卸載
fuser:查看正在訪問的進程和操作
-v:查看
-mk:強制剔除正在訪問的進程
演示過程:
[root@Centos7 ~]# fdisk -l 【查看目前的分區情況】 Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x00072f47 Device Boot Start End Blocks Id System /dev/sda1 * 2048 391167 194560 83 Linux /dev/sda2 391168 98045951 48827392 83 Linux /dev/sda3 98045952 105857023 3905536 82 Linux swap / Solaris /dev/sda4 105857024 419430399 156786688 5 Extended /dev/sda5 105859072 144920575 19530752 83 Linux [root@Centos7 ~]# fdisk /dev/sda Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): n 【新建分區】 All primary partitions are in use Adding logical partition 6 First sector (144922624-419430399, default 144922624): Using default value 144922624 Last sector, +sectors or +size{K,M,G} (144922624-419430399, default 419430399): +10G 【10G】 Partition 6 of type Linux and of size 10 GiB is set Command (m for help): w 【保存新建分區信息】 The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. [root@Centos7 ~]# fdisk -l Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x00072f47 Device Boot Start End Blocks Id System /dev/sda1 * 2048 391167 194560 83 Linux /dev/sda2 391168 98045951 48827392 83 Linux /dev/sda3 98045952 105857023 3905536 82 Linux swap / Solaris /dev/sda4 105857024 419430399 156786688 5 Extended /dev/sda5 105859072 144920575 19530752 83 Linux /dev/sda6 144922624 165894143 10485760 83 Linux [root@Centos7 ~]# [root@Centos7 ~]# cat /proc/partitions major minor #blocks name 8 0 209715200 sda 8 1 194560 sda1 8 2 48827392 sda2 8 3 3905536 sda3 8 4 1 sda4 8 5 19530752 sda5 11 0 7587840 sr0 [root@Centos7 ~]# partprobe /dev/sda 【通知內核更新】 [root@Centos7 ~]# cat /proc/partitions major minor #blocks name 8 0 209715200 sda 8 1 194560 sda1 8 2 48827392 sda2 8 3 3905536 sda3 8 4 0 sda4 8 5 19530752 sda5 8 6 10485760 sda6 11 0 7587840 sr0 [root@Centos7 ~]# mkfs -t ext3 /dev/sda 【創建文件系統】 /dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5 /dev/sda6 [root@Centos7 ~]# mkfs -t ext3 /dev/sda6 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 655360 inodes, 2621440 blocks 131072 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2684354560 80 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
四、管理虛擬內存SWAP
(1)SWAP分區:模擬內存,當物理內存不足時,進程需要內存資源是,內存會把一部分沒有在用的進程分頁挪到硬盤的模擬內存中,騰出空間被現在需要使用內存資源的進程
即其作用是可以允許內存過載使用,windows系統也有類似的機制
由于虛擬內存空間是建立在硬盤之上,所以其速度和性能會大打折扣
運行速度:CPU(1納秒)–>緩存(一級緩存,二級..)(10納秒)–>內存(10毫秒)–>硬盤(秒)
(2)linux的swap和windows的虛擬內存空間區別:
區別就是windows即使物理內存沒有用完也會去用到虛擬內存 ,
而Linux不一樣 Linux只有當物理內存用完的時候才會去動用虛擬內存(即swap分區)這就是兩者的區別。
(3)free:查看物理內存和虛擬內存的使用情況
[root@Centos7 shells]# free total used free shared buff/cache available Mem: 1868692 317020 1189976 9224 361696 1370028 Swap: 3905532 0 3905532
(4)dd:convert and copy a file,轉換并復制文件,與cp命令相似,只是用法格式有不一樣,dd復制的是數據流,工作在vfs之下
if:文件來源
of:數據存儲目的
dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1:(可以備份MBR)
dd if=/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1:(可以還原MBR)
【】/dev/zero:不斷的往外輸出000,與/dev/null作用相反
(5)/etc/fstab:系統啟動自動掛載的文件系統配置
[root@Centos7 shells]# free total used free shared buff/cache available Mem: 1868692 317020 1189976 9224 361696 1370028 Swap: 3905532 0 3905532
空格分開六個字段【】:
設備(名、路徑、UUID):掛載點:文件系統類型:掛載選項(使用mount -o 命令時的附加選項):轉儲頻率(備份頻率,每多少天做一次完成備份):文件系統檢測次序(只有根可以是1,0表示不檢查)
Defaults:相當于rw, suid, dev, exec, auto, nouser, async
原創文章,作者:麥德良,如若轉載,請注明出處:http://www.www58058.com/42405