一、知识整理
1、每个扇区:512字节;每个柱面:256个磁头*63个扇区*512字节,大概为8M。centos6中分区使用起始结束柱面;centos7中分区使用起始结束扇区。EBR:扩展分区的第一个扇区。
2、MBR:master root record,1982年,使用32位表示扇区数,分区不超过2T。其中,一共512bytes字节,446bytes为boot loader,64bytes表示分区表,其中16bytes标识一个分区,剩余2bytes为有效性标记55AA。
3、查看前512长度的数据编码:
[root@localhost mnt]# hexdump -C -n 512 /dev/sdb 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 |............... | 000001c0 21 00 83 8a 71 19 00 08 00 00 00 00 40 01 00 8a |!...q.......@...| 000001d0 72 19 83 a0 82 1e 00 08 40 01 00 00 40 00 00 a0 |r.......@...@...| 000001e0 83 1e 83 2b 8a a1 00 08 80 01 00 00 20 00 00 00 |...+........ ...| 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
4、BIOS只支持MBR;GPT使用UEFI支持,UEFI,统一扩展固件接口。VFS虚拟文件系统。
fdisk也支持GPT,默认创建为MBR。gpt:GUID patition table,支持128个分区,64位,若扇区为512K则能支持8Z,若为4M则支持64Z最大空间。
5、查看分区完成信息的三种方法:lsblk,显示块设备;df -lh;cat /proc/partitions。
6、如今的磁盘标识统一为sd*,dev/vda为虚拟磁盘。
7、LBA:logical block address:逻辑区块地址,数据以块存储,是一种寻址模式。块大小可以指定,一般为1024,2048,4096(4K对齐)。
CHS:cylinder柱面,heads磁头,sector扇区;CHS寻址模式,是fdisk在分区期间所需的磁盘信息,磁盘信息三维。
8、块组的起始位置group 0,超级块super block,用于存储元数据及各种信息,一般为1、3、5、7、9块组有备份。
9、tune2fs 只能查看ext文件系统的分区,xfs类型的文件系统更改卷标可以使用mkfs.xfs及mount命令。
10、查看挂载的三种方式:mount;cat /etc/mtab;cat /proc/mounts
11、根据uuid查找是哪个分区:mount -U UUID /dev/*
查看挂载情况
findmnt MOUNT_POINT
查看正在访问指定文件系统的进程
lsof MOUNT_POINT
fuser -v MOUNT_POINT
终止所有正在访问指定的文件系统的进程
fuser -km MOUNT_POINT
[root@localhost mnt]# findmnt /dev/sdc3 TARGET SOURCE FSTYPE OPTIONS /mnt/sdc3 /dev/sdc3 ext4 rw,nodev,noatime,data=ordered [root@localhost mnt]# lsof /dev/sdc3 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 11169 root cwd DIR 8,35 4096 2 /mnt/sdc3
12、在已经分区并且已挂载中某个分区的磁盘设备上创建新分区,内核可能在创建完成后无法直接识别。则需要通知内核强制重读分区:
centos5:partprobe
centos6:添加分区partx -a
删除分区 partx -d –nr M:N /devsd#
centos7:partprobe
13、文件系统种类总结:
RAW:未经处理或者未经格式化产生的文件系统
光盘:iso9660
集群文件系统:nfs、cifs
内核级分布式文件系统:ceph
windows的文件系统:vfat、ntfs
伪文件系统:proc、sysfs、tmpfs、hugepagefs
Unix的文件系统:UFS/FFS/JFS
交换文件系统:swap
用户空间的分布文件系统:mogilefs,moosefs、glusterfs
14、dumpe2fs -h 查看超级块信息(分组信息),分区用分组管理
df 文件系统空间占用等信息的查看工具
-H 按照1000进制显示
-T 文件系统类型
-h 易读格式
-i 显示inode使用
-P 以Posix兼容格式输出
15、findfs查找分区:
[root@localhost ~]# findfs LABEL=/dev/sdc2 /dev/sdc2 [root@localhost ~]# findfs UUID=2015-12-09-22-36-30-00 /dev/sr0
16、eject弹出光驱,eject -t回收弹出的光驱
17、创建ISO文件:cp /dev/cdrom /testdir/centos7.iso
mkisofs -r -o /root/etc.iso /etc
刻录光盘:wodim -v -eject centos.iso
18、getenforce查看selinux的状态
setenforce 0 关闭selinux
二、命令详解及事例
1、mknod [option]… NAME TYPE [MAJOR MINOR]
创建块设备或字符设备的特殊文件:
-m MODE 创建后的设备文件的访问权限
[root@localhost mnt]# mknod cdrom b 11 0 [root@localhost mnt]# ls cdrom media sdb1 sdb2 sdb3 sysroot [root@localhost mnt]# ll 总用量 16 brw-r--r-- 1 root root 11, 0 8月 24 21:03 cdrom
2、lsmod:list modules
用来显示文件、proc/modules的信息,也就是显示当前内核模块装载的模块。执行命令会列出所有已载入系统的模块。例如:显示ext4被使用了几次。
[root@localhost mnt]# lsmod Module Size Used by coretemp 13435 0 kvm_intel 162153 0 kvm 525259 1 kvm_intel ext4 578819 4
3、lsof:list open files:列出当前系统打开文件的工具,常用用法是查找应用程序打开的文件名称和数目。可用于查找出某个特定应用程序将日志数据记录到何处或者正在跟踪某个问题。
-a 表示两个参数都必须满足时才显示结果
filename 显示打开指定文件的所有进程
-g gid 显示归属gid的进程情况
-i[4|6] [protocol] [@hostname|hostaddr] [:service|port]
46 :ipv4 or ipv6
protocol :tcp or udp
hostname :internet host name
hostaddr :ipv4dizhi
service :/etc/service中的service name可以多个
port :端口号
[root@localhost mnt]# lsof -i :22 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1229 root 3u IPv4 19337 0t0 TCP *:ssh (LISTEN) sshd 1229 root 4u IPv6 19339 0t0 TCP *:ssh (LISTEN)
4、fdisk磁盘管理命令,centos6默认分区后没有acl和attr属性。
5、创建文件系统的工具mkfs:make file system。
mkfs -t FS_TYPE /dev/DEVICE
-L 设定卷标
mkfs.FS_TYPE /dev/DEVICE
.ext234
.xfs
.btrfs
.vfat
-f 若原来有文件系统,强制执行
[root@localhost ~]# mkfs -t xfs -f /dev/sdc1 meta-data=/dev/sdc1 isize=256 agcount=4, agsize=65536 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=262144, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
6、检测及修复文件系统的工具fsck
因进程意外中止或系统崩溃等原因导致写入操作非正常终止时,可能会造成文件损坏;建议离线进行。
-t fstype 指明文件系统类型
fsck -t ext4
-a 无需交互而自动修复所有错误
-r 交互式修复
ext系列文件系统的专用工具
e2fsck [] device
-y 对所有问题自动回答为yes
-f 即使文件系统处于clean状态,也要强制进行检测
[root@localhost ~]# fsck /dev/sdc2 fsck,来自 util-linux 2.23.2 e2fsck 1.42.9 (28-Dec-2013) /dev/sdc2: clean, 11/65536 files, 12644/262144 blocks [root@localhost ~]# fsck.ext4 /dev/sdc2 e2fsck 1.42.9 (28-Dec-2013) /dev/sdc2: clean, 11/65536 files, 12644/262144 blocks
7、调整ext系列文件系统的特性tune2fs
块大小创建后不可修改
-l 列出超级块的内容:块大小默认4096b
-j ext2升级为ext3,即启用journal日志功能:tune2fs -j /dev/sda2
-L 修改卷标
-m # 调整预留空间百分比
-O 开启某种特性Feature – ^O取消
-o [^]mount_option 开启或关闭某种挂载选项mount option
acl ^acl
[root@localhost ~]# tune2fs -o ^acl -O has_journal -m 1 /dev/sdc2 tune2fs 1.42.9 (28-Dec-2013) Setting reserved blocks percentage to 1% (2621 blocks)
8、blkid获取文件系统类型及UUID;块设备属性信息查看
在Linux下可以使用blkid命令对查询设备上所采用文件系统进行查询,blkid主要用来对系统的块设备所使用的文件系统类型、LABEL、UUID等信息进行查询,要使用这个命令必须安装e2fsprogs软件包。直接使用blkid可以列出当前系统所有已经挂载文件系统类型。
[root@localhost mnt]# blkid /dev/sda1: UUID="595c35b0-15d0-46bb-a63a-b1b50f9202fd" TYPE="xfs" /dev/sda2: UUID="diptS0-7Z1c-6unD-IaAW-UCb7-ocJQ-XGUkfk" TYPE="LVM2_member" /dev/sda5: UUID="2daf41fb-a9be-4a6b-8f0a-05d3a40eb40c" TYPE="swap" /dev/sr0: UUID="2015-12-09-22-36-30-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/mapper/centos-root: UUID="88abbafb-5460-4760-b699-ea2df801348f" TYPE="xfs"
9、创建交换分区:命令:mkswap swapon swapoff
mkswap -f给文件设置swap时使用-f选项强制执行。
启用swapon
swap [] []
-a 定义在/etc/fstab文件中的所有swap设备
禁用swapoff DEVICE
步骤如下:首先创建一个分区或文件,t为swap类型;然后
[root@localhost etc]# mkswap /dev/sdb1 mkswap: /dev/sdb1: warning: wiping old ext4 signature. 正在设置交换空间版本 1,大小 = 1048572 KiB 无标签,UUID=e07f645f-79e7-4686-8a93-99e74335c944
使用/etc/fstab挂载或临时开启swapon
[root@localhost etc]# swapon /dev/sdb1
卸载时先swapoff,然后再操作。
在挂载时可以给swap指定一个0到32767的优先级,如果用户没有指定,那么系统会自动给swap指定一个优先级,这个优先级从-1开始逐渐减1。用户指定的正数优先级永远高于系统的自动的负数优先级。可以使用命令swapon -p #或直接编辑fstab文件在defaults后面加pri=#。优先级查看:/proc/swaps
[root@localhost etc]# cat /proc/swaps Filename Type Size Used Priority /dev/dm-1 partition 1953788 0 -1
按照默认设置,非根用户只能挂载某些设备(光盘、DVD、usb等等),挂载点通常在/media或/mnt下。
10、dd命令:convert and copy afile
用法:dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
bs=# block size,复制单元大小
count=# 复制所少个bs
of=FILE 写到所命名的文件而不是到标准输出
if=FILE 从所命名文件读取而不是从标准输入
bs= 指定块大小
ibs= 一次读size个byte
obs= 一次写size个byte
cbs= 一次转化size个byte
skip=blocks 从开头忽略blocks个ibs大小的块
忽略输入文件即zero的前多少内容
seek=blocks 从开头忽略blocks个obs大小的块
忽略输出到的文件的前多少内容
count=n 只拷贝n个记录
conv=Conversion…用指定的参数转换文件
ascii 转换EBCDIC为ASCII
ebcdic 转换ASCII为EBCDIC
block 转换为长度是cbs的记录,不足部分用空格填充
unblock 替代cbs长度的每一行尾的空格为新行
lcase 把大写字符转换为小写字符
ucase 把小写字符转换为大写字符
swab 交换输入的每对字节
noerror 出错时不停止
notrunc 不截短输出文件
只对文件有效,对设备无效
sync 把每个输入块填充到ibs个字节,不足部分用null字符补齐
磁盘拷贝:dd if=/dev/sda of=/dev/sdb
备份MBR:dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
破坏MBR中的bootloader:dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446
备份:dd if=/dev/sdx of=/dev/sdy将本地的sdx整盘备份到sdy
dd if=/dev/sdx of=/path/to/image 将全盘数据备份到指定路径的image文件
dd if=/dev/sdx | gzip > /PATH/TO/image.gz 备份数据并压缩到指定位置
恢复:dd if=/PATH/TO/image of=/dev/sdx将备份文件恢复到指定盘
gzip -dc /PATH/TO/image.gz | dd of=/dev/sdx将压缩的备份文件恢复到指定盘
拷贝内存资料到硬盘 dd if=/dev/mem of=/root/mem.bin bs=1024
将内存里的数据拷贝到root目录下的mem.bin文件
从光盘拷贝iso镜像:dd if=/dev/cdrom of=/root/cd.iso
销毁磁盘数据:dd if=/dev/urandom of=/dev/sda1
利用随机数据填充硬盘,在某些必要场合可以用来销毁数据,执行此操作后,/dev/sda1将无法挂载,创建和拷贝操作无法执行。
得到最恰当的block size:
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳block size 大小。
测试硬盘读写速度:
dd if=/root/1Gb.file bs=64K | dd of=/dev/null
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
修复磁盘:
dd if=/dev/sda of=/dev/sda
当硬盘较长时间放置不使用时,磁盘会产生消磁点。当磁头读到这些区域时会遇到困难,并可能导致IO错误。当这种情况影响到磁盘的第一个扇区时,可能导致硬盘报废。
11、uuidgen随机创建一个uuid的值
[root@localhost ~]# uuidgen 83abd3df-deb2-4c39-a43f-cff94a1f9c2b
12、ext系列文件系统的专用管理工具mke2fs
mke2fs [] device
-t {ext234}
mkfs.ext4=mkfs -t ext4=mke2fs -t ext4
-b 指定文件系统的块大小{1024/2048/4096}
-L 指定卷标
-j 创建有日志功能的文件系统;ext2和ext3的区别在于有无日志模块
mke2fs -j=mke2fs -t ext3=mkfs -t ext3=mkfs.ext3
-i # 指明inode与字节的比率,即每多少个字节一个inode。
比率适中即可,inode过多占用空间并且无法用尽。
-N 直接指明要给此文件系统创建的inode的数量
-O 启用某种特性
– ^O关闭某种特性
mke2fs -t ext3 /dev/sdc2 -L /dev/sdc2 -m 3 -O has_journal
-m # 指定给管理员预留的空间,为百分比
[root@localhost ~]# mke2fs -t ext3 /dev/sdc2 -L /dev/sdc2 -m 3
13、e2lable 卷标的查看与设定,格式化之后修改,管理ext系列
查看:e2label device
设定:e2label device LABEL
14、mount命令:mount [-nrw] [-t vfstype] [-o option] device dir
-a 挂载/etc/fstab中的所有文件系统
-r 只读挂载
-w 读写挂载read and write
-n 默认情况下;设备挂载或卸载的操作会同步更新至etc/mtab文件中,-n用于禁止此特性
-t vfstype 指明要挂载的设备上的文件系统类型;多数情况下可以省略;此时mount会通过blkid来判断要挂载的设备文件系统类型。
-L 挂载时以卷标指明设备,用卷标指定设备
mount -L LABEL DIR
-U 以UUID指明设备
-B 绑定目录到另一个目录上,与软链接相似,但并不是软链接文件
此设置查看时只能使用mount命令查看
-o options 挂载选项,多个选项用逗号隔开,可以在/etc/fstab上直接定义。
sync/async 同步/异步操作
atime/noatime 文件或目录在被访问时是否更新其访问时间戳
diratime/nodiratime 目录在被访问时是否更新其时间戳
remount 重新挂载
mount -o remount 重新挂载
acl 支持使用facl功能
mount -o acl DEVICE DIR
tune2fs -o acl DEVICE
-ro 只读 -rw 读写
dev/nodev 此设备上是否允许创建设备文件
exec/noexec 是否允许运行此设备上的程序文件
auto/noauto 是否允许自动挂载
user/nouser 是否允许普通用户挂载此文件系统
suid/nosuid 是否允许程序文件上的suid和sgid特殊权限生效
defaults 默认,相当于rw,suid,dev,exec,auto,nouser,async
关于fstab挂载定义:
转储频率:0不备份;1每天转储;2每隔一天转储
自检次序:0不自检;1首先自检,一般只有rootfs才用1
当自检不为0时,若挂载选项写错,开机自检不能正常进入系统,进入修复,输入root密码后重新挂载,使用mount -o rw,remount / ,然后编辑/etc/fstab,将错误改正或注释,然后进入系统,成功修复。centos7中可以直接进入。
[root@localhost mnt]# mount -n -o async,noatime,acl,nodev,nouser,suid /dev/sdc3 /mnt/sdc3
15、parted命令:分区命令,操作都是实时生效,可以支持MBR及GPT;
parted DEVICE进入交互模式;
直接使用命令分区
[root@localhost ~]# parted /dev/sdc print 错误: /dev/sdc: unrecognised disk label Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: unknown Disk Flags: [root@localhost ~]# parted /dev/sdc mklabel gpt 信息: You may need to update /etc/fstab. [root@localhost ~]# parted /dev/sdc mklabel gpt 警告: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Doyou want to continue? 是/Yes/否/No? y 信息: You may need to update /etc/fstab. [root@localhost ~]# parted /dev/sdc mkpart primary 1 1024 信息: You may need to update /etc/fstab. [root@localhost ~]# parted /dev/sdc print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name 标志 1 1049kB 1024MB 1023MB primary [root@localhost ~]# parted /dev/sdc rm 1 信息: You may need to update /etc/fstab.
16、gdisk善于管理GPT分区,过程类似于fdisk
三、课后练习见后一篇
原创文章,作者:SilencePavilion,如若转载,请注明出处:http://www.178linux.com/41288