首页 > 代码库 > linux 文件系统及磁盘管理
linux 文件系统及磁盘管理
一个新的磁盘盘需要经过分区、格式化(创建文件系统),挂载之后才能正常使用。关于磁盘的分区表有两种格式:MBR(Master Boot Record)和GPT(GUID Partition Table)
MBR:
也称为主引导扇区,是计算机开机后访问硬盘时必须读取的首个扇区,也就是0柱面0磁头1扇区,MBR由bootload(446字节)、分区表(64字节)、MBR结束标志(2字节)共512字节组成。最大支持2TB的分区。MBR格式的分区表支持3个主分区和1个扩展分区。
GPT:
为了支持容量大于2TB的分区,引入了GPT分区表格式,最大支持18EB
fdisk : 磁盘分区工具
fdisk <disk>
d: 删除一个分区
l: 列出系统支持的分区类型
m: 打印帮助
n: 增加一个新分区
p: 打印分区表
q: 不保存退出
w: 保存退出
t: 改变分区ID
2. partprobe(centos 5),kpartx,partx(centos 6):
partprobe <disk> : 通知OS系统磁盘分区表改变
partx -a <disk> : 增加磁盘分区或读取所有磁盘分区
partx -l <disk>: 列出磁盘所有分区
kpartx -af <disk> : 强制增加磁盘分区映射
kpartx -l <disk> : 列出增加的磁盘分区映射
3. mke2fs , mkfs : 格式化磁盘(创建文件系统ext2,ext3,ext4)
mke2fs的配置文件/etc/mke2fs.conf,使用用此命令加载的默认参数。
mke2fs = mkfs -t ext2 = mkfs.ext2
mke2fs:
-t : 文件系统类型(ext2 | ext3 | ext4 )
-j : 相当于 -t ext3
-L Label: 设置卷标
-b ( 1024 | 2048 | 4096): 指定块大小
-i num: num个字节预留一个inode
-N num: 直接指定预留多少个inode
-n: 不创建文件系统,但是显示创建过程中执行的操作
-I num: Inode大小
-m num: 预留管理员的空间的百分比,默认为5
-U UUID: 使用自定义的UUID
-c: 在创建文件系统之前,检查磁盘上坏的block
-F: 强制创建文件系统
-g: 自定义每个block-group有多少个blocks
-G: 自定义block-group的数量
-O [^]feature: 指定分区特性
feature:(默认sparse_super,filetype,resize_inode,dir_index,ext_attr)
dir_index: 使用b-trees hash加速大目录查询速度。
extend: 加速大文件系统访问(large file)
filetype: 存储文件类型信息
flex_bg: 允许block-group信息放置在block的任意位置
has_journal: 创建ext3日志(同-j)
journal_dev: 创建外部的ext3日志替代ext2文件系统
large_file: 文件系统支持大于2G的文件
resize_inode: 为block-group增长提供预留空间
sparse_super: 创建包含super-block备份的文件系统
uninit_bg: 加速文件系统创建(仅在ext4下支持)
-q: 用于在脚本中静默执行格式化
# mke2fs /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
warning: 252 blocks unused.
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
328320 inodes, 1310720 blocks
65548 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8208 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
4. e2label
e2label <partition>: 查看卷标
e2label <partition> Label: 设置定卷标
# e2label /dev/sdb1 data
5. blkid
blkid <partition>: 查看分区类型和UUID
# blkid /dev/sdb1
/dev/sdb1: UUID="85ea6a34-0de2-47e8-83ee-589f79adb88a" TYPE="ext2"
6. dumpe2fs : 查看文件系统(ext2 , ext3 , ext4)信息
-h: 仅显示super-block信息
#dumpe2fs -h /dev/sdb1
dumpe2fs 1.41.12 (17-May-2010)
Usage: dumpe2fs [-bfhixV] [-o superblock=<num>] [-o blocksize=<num>] device
[root@test ~]# dumpe2fs -h /dev/sdb1
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: a9771ea8-9719-4ecf-a6f2-c8b417a4878f
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags: signed_directory_hash
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 328320
Block count: 1310720
Reserved block count: 65548
Free blocks: 1287546
Free inodes: 328309
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 319
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8208
Inode blocks per group: 513
Filesystem created: Fri Aug 22 13:35:10 2014
Last mount time: n/a
Last write time: Fri Aug 22 13:35:11 2014
Mount count: 0
Maximum mount count: 20
Last checked: Fri Aug 22 13:35:10 2014
Check interval: 15552000 (6 months)
Next check after: Wed Feb 18 13:35:10 2015
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
Default directory hash: half_md4
Directory Hash Seed: a46fce3a-c1f4-417c-941b-c23c01a3f555
7. tune2fs:调整文件系统参数(针对ext2,ext3,ext4)
-f: 强制tune2fs完成操作,即使有错误出现。
-l: 列出super-block信息
-L label: 设定卷标
-m: 预留管理员的空间百分比,默认为5%
-j: 如果原来的文件系统类型为ext2,可以通过-j提升为ext3
-o [^]mount-options[...]: 设定其默认挂载选项
mount-options:(tune2fs支持的mout-options)
debug: 对文件系统启用debug code.
bsdgroups:
user_xattr: 启用用户定义的扩展属性
acl: 启用POSIX访问控制列表
uid16: 禁用32位UID和GID,用于兼容老的内核
journal_data: 在启用了日志的分区上,元数据写入日志区优先于数据写入文件系统
journal_data_ordered: 在启用了日志的分区上,数据写入文件系统优先于元写 入日志区
journal_data_writeback: 在启用了日志的分区上,当元数据写入日志区后,数据 可能被写入文件系统,it may allow old data to appear in files after a crash and journal recovery
nobarrier: 仅ext4分区支持
block_validity: 读写文件系统时,额外的检查被执行,仅ext4分区支持
discard: 仅ext4分区支持
nodelalloc: 仅ext4分区支持
-O [^]feature[...]: 调整分区特性,同mke2fs -O选项
8. fsck: 用于检查和修复linux文件系统
-t: 要检查的文件系统类型
-A: 尝试检查所有/etc/fstab文件中所有文件系统
-C: 显示检查和修复进度条
-M: 不检查已挂载的文件系统
-N: 不执行,只显示将要做什么
-P: 当使用了-A时,同时检查根文件系统和其它文件系统
-R: 当使用了-A时,跳过根文件系统检查
-a: 自动修复文件系统
-r: 交互式修复文件系统
9. e2fsck: 用于检查ext2,ext3,ext4文件系统
-f: 强制检查
-F: 在开始检查之前,刷新分区的buffer cache
-y: 自动回答yes
10. mount: 挂载文件系统
-r: 只读挂载
-w: 读写挂载
-L: 挂载有些卷标的分区
-u: 挂载有些uuid的分区
-t: 挂载的文件系统类型
-a: 自动挂载所有
-o options: 指定挂载选项
async: 异步I/O
sync: 同步I/O
atime/noatime: 更新访问时间
auto/noauto: 可以使用-a选项
defaults: 默认选项包括(rw,suid,dev,exec,auto,nouser,aysnc,relatime)
dev/nodev: 允许使用字符和块设备
diratime/nodiratime: 更新目录inode访问次数
dirsync:
exec/noexec: 允许执行二进制文件
group: 允许普通用户挂载文件系统,如果这个用户属于group
user/nouser: 允许普通用户挂载文件系统,此选项隐含(noexec,nodev,nosuid)
users: 允许每个用户挂载文件系统,此选项隐含(noexec,nodev,nosuid)
iversion/noiversion: 每次inode被修改,i_version域被增加
mand/nomand: 允许强制锁
_netdev: 阻止系统尝试挂载网络文件系统,直到系统的网络准备就绪
nofail: 如果设备不存在,不报告错误
relatime/norelatime: 类似于atime/noatime
strictatime/nostrictatime:
suid/nosuid: 允许设置suid sgid
owner: 如果用户是设备的owner,允许他挂载文件系统
remount: 重新挂载文件系统
ro: 只读挂载
_rnewdev:和_netdev一样,除了在执行rc.sysinit时通过“fsck -a"检查文件系统
rw: 读写挂载
mount执行后的退出状态码:
0: success
1: incorrect invocation or permission
2: system error(out of memory,cannot fork,no more loop devices)
4: internal mount bug
8: user interrupt
16:problems writing or locking /etc/mtab
32:mount failure
64:some mount succeeded
umount /dev/sdb1卸载文件系统
umount /media
11. fuser: 查看占用文件或socket的进程:
# fuser -v /media
USER PID ACCESS COMMAND
/media: root 13156 ..c.. bash
ACCESS列:表示访问此进程的类型
c: 当前目录
e: 可执行程序正在执行
f: 打开文件
F: 打开文件写模式
r: root目录
m: mmap‘ed file or shared library
# fuser -km /media 杀死占用/media的进程
12. df: 查看文件系统空间使用率
-h: 以K,M,G形式显示
-i: 显示inode使用率
-P:以POSIX格式显示
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_test-lv_root 36G 1.8G 32G 6% /
36G 1.8G 32G 6% /
tmpfs 939M 0 939M 0% /dev/shm
/dev/sda1 485M 37M 423M 9% /boot
/dev/sdb1 5.0G 10M 4.7G 1% /media
13. du: 评估文件文件占用的磁盘空间
# du -hs /root
55M /var
14. 开机自动挂载文件/etc/fstab
# /etc/fstab
# Created by anaconda on Wed Jul 23 15:22:36 2014
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_test-lv_root / ext4 defaults 1 1
UUID=590c416b-9d27-4fe1-af01-fc802a7a200c /boot ext4 defaults 1 2
/dev/mapper/vg_test-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
第一列:要挂载的设备(设备文件,卷标,UUID)
第二列:挂载点
第三列:文件系统类型
第四列:挂载选项
第五列:转储频率
0:从不备份
1:每日备份
2:每隔一日备份
第六列:自检次序
0:不自检
1: 首先自检,通常只被/使用
2:/自检之后自检
本文出自 “虎虎生威” 博客,请务必保留此出处http://tobeone.blog.51cto.com/817917/1543546
linux 文件系统及磁盘管理