/etc/fstab
启动Linux、mount、 fsck 命令等命令执行都都会用到fstab信息,它提供的是系统上挂载设备的静态信息,比如 mount -a 就会挂载 /etc/fstab 里面指定的文件系统。当执行mount -a时只会挂载那些存在于/etc/fstab中的项目却未挂载的,已经挂载的不受影响。
/etc/mtab 是相对动态的。记载当前系统已经装载的文件系统,包括一些操作系统虚拟文件,这跟/etc/fstab有些不同。/etc/mtab文件在mount挂载、umount卸载时都会被更新,时刻跟踪当前系统中的分区挂载情况。当使用mount -n 时不会更新此文件,所以在某些指令会隐藏相对挂载情况。此文件在Centos7后变成了/proc/self/mounts的软链接。
/proc/mounts
这个文件是/proc/self/mounts的软链接,/proc下面的文件都是保存在内存中的,是内核自动生成的。所以/proc/mounts比/etc/mtab文件能更加真实的反映当前mount的情况。
Centos 6
Centos 7
使用mount -n 挂载后
可以通过比较/etc/fstab和/proc/mounts中的不同之处,得到被umount的设备
变相进行跨分区的硬链接
如果使用mount -B进行目录挂载目录的时候,/etc/fstab下的格式必须这么写
/源目录 /挂载目录 none bind
在/etc/fstab中提定defaults时,将包含以下挂载选项
Centos6-(2.6.30内核以后)defaults:rw, suid, dev, exec, auto, nouser, async, relatime.
Centos7-defaults:rw, suid, dev, exec, auto, nouser, async, relatime
利用目录挂载目录特点,可以同一个磁盘分区分别进行不同的磁盘挂载选项。
可以对文件创建文件系统,也就是本地loop设备
实例
#dd if=/dev/zero of=partfile bs=1M count=1024
可以创建成功,
同样的有Superblock信息哦
但是并不能进行分区操作哦
#mount -o loop /mnt/partfile /app/partloop/
可以进行磁盘文件操作的
复制到其他机器也是可以进行挂载使用的
Centos 6默认系统只有8个loop设备,手动使用mknod(#mknod loop8 c 1 5)创建的第8个以上的loop设备将会丢失,因此,如果想用更多的设备,请按以下方式添加
修改/boot/grub/grub.conf,找到 kernel这一行,在行末端加入max_loop=数量
loop设备如果需要开机挂载,需要在/etc/fstab按以下格式设置,
Centos6 必须要加上loop选项
/mnt/partfile /app/partloop ext4 defaults,loop 0 0
Centos7
与普通挂载没什么区别,注意文件系统格式不要搞错了。
/mnt/partfile /mnt/filesystem ext4 defaults 0 0
/etc/fstab格式
第一列:磁盘设备文件或者该设备的Label或者UUID。强烈建议使用UUID形式,设备名和Label都有可能发生变化。光盘没有UUID
第二列:设备的挂载点,就是你要挂载到哪个目录下
第三列:磁盘文件系统的格式。如果是目录挂载目录,则表示为none bind
第四列:文件系统的参数
async/sync |
设置是否为同步方式运行,默认为async |
atime/noatime |
是否每一次访问文件与目录都更新inode访问时间(access time) |
diratime/nodiratime |
是否每一次访问目录都更新inode访问时间(access time) |
auto/noauto |
mount -a 的命令时,此文件系统是否被主动挂载。默认为auto |
exec/noexec |
限制此文件系统内是否能够进行"执行x"的操作 |
dev/nodev |
是否支持在此文件系统上使用设备文件 |
suid/nosuid |
是否允许SUID权限的存在 |
remount |
重新挂载一个已经挂载了的文件系统而不修改其挂载点,立即生效 |
user/nouser |
是否允许普通用户挂载此设备 |
usrquota |
启用文件系统支持磁盘配额用户级模式 |
grpquota |
启用文件系统支持磁盘配额组级模式 |
rw |
是否以读写模式挂载 |
ro |
是否以只读模式挂载 |
acl |
启用此文件系统上的acl功能 |
loop |
使用loop设备 |
none bing |
目录挂载目录时使用 |
relatime |
按照文件被修改的时间更改inode访问时间。也就是仅在文件的修改时间 比访问时间新时才更新访问时间。 与 noatime 类似,但是可以让 mutt 之类需要知道文件在最后一次被修改后 是否被访问过的程序正常工作。 从 Linux 2.6.30 起,这是默认值(除非指定了 noatime)。 从 Linux 2.6.30 起,如果文件的最后访问时间已超过24小时未更新, 也会被强制更新。 |
defaults |
相当于rw, suid, dev, exec, auto, nouser, async, relatime |
pri=数字 |
设定swap文件的优先级,仅仅对swap分区有效果 |
第五列:能否被dump备份命令作用:dump是一个用来作为备份的命令。通常这个参数的值为0或者1
0 |
代表不要做dump备份 |
1 |
代表要每天进行dump的操作 |
2 |
代表不定日期的进行dump操作 |
第六列:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整(clean状态)。
0 |
不要检验 |
1 |
最早检验(一般根目录会选择) |
2 |
1级别检验完成之后进行检验 |
创建额外的swap交换文件
系统安装好时候如果创建的swap分区小了,是无法进行扩容大。但是可以通过新增加一个swap文件进行扩容。
准备一个磁盘分区或前面讲到的loop设备,(但是,用文件创建的loop设备swap文件,性能肯定不如独立的分区性能好)
将文件系统格式化:编号为82的Linux swap。
使用#mkswap专用命令进行格式化
将此UUID写入/etc/fstab下面,注意格式(如下图)
先看看增加swap前的数值
使用指令# swapon -a生效
使用swapon -s 或#cat /proc/swaps查看详细的信息,包括优先级(Priority),优先级数字越大的优先使用。
设置swap的优先级需要修改/etc/fstab,想哪个优先使用将设置数值大一些
将新设定生效,注意,一定严格步骤,以下2种方式都可以
#swapoff UUID=ad2786dd-6056-4ea6-ba6a-c2915bab280f
#swapoff /dev/sdb1
再重新挂载/etc/fstab中的swap即可
总结:
可以指定swap分区0到32767的优先级,值越大优先级越高。如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一
先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)
优化性能:分布存放,高性能磁盘存放
关于光盘的设备号,编写脚本的时候可以统一使用/dev/cdrom来访问
关于eject命令,可以使用来弹出光驱或磁盘。
实际应用场景,如果在管理非常多的主机的时候,发现其中有一台上面有一个磁盘坏的时候,可以将其上面的光驱弹出,以便立即发现变化的主机,从而准确定位。
eject 弹出光驱托盘
ejetc -t 收起光驱托盘
关于制作光盘ISO,最简单的方式就是
cp /dev/cdrom file.iso
dd if=/dev/cdrom of=file.iso