Linux磁盘使用及文件系统管理

Linux磁盘使用及文件系统管理

欢迎来到 来到大浪涛天的博客

一、Linux磁盘使用及文件系统管理

1. mount 命令

mount [-fnrsvw] [-t vfstype] [-o options] device dir

1-1. 命令选项:

  1. -r:只读
  2. -w:只写
  3. -n:默认情况下设备的挂载和卸载的操作会同步更新到/etc/mtab文件中,-n用于禁止此特性
  4. -t vfstype:指明要挂载的文件系统的类型,多数情况下可以省略,此时mount通过blkid来判断要挂载设备的文件系统类型
  5. -L:挂载的时候以卷标的方式指明设备
[root@test01 /]# mke2fs -L mydata /dev/sdb1
[root@test01 /]# blkid /dev/sdb1
/dev/sdb1: LABEL="mydata" UUID="6e6ccefa-884b-4271-8547-8368637c15dd" TYPE="ext2" 
[root@test01 /]# mount -L mydata /mnt
  1. -U:挂载的时候以uuid来指明设备
[root@test01 mnt]# blkid /dev/sdb1
/dev/sdb1: UUID="b95393c7-b40d-4767-9d5a-be05c811ed0d" TYPE="xfs" 
[root@test01 mnt]# mount -U b95393c7-b40d-4767-9d5a-be05c811ed0d /mnt
  1. -o options:挂载选项
  • sync/async:同步/异步操作;
  • atime/noatime:文件或目录被访问时是否更新其访问时间戳;同时对文件和目录生效,关闭对性能有大幅度提升,Centos7 上默认是延迟的,所以有时候访问文件的时候,访问的时间戳没有即时更新
  • diratime/nodiratime:目录在访问时是否更新其访问的时间戳;只对目录生效,关闭对性能有大幅度提升,Centos7 上默认是延迟的,所以有时候访问文件的时候,访问的时间戳没有即时更新
  • acl:支持使用文件acl功能
  • remount:重新挂载后面添加新的属性,例如下面这个,重新挂载让/dev/sdb1这分区支持acl。
  [root@test01 /]# mount -o remount,acl /mnt
  [root@test01 /]# setfacl -m u:test:rw- /mnt/fstab
  [root@test01 /]# getfacl /mnt/fstab 
可以使用tune2fs来更改文件系统的选项,让该文件系统支持acl的功能,这样即使mount -o 没加acl的选项依然支持acl,如:
  [root@test01 /]# tune2fs -o acl /dev/sdb1
  [root@test01 /]# tune2fs  -l /dev/sdb1 |grep "Default mount"
  Default mount options:    user_xattr acl
  • ro:只读
  • rw:读写
  • dev/nodev:此设备是否允许创建设备文件
  • exec/noexec:此设备是否允许被执行程序文件
  • auto/noauto:此设备是否允许自动挂载
  • user/nouser:是否允许普通用户挂载文件系统
  • suid/nosuid:是否允许程序文件上的suit/guid权限生效
  • defaults: Use default options: rw, suid, dev, exec, auto, nouser, and async.

1-2. mount 的bind功能

可以实现将一个目录绑定到另外一个目录,作为其临时访问入口

[root@test01 etc]# mkdir /network
[root@test01 etc]# mount --bind /etc/sysconfig/network-scripts/ /network/
[root@test01 etc]# ls /network |grep ifcfg-eth0
ifcfg-eth0
[root@test01 etc]# umount /network/
[root@test01 etc]# ls /network |grep ifcfg-eth0
[root@test01 etc]# echo $?
1

1-3. 查看当前系统下的mount选项

mount
cat /etc/mtab
cat /etc/proc/mounts
[root@test01 etc]# cat /proc/mounts 

1-4. 挂载特殊设备如光盘和iso文件

挂载光盘

mount -r /dev/cdrom /mnt
sr0是指sata接口的光驱设备
[root@test01 etc]# mount -r /dev/cdrom /media/
mount: 在 /dev/sr0 上找不到媒体

挂载本地的回环设备,如.iso或者.img等设备

mount -o loop /PATH/TO/SOME_LOOP_FILE MOUNT_POINT

1-5. umount的特殊情况处理

umount:如果卸载出现繁忙,有用户在访问,强行卸载 umount -lf

[root@test01 ~]# umount /mnt
umount: /mnt:目标忙。
        (有些情况下通过 lsof(8) 或 fuser(1) 可以
         找到有关使用该设备的进程的有用信息)
[root@test01 ~]# lsof /mnt
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    1619 root  cwd    DIR   8,17     4096    2 /mnt
[root@test01 ~]# fuser -v /mnt
                     用户     进程号 权限   命令
/mnt:                root     kernel mount /mnt
                     root       1619 ..c.. bash
