文件系統
文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。
?從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,加密等。
linux常用的文件系統有:
ext2 vfat(fat文件系統) 非日志文件系統
ext3, ext4,(extended filesystem) :日志文件系統
xfs(SGI)高性能的日志文件系統 :centos 7 默認文件系統
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:未經處理或者未經格式化產生的文件系統
[root@Cloud ~]#cat /proc/filesystems #查看lnux支持的文件系統 nodevsysfs nodevrootfs nodevbdev nodevproc nodevcgroup nodevcpuset nodevtmpfs nodevdevtmpfs nodevbinfmt_misc nodevdebugfs nodevsecurityfs nodevsockfs nodevusbfs nodevpipefs nodevanon_inodefs nodevinotifyfs nodevdevpts nodevramfs nodevhugetlbfs iso9660 nodevpstore nodevmqueue nodevdrm ext4 nodevautofs ext2 vfat
VFS (virtual File System):虛擬文件系統
VFS的作用就是采用標準的Unix系統調用讀寫位于不同物理介質上的不同文件系統。VFS是一個可以讓open()、read()、write()等系統調用不用關心底層的存儲介質和文件系統類型就可以工作的粘合層。在古老的DOS操作系統中,要訪問本地文件系統之外的文件系統需要使用特殊的工具才能進行。而在Linux下,通過VFS,一個抽象的通用訪問接口屏蔽了底層文件系統和物理介質的差異性。
創建文件系統(格式化)
mkfs命令:
(1) # mkfs.FS_TYPE/dev/DEVICE #可以使用mkfs.ext2|ext3|ext4的命令創建文件系統
ext4 #能創建文件系統
xfs #能創建文件系統
btrfs#能創建文件系統
vfat#能創建文件系統
(2) # mkfs-t FS_TYPE /dev/DEVICE #-t指定文件系統類型 支持(ext類型文件系統)
-L 'LABEL': #設定卷標
[root@Cloud ~]#lsblk #分區列表 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom /media sda 8:0 0 200G 0 disk ├─sda1 8:1 0 200M 0 part /boot ├─sda2 8:2 0 60G 0 part │ ├─vg0-root (dm-0) 253:0 0 20G 0 lvm / │ ├─vg0-swap (dm-1) 253:1 0 2G 0 lvm [SWAP] │ ├─vg0-usr (dm-2) 253:2 0 10G 0 lvm /usr │ └─vg0-var (dm-3) 253:3 0 20G 0 lvm /var └─sda3 8:3 0 1G 0 part sdb 8:16 0 15G 0 disk ├─sdb1 8:17 0 1G 0 part ├─sdb2 8:18 0 1G 0 part ├─sdb3 8:19 0 1G 0 part ├─sdb4 8:20 0 1K 0 part └─sdb5 8:21 0 1G 0 part sdc 8:32 0 20G 0 disk └─sdc1 8:33 0 3G 0 part
創建文件系統
[root@Cloud ~]#mkfs.ext3 /dev/sdb1 #創建ext3的文件系統 mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev mkfs.msdos mkfs.vfat #mkfs.支持的文件系統 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 66384 inodes, 265064 blocks 13253 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=272629760 9 block groups 32768 blocks per group, 32768 fragments per group 7376 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 38 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
查看文件系統類型
[root@Cloud ~]#blkid #查看分區的文件系統類型 /dev/mapper/vg0-var: UUID="d8d9eac0-3c29-4d58-b8ce-8fbc5b7c02e1" TYPE="ext4" /dev/sda1: UUID="86a42a62-9313-4445-a9d3-89017b8b3eee" TYPE="ext4" /dev/sda2: UUID="V0IJW1-vzSF-ufm8-n54d-B5Dw-GmWn-fuPHlf" TYPE="LVM2_member" /dev/mapper/vg0-root: UUID="4a5239a6-cf82-4749-9ee2-8726b99f28b6" TYPE="ext4" /dev/mapper/vg0-swap: UUID="46cfeae9-8ed8-4d14-9ecd-ff97c5cabeb9" TYPE="swap" /dev/mapper/vg0-usr: UUID="3adacb3d-7be8-4f75-baa3-d9a28be727bd" TYPE="ext4" /dev/sdb1: UUID="070ddfa4-cf54-4db3-8846-465bd7eda8ed" SEC_TYPE="ext2" TYPE="ext3"
mke2fs命令選項及使用
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:關閉指定特性 [root@Cloud ~]#mke2fs -t ext4 -b 2048 -L "this is sdb" /dev/sdb2#/dev/sdb2寫入ext4文件系統 塊大小為2048 #寫入卷標"this is sdeb" mke2fs 1.41.12 (17-May-2010) Filesystem label=this is sdb OS type: Linux Block size=2048 (log=1) Fragment size=2048 (log=1) Stride=0 blocks, Stripe width=0 blocks 66528 inodes, 530144 blocks 26507 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=537919488 33 block groups 16384 blocks per group, 16384 fragments per group 2016 inodes per group Superblock backups stored on blocks: 16384, 49152, 81920, 114688, 147456, 409600, 442368 Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 22 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@Cloud ~]#blkid #查看分區的文件系統 /dev/mapper/vg0-var: UUID="d8d9eac0-3c29-4d58-b8ce-8fbc5b7c02e1" TYPE="ext4" /dev/sda1: UUID="86a42a62-9313-4445-a9d3-89017b8b3eee" TYPE="ext4" /dev/sda2: UUID="V0IJW1-vzSF-ufm8-n54d-B5Dw-GmWn-fuPHlf" TYPE="LVM2_member" /dev/mapper/vg0-root: UUID="4a5239a6-cf82-4749-9ee2-8726b99f28b6" TYPE="ext4" /dev/mapper/vg0-swap: UUID="46cfeae9-8ed8-4d14-9ecd-ff97c5cabeb9" TYPE="swap" /dev/mapper/vg0-usr: UUID="3adacb3d-7be8-4f75-baa3-d9a28be727bd" TYPE="ext4" /dev/sdb1: UUID="070ddfa4-cf54-4db3-8846-465bd7eda8ed" SEC_TYPE="ext2" TYPE="ext3" /dev/sdb2: LABEL="this is sdb" UUID="b3883156-7c03-47f4-9b9c-2f2905b2600c" TYPE="ext4" #顯示信息
blkid:塊設備屬性信息查看
blkid[OPTION]… [DEVICE]
-U UUID: 根據指定的UUID來查找對應的設備
-L LABEL:根據指定的LABEL來查找對應的設備
[root@Cloud ~]#blkid -L "this is sdb" #使用lebel查找對應設備
/dev/sdb2
[root@Cloud ~]#blkid -U b3883156-7c03-47f4-9b9c-2f2905b2600c #使用UUID查找對應設備
/dev/sdb2
?e2label:管理ext系列文件系統的LABEL # e2label DEVICE [LABEL] #查找設備對應的卷標或更改卷標 [root@Cloud ~]#e2label /dev/sdb2 #顯示/dev/sdb2的卷標 this is sdb #先是卷標名稱 [root@Cloud ~]#e2label /dev/sdb2 goodguy #更改卷標 [root@Cloud ~]#e2label /dev/sdb2 #顯示卷標 goodguy #卷標已更改 ?findfs:查找分區 findfs[options] LABEL=<label> #根據卷標查找分區 findfs[options] UUID=<uuid> #根據UUID查找分區 [root@Cloud ~]#findfs LABEL=goodguy #根據卷標查找分區 /dev/sdb2 [root@Cloud ~]#findfs UUID=b3883156-7c03-47f4-9b9c-2f2905b2600c #根據UUID查找分區 /dev/sdb2
tune2fs命令的選項及使用
tune2fs:重新設定ext系列文件系統可調整參數的值
-l:查看指定文件系統超級塊信息;super block
-L 'LABEL':修改卷標
-m #:修預留給管理員的空間百分比
-j: 將ext2升級為ext3
-O: 文件系統屬性啟用或禁用,–O ^has_journal
-o: 調整文件系統的默認掛載選項,–o ^acl
-U UUID: 修改UUID號;
[root@Cloud ~]#tune2fs -l /dev/sdb2 #查看/dev/sdb2中的超級塊的信息 tune2fs 1.41.12 (17-May-2010) Filesystem volume name: goodguy #卷標 Last mounted on: <not available> Filesystem UUID: b3883156-7c03-47f4-9b9c-2f2905b2600c Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize #has_journal 有日志的文件系統 Filesystem flags: signed_directory_hash Default mount options: (none) #掛載選項 Filesystem state: clean #干凈的系統 Errors behavior: Continue Filesystem OS type: Linux Inode count: 66528 #inode數 Block count: 530144 #block數 Reserved block count: 26507 Free blocks: 501256 #可用block數 Free inodes: 66517 #可用inode數 First block: 0 Block size: 2048 #塊大小 Fragment size: 2048 Reserved GDT blocks: 512 Blocks per group: 16384 Fragments per group: 16384 Inodes per group: 2016 Inode blocks per group: 252 Flex block group size: 16 Filesystem created: Sun Jul 31 00:54:36 2016 Last mount time: n/a Last write time: Sun Jul 31 01:02:56 2016 Mount count: 0 Maximum mount count: 22 Last checked: Sun Jul 31 00:54:36 2016 Check interval: 15552000 (6 months) Next check after: Fri Jan 27 00:54:36 2017 Lifetime writes: 49 MB Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 28 Desired extra isize: 28 Journal inode: 8 Default directory hash: half_md4 Directory Hash Seed: 98caa6e9-f51f-41c1-9e26-87e26d33caca Journal backup: inode blocks
[root@Cloud ~]#tune2fs -L goodboy /dev/sdb2 #更改/dev/sdb2的卷標 tune2fs 1.41.12 (17-May-2010) [root@Cloud ~]#tune2fs -l /dev/sdb2|grep -C 2 'goodboy' #顯示卷標名稱是否更改。 tune2fs 1.41.12 (17-May-2010) Filesystem volume name: goodboy Last mounted on: <not available> Filesystem UUID: b3883156-7c03-47f4-9b9c-2f2905b2600c [root@Cloud ~]#tune2fs -O ^has_journal /dev/sdb2 #禁用日志特征 tune2fs 1.41.12 (17-May-2010) [root@Cloud ~]#tune2fs -l /dev/sdb2 |grep 'features' #查看特征信息 Filesystem features: ext_attr resize_inode dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize [root@Cloud ~]#tune2fs -O has_journal /dev/sdb2 #啟用日志特征 tune2fs 1.41.12 (17-May-2010) Creating journal inode: done This filesystem will be automatically checked every 22 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@Cloud ~]#tune2fs -l /dev/sdb2|grep 'feature' #顯示日志特征啟用 Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
[root@Cloud ~]#tune2fs -m 15 /dev/sdb2 #預留空間的百分比 tune2fs 1.41.12 (17-May-2010) Setting reserved blocks percentage to 15% (79521 blocks) [root@Cloud ~]#tune2fs -l /dev/sdb2 |grep -C 3 'Reserved block count' #查看預留block的數量 Filesystem OS type: Linux Inode count: 66528 Block count: 530144 Reserved block count: 79521 #預留塊百分比換算塊的數量 Free blocks: 501256 Free inodes: 66517 First block: 0
[root@Cloud ~]#tune2fs -l /dev/sdb2 |grep -C 2 'Default mount options' #查看mount特征 Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: (none) #none Filesystem state: clean Errors behavior: Continue [root@Cloud ~]#tune2fs -o acl /dev/sdb2 #啟用acl tune2fs 1.41.12 (17-May-2010) [root@Cloud ~]#tune2fs -l /dev/sdb2 |grep -C 2 'Default mount options' Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: acl #掛載默認有acl權限 Filesystem state: clean Errors behavior: Continue
dumpe2fs命令的選項及使用
dumpe2fs: #查看超級塊組的信息
-h:查看超級塊信息(分組信息),分區用分組管理
#超級塊組中保存的各組的inode及詳細元數據信息。由于數據格式太長久不截圖給大家看了
[root@Cloud ~]#dumpe2fs -h /dev/sdb #-h跟tune2fs -l /dev/sdb信息一樣 dumpe2fs 1.41.12 (17-May-2010) Filesystem volume name: <none> Last mounted on: <not available> Filesystem UUID: 45631397-6b49-45d3-b2c8-92432a8fc45f Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: filetype sparse_super Default mount options: acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 1966080 Block count: 3932160 Reserved block count: 196608 Free blocks: 3870447 Free inodes: 1966069 First block: 0 Block size: 4096 Fragment size: 4096 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 16384 Inode blocks per group: 512 Last mount time: Sat Jul 30 18:50:09 2016 Last write time: Sat Jul 30 21:28:24 2016 Mount count: 2 Maximum mount count: -1 Last checked: Thu Jan 1 08:00:00 1970 Check interval: 0 (<none>) Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 128
文件系統檢測和修復
常發生于死機或者非正常關機之后
掛載為文件系統標記為“dirty”
fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE # -t 指定文件類型
-a: 自動修復錯誤
-r: 交互式修復錯誤
? 注意: FS_TYPE一定要與分區上已經文件類型相同;
? e2fsck:ext系列文件專用的檢測修復工具
-y:自動回答為yes
-f:強制修復
原創文章,作者:ladsdm,如若轉載,請注明出處:http://www.www58058.com/43790