Linux 文件系統介紹
1. IDE:並行接口,133MB/s
2. SCSI:並行接口,Ultrascsi320, 320MB/S, UltraSCSI640, 640MB/S
3. SATA:串行接口,6gbps 6g/8 GB/S
4. SAS:串行接口,6gbps 是SCSI升級版
並行接口傳輸速率慢是因為並行容易造成電磁幹擾,所以只能低頻
串行接口雖然只有一個設備,可以高頻,所以速度比並行塊
機械硬盤圖解:
MBR簡介:
主引導記錄(MBR,Main Boot Record)是位於磁盤最前邊的一段引導代碼。它負責磁盤操作系統對磁盤進行讀寫時分區合法性的判別、分區引導信息的定位。
- 446bytes:bootloader, 程序,引導啟動操作系統的程序;
- 64bytes:分區表,每16bytes標識一個分區,一共只能有4個分區;
- 2bytes:MBR區域的有效性標識;55AA為有效;
塊劃分工具 fdisk
centos6 start 從柱面開始
centos7 start 從扇區開始
常用選項介紹
n:創建新分區
d:刪除已有分區
t:修改分區類型
l:查看所有已經ID
w:保存並退出
q:不保存並退出
m:查看幫助信息
p:顯示現有分區信息
創建擴展分區
[root@localhost ~]# fdisk /dev/sdb Command (m for help): n Partition type: p primary (3 primary, 0 extended, 1 free) e extended Select (default e): e Selected partition 4 First sector (46528512-62914559, default 46528512): Using default value 46528512 Last sector, +sectors or +size{K,M,G} (46528512-62914559, default 62914559): +1G Partition 4 of type Extended and of size 1 GiB is set Command (m for help): p Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 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: 0x00099ba6 Device Boot Start End Blocks Id System /dev/sda1 * 2048 391167 194560 83 Linux /dev/sda2 391168 4585471 2097152 82 Linux swap / Solaris /dev/sda3 4585472 46528511 20971520 83 Linux /dev/sda4 46528512 48625663 1048576 5 Extended
添加邏輯分區
Command (m for help): n Partition type: p primary (3 primary, 0 extended, 1 free) e extended Select (default e): e Selected partition 4 First sector (46528512-62914559, default 46528512): Using default value 46528512 Last sector, +sectors or +size{K,M,G} (46528512-62914559, default 62914559): +5G Partition 4 of type Extended and of size 5 GiB is set
w保存分區操作
把分區信息刷到內核
[root@localhost ~]# partx -a /dev/sda
partx: /dev/sda: error adding partitions 1-3
[root@localhost ~]# partx -a /dev/sda
partx: /dev/sda: error adding partitions 1-6
[root@localhost ~]# partx -a /dev/sda
partx: /dev/sda: error adding partitions 1-6
#刪除操作 慎用
#[root@localhost ~]# partx -d /dev/sda6
#查看
[root@localhost ~]# cat /proc/partitions
major minor #blocks name
8 0 31457280 sda
8 1 194560 sda1
8 2 2097152 sda2
8 3 20971520 sda3
8 4 1 sda4
8 5 2097152 sda5
8 6 1048576 sda6
8 16 10485760 sdb
11 0 1048575 sr0
以上完成創建分區快,接下去在分區快上創建文件系統
文件系統圖解
inode查看
[root@localhost ~]# ls -i
33574978 anaconda-ks.cfg
元數據查看
[root@localhost ~]# stat anaconda-ks.cfg
File: ‘anaconda-ks.cfg’
Size: 1587 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 33574978 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:admin_home_t:s0
Access: 2018-04-22 06:29:43.493008377 -0400
Modify: 2018-04-22 06:29:43.494008377 -0400
Change: 2018-04-22 06:29:43.494008377 -0400
Birth: -
VFS 分類(Virtual File System)
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, glusterfs
具體實現 mke2fs
mke2fs 常用選項
mke2fs [OPTIONS] device
-t {ext2|ext3|ext4}:指明要創建的文件系統類型
mkfs.ext4 = mkfs -t ext4 = mke2fs -t ext4
-b {1024|2048|4096}:指明文件系統的塊大小;
-L LABEL:指明卷標;
-j:創建有日誌功能的文件系統ext3;
mke2fs -j = mke2fs -t ext3 = mkfs -t ext3 = mkfs.ext3
-i #:bytes-per-inode,指明inode與字節的比率;即每多少字節創建一個Indode;
-N #:直接指明要給此文件系統創建的inode的數量;
-m #:指定預留的空間,百分比;默認5%
-O [^]FEATURE:以指定的特性創建目標文件系統;
# 格式化會損壞原有數據,慎用
[root@localhost ~]# mkfs.ext4 /dev/sda5
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
131072 inodes, 524288 blocks #inode數量 block數量
26214 blocks (5.00%) reserved for the super user #超級塊
First data block=0 #編號始
Maximum filesystem blocks=536870912 #編號末
16 block groups #塊組
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: #超級塊備份地址
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
查看inode大小
[root@localhost ~]# dumpe2fs -h /dev/sda5 |grep node
數據塊大小:524288*4096/1024/1024/1024 = 2G
inode數據大小:131072*256 /1024/1024 = 32M
#所以是先有數據塊,從數據塊中提取部分作為inode
卷標設定:
[root@localhost ~]# e2label /dev/sda5
mydata
[root@localhost ~]# e2label /dev/sda5 MYDATE
[root@localhost ~]# e2label /dev/sda5
MYDATE
blkid查看文件格式類型
[root@localhost ~]# blkid /dev/sda5
/dev/sda5: UUID="18003fb5-93d9-4822-b998-0f2f99323798" TYPE="ext4"
tune2fs 查看或修改ext系列文件系統的某些屬性
常用選項
-j:ext2 --> ext3;
-L LABEL:修改卷標;
-m #:調整預留空間百分比;
-O [^]FEATHER:開啟或關閉某種特性;
-o [^]mount_options:開啟或關閉某種默認掛載選項
#查看塊使用情況
[root@localhost ~]# tune2fs -l /dev/sda5
設置acl屬性 setfacl getfacl 特性
[root@localhost ~]# tune2fs -o acl /dev/sda5
[root@localhost ~]# tune2fs -l /dev/sda5 |grep ‘Default mount options‘
[root@localhost ~]# tune2fs -o ^acl /dev/sda5
自檢工具e2fsck
常用選項
-y:對所有問題自動回答為yes;
-f:即使文件系統處於clean狀態,也要強制進行檢測;[root@localhost ~]# e2fsck /dev/sda5 e2fsck 1.42.9 (28-Dec-2013) MYDATE: clean, 11/131072 files, 69339/2097152 blocks
掛載工具mount
常用選項
-r:readonly,只讀掛載;
-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功能;
ro:只讀
rw:讀寫
dev/nodev:此設備上是否允許創建設備文件; mknod
exec/noexec:是否允許運行此設備上的程序文件;
auto/noauto:是否自動掛載
user/nouser:是否允許普通用戶掛載此文件系統;
suid/nosuid:是否允許程序文件上的suid和sgid特殊權限生效;
relatime : mtime 比 atime 時間新的時候更新atime 優化作用
defaults:Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.
掛載
[root@localhost mnt]# mount /dev/sda5 t1/
[root@localhost t1]# mount |grep ‘t1‘
/dev/sda5 on /mnt/t1 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
卸載
[root@localhost mnt]# umount t1/
[root@localhost mnt]# umount /dev/sda5
強制卸載
[root@localhost mnt]# fuser -km t1
Linux 文件系統介紹