[root@test01 ~]# fuser -km /mnt
/mnt:                 1619c
[root@test01 ~]# umount /mnt

2. swap文件的创建及启用

生产环境中sawp分区格外重要,特别是针对内存不够的服务器,当系统内存不够的时候,Kernel会将一部分睡眠状态的存储在内存的数据转储到swap分区当中,这样当转储完成后系统可以从内存空间释放这部分内存,
重新分配给需要内存的其他程序,所以swap分区也叫交换分区,值得注意的是交换分区的大小不是越大越好的,一般最大只能是内存的两倍,当内存足够大的时候,交换分区建议设置成和内存相同大小,因为交换分区
是直接使用硬盘的,当交换分区里的数据量太大很可能会出现性能瓶颈的。

2-1. mkswap 创建swap文件

mkswap 创建swap文件,用于增加swap分区的空间,如:

[root@test01 ~]# mkswap /dev/sdb1
mkswap: /dev/sdb1: warning: wiping old ext2 signature.
正在设置交换空间版本 1,大小 = 2096124 KiB
无标签,UUID=d869ebd3-e8f0-48a7-995a-f9d98862ec67

2-2. swapon,swapoff的用法

swapon和swapoff 分别用于启动和关闭swap文件,例如:

[root@test01 ~]# free -m |grep Swap
Swap:          1023           1        1022
[root@test01 ~]# swapon /dev/sdb1
[root@test01 ~]# free -m |grep Swap
Swap:          3070           1        3069
[root@test01 ~]# swapoff /dev/sdb1
[root@test01 ~]# free -m |grep Swap
Swap:          1023           1        1022

2-3. swap -a 的参数

-a 是自动挂载/etc/fstab里面设定了的swap分区,当/etc/fstab里定义好了,可以直接用swapon -a实现自动挂载swap文件。

3. /etc/fstab 文件:

设定除根文件系统以外的其他文件系统能够开机时自动挂载,每行定义一个要挂载的文件系统及相关属性,其中fstab包含6个字段,字段的相关详解如下:

  1. 要挂载的设备:
  • 设备文件
  • LABLE
  • UUID
  • 伪文件系统:如sysfs,proc,tmpfs等
  1. 挂载点
    swap 类型的文件挂载点为swap,其余的为自己设置的挂载点
  2. 文件系统类型
  3. 挂载选项
  • defaults,使用默认的挂载选项,centos7中的默认挂载选项有:rw, suid, dev, exec, auto, nouser, and async
  • 如果有多个挂载选项,彼此之间以“,”相分隔,如:defaults,acl,noatime,noexec
  1. 转储频率
  • 0: 从不备份;
  • 1: 每天备份;
  • 2: 每隔一天备份;
  1. 自检次序:
  • 0: 从不自检
    1. 首先自检,通常用于根文件系统,其他文件系统不能用1,否则会到维护模式
    1. 次级自检

4. df命令

df 用于显示文件系统磁盘空间的使用情况,命令格式为:
df [OPTION]... [FILE]...
常见参数有:

  1. -l: 仅显示本地文件系统的相关信息,网络文件系统则不显示
[root@test01 ~]# mount -t nfs 10.211.55.241:/home/test/1 /mnt
[root@test01 ~]# df -l |grep "/mnt"
[root@test01 ~]# df -h |grep "/mnt"
10.211.55.241:/home/test/1             30G   12G   18G   40% /mnt
  1. -h: 常见的格式显示出大小(例如:1K 234M 2G)
[root@test01 ~]# df -k |grep "/mnt"
10.211.55.241:/home/test/1            30705152  11980800  18724352   40% /mnt
[root@test01 ~]# df -h |grep "/mnt"
10.211.55.241:/home/test/1             30G   12G   18G   40% /mnt
  1. -i 显示inode的使用状态而非blocks的使用状态
[root@test01 ~]# df -i |head -n 2
文件系统                                Inode 已用(I)  可用(I) 已用(I)% 挂载点
/dev/mapper/centos_centos7--tmp-root 15360000  144235 15215765       1% /

5. du命令

显示指定的文件已使用的磁盘空间的总量,包括在层次结构中以 这些以指定文件为根的目录在内。这里的“已使用的磁盘空间”意思 为指定的文件下的整个文件层次结构所使用的空间。
在没给定参数的情况下,du 报告当前目录所使用的磁盘空间,命令格式为:
du [options] [file...]
常见参数有:

  1. -s: sumary,显示目录时不是显示某个文件的大小,而是显示目录的总的大小
[root@test01 ~]# du -sh /usr
3.3G    /usr
  1. -h: 常见的格式显示出大小(例如:1K 234M 2G)
[root@test01 ~]# du -sh /etc
41M     /etc

Linux磁盘使用及文件系统管理

上一篇:OC 底层探索 07、类的结构分析2 - cache_t


下一篇:linux中配置jenkins