24、Linux文件系统及分区挂载

24.1 Linux支持的文件系统

1、文件操作:

    打开,关闭,创建,删除,修改

2、文件系统类型(Linux几乎全部支持)

FAT32,NTFS,ISO9660,CIFS,ext2(CentOS5),ext3(CentOS5,6),ext4(CentOS6,7),xfs(CentOS7),btrfs(CentOS7),reiserfs,jfs,nfs,ocfs2,gfs2

swap:交换分区(可以将硬盘当做内存用的部分,将一些不常用的进程放于swap当中)

数据库:swap可以分配小一点(512M,1G左右)

hadoop:swap可以分配大一点(8G甚至以上,太大影响系统速度)

光盘:iso9660

Windows:fat32,NTFS

UNIX:FFS,UFS,JFS2

网络文件系统:NFS,CIFS

集群文件系统:GFS2,OCFS2

分布式文件系统:ceph

moosefs,mogilefs,GlusterFS,Lustre

根据其是否支持“journal”功能:

日志文件系统(有日志区域):ext3,ext4,xfs,…

非日志型文件系统(无日志区域):ext2,vfat

3、文件系统的组成部分:

内核中的模块:ext4,xfs,vfat

用户空间的管理工具:mkfs.ext2,mkfs.ext4,mkfs.vffat(FAT32)

4、Linux VFS:Virtual File System(虚拟文件系统):

用来统一各种文件系统,为开发者提供一个标准的文件接口,所以Linux支持众多的文件系统

查看linux支持的文件系统:

[root@localhost ~]# cat /proc/filesystems 

nodev   sysfs

nodev   rootfs

nodev   ramfs

nodev   bdev

nodev   proc

nodev   cgroup

nodev   cpuset

nodev   tmpfs

nodev   devtmpfs

nodev   debugfs

nodev   securityfs

nodev   sockfs

nodev   pipefs

nodev   anon_inodefs

nodev   configfs

nodev   devpts

nodev   hugetlbfs

nodev   autofs

nodev   pstore

nodev   mqueue

nodev   selinuxfs

    xfs

[root@localhost ~]# 

查看内核支持的模块(CentOS 7)

[root@localhost ~]# lsmod

Module                  Size  Used by

ip6t_rpfilter          12595  1 

ipt_REJECT             12541  2 

nf_reject_ipv4         13373  1 ipt_REJECT

ip6t_REJECT            12625  2 

nf_reject_ipv6         13717  1 ip6t_REJECT

xt_conntrack           12760  17 

ip_set                 36439  0 

nfnetlink              14696  1 ip_set

ebtable_nat            12807  1 

ebtable_broute         12731  1 

bridge                136173  1 ebtable_broute

stp                    12976  1 bridge

llc                    14552  2 stp,bridge

ip6table_nat           12864  1 

nf_conntrack_ipv6      18935  10 

nf_defrag_ipv6         35104  1 nf_conntrack_ipv6

nf_nat_ipv6            14131  1 ip6table_nat

ip6table_mangle        12700  1 

ip6table_security      12710  1 

ip6table_raw           12683  1 

iptable_nat            12875  1 

nf_conntrack_ipv4      15053  9 

nf_defrag_ipv4         12729  1 nf_conntrack_ipv4

nf_nat_ipv4            14115  1 iptable_nat

nf_nat                 26787  2 nf_nat_ipv4,nf_nat_ipv6

nf_conntrack          133387  6 nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_conntrack_ipv4,nf_conntrack_ipv6

iptable_mangle         12695  1 

iptable_security       12705  1 

iptable_raw            12678  1 

ebtable_filter         12827  1 

ebtables               35009  3 ebtable_broute,ebtable_nat,ebtable_filter

ip6table_filter        12815  1 

ip6_tables             26901  5 ip6table_filter,ip6table_mangle,ip6table_security,ip6table_nat,ip6table_raw

iptable_filter         12810  1 

vmw_vsock_vmci_transport    30577  1 

vsock                  35327  2 vmw_vsock_vmci_transport

iosf_mbi               13523  0 

crc32_pclmul           13113  0 

ghash_clmulni_intel    13259  0 

aesni_intel            69884  0 

lrw                    13286  1 aesni_intel

gf128mul               14951  1 lrw

glue_helper            13990  1 aesni_intel

ablk_helper            13597  1 aesni_intel

cryptd                 20359  3 ghash_clmulni_intel,aesni_intel,ablk_helper

ppdev                  17671  0 

btusb                  41436  0 

btrtl                  12945  1 btusb

btbcm                  14040  1 btusb

btintel                15709  1 btusb

bluetooth             544565  5 btbcm,btrtl,btusb,btintel

vmw_balloon            18190  0 

joydev                 17377  0 

rfkill                 22391  1 bluetooth

sg                     40721  0 

pcspkr                 12718  0 

ahci                   34042  0 

libahci                31992  1 ahci

nfit                   49183  0 

nvme                   27722  0 

nvme_core              52964  1 nvme

libnvdimm             132047  1 nfit

parport_pc             28165  0 

parport                42299  2 ppdev,parport_pc

shpchp                 37032  0 

i2c_piix4              22390  0 

vmw_vmci               67013  1 vmw_vsock_vmci_transport

ip_tables              27115  5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw

xfs                   978100  3 

libcrc32c              12644  3 xfs,nf_nat,nf_conntrack

sd_mod                 46322  3 

crc_t10dif             12714  1 sd_mod

sr_mod                 22416  0 

cdrom                  42556  1 sr_mod

crct10dif_generic      12647  0 

ata_generic            12910  0 

pata_acpi              13038  0 

vmwgfx                235405  1 

drm_kms_helper        159169  1 vmwgfx

syscopyarea            12529  1 drm_kms_helper

sysfillrect            12701  1 drm_kms_helper

sysimgblt              12640  1 drm_kms_helper

fb_sys_fops            12703  1 drm_kms_helper

ttm                    99345  1 vmwgfx

drm                   370825  4 ttm,drm_kms_helper,vmwgfx

crct10dif_pclmul       14289  1 

crct10dif_common       12595  3 crct10dif_pclmul,crct10dif_generic,crc_t10dif

crc32c_intel           22079  1 

mptspi                 22542  2 

serio_raw              13413  0 

i2c_core               40756  3 drm,i2c_piix4,drm_kms_helper

e1000                 137500  0 

ata_piix               35038  0 

scsi_transport_spi     30732  1 mptspi

libata                238896  5 ahci,pata_acpi,libahci,ata_generic,ata_piix

mptscsih               40150  1 mptspi

mptbase               105960  2 mptspi,mptscsih

dm_mirror              22124  0 

dm_region_hash         20813  1 dm_mirror

dm_log                 18411  2 dm_region_hash,dm_mirror

dm_mod                123303  11 dm_log,dm_mirror

[root@localhost ~]# 

Linux每个分区就可以使用一个独立的文件系统,但最后都要被挂载在根目录下

CPU分为四个环

    最内部的环ring0跑内核,最外部的环ring3跑软件,ring1,ring2不在使用

所以只有内核可以进行硬件调用,软件必须通过内核才能实现硬件的调用

24.2 磁盘管理

1、文件系统管理

创建文件系统:重新创建文件系统会损坏原有文件

mkfs: make file system

(1)-t FSTYPE 

mkfs -t ext2 = mkfs.ext2

mkfs -t ext3 = mkfs.ext3 = mke2fs -j = mke2fs -t ext3

(2)mkfs.FS_TYPE /dev/DEVICE (FS_TYPE指的是文件系统类型)

mke2fs:专门管理ext系列文件系统:

-t {ext2|ext3|ext4}:指定格式

-j: 创建ext3类型文件系统(相当于-t ext3)

-b BLOCK_SIZE: 指定块大小,默认为4096;可用取值为1024、2048或4096;

-L LABEL:指定分区卷标;

-m #: 指定预留给超级用户的块数百分比(为管理人员预备的)

-i #: 用于指定为多少字节的空间创建一个inode,默认为8192;此大小不应小于block大小;

-N #: 指定inode个数;

-F: 强制创建文件系统;

-E: 用户指定额外文件系统属性; 

-O FEATURE[,…]:启用指定特性

-O ^FEATURE:关闭指定特性

[root@localhost ~]# mke2fs -b 1024 -m 3 -L MYDATA /dev/sdc

mke2fs 1.42.9 (28-Dec-2013)

/dev/sdc is entire device, not just one partition!

Proceed anyway? (y,n) y

Filesystem label=MYDATA

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

65536 inodes, 1048576 blocks

31457 blocks (3.00%) reserved for the super user

First data block=1

Maximum filesystem blocks=68157440

128 block groups

8192 blocks per group, 8192 fragments per group

512 inodes per group

Superblock backups stored on blocks: 

    8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553, 

    1024001

Allocating group tables: done                            

Writing inode tables: done                            

Writing superblocks and filesystem accounting information: done   

[root@localhost ~]# blkid /dev/sdc

/dev/sdc: LABEL="MYDATA" UUID="a59eac3b-c56d-40a9-b433-972cdb48afa6" TYPE="ext2" 

[root@localhost ~]# 

blkid: 查询或查看磁盘设备的相关属性

-U UUID:根据指定的UUID来查找对应的设备

-L  LABEL:根据制定的LABEL来查找对应的设备

    [root@localhost ~]# blkid

    /dev/sda1: UUID="c3a88fcb-06d4-4775-9a27-971904c2b154" TYPE="xfs" 

    /dev/sda2: UUID="0R0BFP-witm-SfMZ-d9an-26rT-JDtg-XzwGqy" TYPE="LVM2_member" 

    /dev/mapper/centos-root: UUID="71c7bb53-2826-49e8-bb0c-d6a112a01836" TYPE="xfs" 

    /dev/mapper/centos-swap: UUID="eb2dd31d-36f2-47e7-a474-7025f2dd6a1b" TYPE="swap" 

    /dev/mapper/centos-home: UUID="92db6af3-9a84-4284-9a59-d4e9f79cb7ab" TYPE="xfs

[root@localhost ~]# mkfs.ext4 /dev/sdc

mke2fs 1.42.9 (28-Dec-2013)

/dev/sdc is entire device, not just one partition!

Proceed anyway? (y,n) y

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

65536 inodes, 262144 blocks

13107 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=268435456

8 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks: 

    32768, 98304, 163840, 229376

Allocating group tables: done                            

Writing inode tables: done                            

Creating journal (8192 blocks): done

Writing superblocks and filesystem accounting information: done

[root@localhost ~]# blkid /dev/sdc

/dev/sdc: UUID="ae7e23e0-db47-4b53-bb5d-fda50773ab8c" TYPE="ext4" 

[root@localhost ~]# 

[root@localhost ~]# mkfs.ext4 /dev/sdc

mke2fs 1.42.9 (28-Dec-2013)

/dev/sdc is entire device, not just one partition!

Proceed anyway? (y,n) y

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

65536 inodes, 262144 blocks

13107 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=268435456

8 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks: 

    32768, 98304, 163840, 229376

Allocating group tables: done                            

Writing inode tables: done                            

Creating journal (8192 blocks): done

Writing superblocks and filesystem accounting information: done

[root@localhost ~]# blkid /dev/sdc

/dev/sdc: UUID="ae7e23e0-db47-4b53-bb5d-fda50773ab8c" TYPE="ext4" 

[root@localhost ~]# 

[root@localhost ~]# mkfs.xfs -L MYDATA /dev/sdc

mkfs.xfs: /dev/sdc appears to contain an existing filesystem (ext4).

mkfs.xfs: Use the -f option to force overwrite.

[root@localhost ~]# mkfs.xfs -f /dev/sdc

meta-data=/dev/sdc               isize=512    agcount=4, agsize=65536 blks

         =                       sectsz=512   attr=2, projid32bit=1

         =                       crc=1        finobt=0, sparse=0

data     =                       bsize=4096   blocks=262144, imaxpct=25

         =                       sunit=0      swidth=0 blks

naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

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

[root@localhost ~]# blkid /dev/sdc

/dev/sdc: UUID="dd14e08c-1757-4cc5-986c-53de7ec05f13" TYPE="xfs" 

[root@localhost ~]# mkfs.btrfs -f /dev/sdc

btrfs-progs v4.9.1

See http://btrfs.wiki.kernel.org for more information.

Label:              (null)

UUID:               9671cf06-920b-4738-9bba-81a3b00fc2db

Node size:          16384

Sector size:        4096

Filesystem size:    1.00GiB

Block groups:

  Data:             single            8.00MiB

  Metadata:         DUP              51.19MiB

  System:           DUP               8.00MiB

SSD detected:       no

Incompat features:  extref, skinny-metadata

Number of devices:  1

Devices:

   ID        SIZE  PATH

    1     1.00GiB  /dev/sdc

[root@localhost ~]# blkid /dev/sdc

/dev/sdc: UUID="9671cf06-920b-4738-9bba-81a3b00fc2db" UUID_SUB="20223c43-c91d-4a50-9297-66e3433f6e11" TYPE="btrfs" 

[root@localhost ~]# 

2、其他常用工具

(1)e2label DEVICE [LABEL]

用于查看或定义EXT文件系统的卷标

[root@localhost ~]# e2label /dev/sdc

MYDATA

[root@localhost ~]# e2label /dev/sdc DATA

[root@localhost ~]# e2label /dev/sdc

DATA

[root@localhost ~]# 

(2)tune2fs: 调整文件系统的相关可调整属性的值

-l:查看指定文件系统超级块信息;super block

-j: 不损害原有数据,将ext2升级为ext3;

-L LABEL: 设定或修改卷标; 

-m #: 调整预留百分比;

-r #: 指定预留块数;

-O:文件系统属性启用或禁用

-o: 设定默认挂载选项;

        acl

-c #:指定挂载次数达到#次之后进行自检,0或-1表关闭此功能;

-i #: 每挂载使用多少天后进行自检;0或-1表示关闭此功能;

-l: 显示超级块中的信息;

[root@localhost ~]# tune2fs -l /dev/sdc

tune2fs 1.42.9 (28-Dec-2013)

Filesystem volume name:   DATA

Last mounted on:          <not available>

Filesystem UUID:          a59eac3b-c56d-40a9-b433-972cdb48afa6

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)

Filesystem features:      ext_attr resize_inode dir_index filetype sparse_super

Filesystem flags:         signed_directory_hash 

Default mount options:    user_xattr acl

Filesystem state:         clean

Errors behavior:          Continue

Filesystem OS type:       Linux

Inode count:              65536

Block count:              1048576

Reserved block count:     31457

Free blocks:              1029050

Free inodes:              65525

First block:              1

Block size:               1024

Fragment size:            1024

Reserved GDT blocks:      256

Blocks per group:         8192

Fragments per group:      8192

Inodes per group:         512

Inode blocks per group:   128

Filesystem created:       Mon Jul 12 23:36:08 2021

Last mount time:          n/a

Last write time:          Mon Jul 12 23:40:37 2021

Mount count:              0

Maximum mount count:      -1

Last checked:             Mon Jul 12 23:36:08 2021

Check interval:           0 (<none>)

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:      89099a6f-887d-4624-88e4-97ad656b609e

[root@localhost ~]# 

(3)dumpe2fs: 显示文件属性信息

dumpe2fs [ -bfhixV ] [ -o superblock=superblock ] [ -o blocksize=blocksize ] device

    -h: 只显示超级块中的信息

[root@localhost ~]# dumpe2fs /dev/sdc

dumpe2fs 1.42.9 (28-Dec-2013)

Filesystem volume name:   DATA

Last mounted on:          <not available>

Filesystem UUID:          a59eac3b-c56d-40a9-b433-972cdb48afa6

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)

Filesystem features:      ext_attr resize_inode dir_index filetype sparse_super

Filesystem flags:         signed_directory_hash 

Default mount options:    user_xattr acl

Filesystem state:         clean

Errors behavior:          Continue

Filesystem OS type:       Linux

Inode count:              65536

Block count:              1048576

Reserved block count:     31457

Free blocks:              1029050

Free inodes:              65525

First block:              1

Block size:               1024

Fragment size:            1024

Reserved GDT blocks:      256

Blocks per group:         8192

Fragments per group:      8192

Inodes per group:         512

Inode blocks per group:   128

Filesystem created:       Mon Jul 12 23:36:08 2021

Last mount time:          n/a

Last write time:          Mon Jul 12 23:40:37 2021

Mount count:              0

Maximum mount count:      -1

Last checked:             Mon Jul 12 23:36:08 2021

Check interval:           0 (<none>)

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:      89099a6f-887d-4624-88e4-97ad656b609e

Group 0: (Blocks 1-8192)

  Primary superblock at 1, Group descriptors at 2-5

  Reserved GDT blocks at 6-261

  Block bitmap at 262 (+261), Inode bitmap at 263 (+262)

  Inode table at 264-391 (+263)

  7787 free blocks, 501 free inodes, 2 directories

  Free blocks: 406-8192

  Free inodes: 12-512

Group 1: (Blocks 8193-16384)

  Backup superblock at 8193, Group descriptors at 8194-8197

  Reserved GDT blocks at 8198-8453

  Block bitmap at 8454 (+261), Inode bitmap at 8455 (+262)

  Inode table at 8456-8583 (+263)

  7801 free blocks, 512 free inodes, 0 directories

  Free blocks: 8584-16384

  Free inodes: 513-1024

Group 2: (Blocks 16385-24576)

  Block bitmap at 16385 (+0), Inode bitmap at 16386 (+1)

  Inode table at 16387-16514 (+2)

  8062 free blocks, 512 free inodes, 0 directories

  Free blocks: 16515-24576

  Free inodes: 1025-1536

(4)fsck(file system check): 检查并修复Linux文件系统

    -t FSTYPE: 指定文件系统类型=fsck.FS_TYPE(FS_TYPE一定要与分区上已有文件类型相同)

    -a: 自动修复

[root@localhost ~]# blkid /dev/sdc

/dev/sdc: LABEL="DATA" UUID="a59eac3b-c56d-40a9-b433-972cdb48afa6" TYPE="ext2" 

[root@localhost ~]# fsck.ext2 /dev/sdc

e2fsck 1.42.9 (28-Dec-2013)

DATA: clean, 11/65536 files, 19526/1048576 blocks

(5)e2fsck: 专用于修复ext2/ext3文件系统

    -f: 强制检查;(检查前需要先卸载设备)

    -p: 自动修复;

(6)mount:挂载

    挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录成为其他文件访问入口的行为称之为是挂载。

    卸载:解除此关联关系的过程称之为卸载;

mount 设备 挂载点

 mount DEVICE MOUNT_POINT

        -o loop: 挂载本地回环设备

    mount /dev/sda5 /mnt/test

    设备:

        设备文件:/dev/sda5

        卷标:LABEL=“”

        UUID: UUID=“”

    dir,挂载点:目录

        要求:

            1、此目录没有被其它进程使用;

            2、目录得事先存在;

            3、目录中的原有的文件将会暂时隐藏(最好选择空文件夹进行挂载);

mount: 显示当前系统已经挂载的设备及挂载点

mount [options] [-o options] DEVICE MOUNT_POINT

    -a: 自动挂载所有支持自动挂载的设备,(在/etc/fstab文件中定义,且挂载选项中有自动挂载功能)

    -n: 任何设备挂载时,默认都会更新/etc/mtab,使用—n选项意味着挂载设备时,不把信息写入此文件;

    -t FSTYPE: 指定正在挂载设备上的文件系统的类型;不使用此选项时,mount会调用blkid命令获取对应文件系统的类型;

    -r: (readonly)只读挂载,挂载光盘时常用此选项

    -w: (read and write)读写挂载

-L:以LABEL指定挂载设备

-U:以UUID指定挂载设备

    -o: 指定额外的挂载选项,也即指定文件系统启用的属性;

async:异步模式(速度快)

sync:同步模式(数据更安全,速度慢得多)

remount: 重新挂载当前文件系统

ro: 挂载为只读

rw: 读写挂载

atime:(默认)每次访问文件/目录都会更新访问时间戳

noatime:访问文件/目录不会更新访问时间戳(一般关闭,对于访问非常多的文件能显著提高访问速度)

diratime/nodiratime:目录的访问时间戳

auto/noauto:是否支持自动挂载

exec/noexec:是否支持文件系统上的应用程序运行为进程

dev/nodev:是否支持在此文件系统上使用设备文件

suid/noosuid:是否允许此文件系统更改SUID(避免黑客通过系统更改SUID)

remount:重新挂载

user/nouser:是否允许用户挂载此设备

acl:启动此文件系统上的acl功能

注:上述选项可多个同时使用,彼此使用逗号分割,尽量避免普通用户挂载

默认挂载选项:defaults

 defaults

              Use default options: rw, suid, dev, exec, auto, nouser, and async.

DEVICE为要挂载的设备:

(1)设备文件:例如/dev/sda1

(2)卷标:-L ‘LABEL‘,例如 -L 'MYDATA'

(3)UUID,-U  'UUID'

(4)伪文件系统名称:proc,sysfs,devtmpfs,configfs

挂载完成后,要通过挂载点访问对应文件系统上的文件;

(7)/etc/fstab

文件系统的配置文件/etc/fstab,OS在初始时,会自动用mount挂载此文件中每行定义的每个文件系统

每行定义一个要挂载的文件系统

    [neeq@gbiccxbrl ~]$ cat /etc/fstab

    #

    # /etc/fstab

    # Created by anaconda on Fri Dec 18 10:31:29 2015

    #

    # 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

    #

要挂载的设备             挂载点                 文件系统类型    挂载选项        转储频率(备份频率)       文件系统自动检测次序

                                                                                                                                                                            (每多少天做一次完全备份)            (只有根可以为1)

    UUID=55b61d2f-b139-4336-a8ab-54389d9555a6 /                       ext4    defaults        1 1

    UUID=c49032e0-d885-4d14-91fd-ff973cea66c0 /boot                   ext4    defaults        1 2

    UUID=c31675c1-786c-479f-a6cf-01e263d2b4eb 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=d9bf2e82-327b-488d-b606-55801d31a41d /svn                    ext4    defaults        1 1

    UUID=5999452a-7b86-42dc-8be9-fb31b0752f0b /webserver              ext4    defaults        1 1

fstab目录详解

要挂载的设备或伪文件系统:

设备文件,LABEL(LABEL=“”)、UUID(UUID=“”),伪文件系统名称(proc,sysfs)

挂载选项:

defaults

转储频率(一般不配置转储):

0:不做备份

1:每天转储

2:每隔一天转储

自检次序(一般不配置自检):

0:不自检

1:首先自检,一般只有rootfs才用1

mount -a:挂载/etc/fstab文件中定义的所有文件系统

fuser: 验正进程正在使用的文件或套接字文件

        -v: 查看某文件上正在运行的进程

        -k:杀死正在访问对应文件的进程

        -m:杀死正在访问挂载点的进程

    fuser -km MOUNT_POINT:终止正在访问此挂载点的所有进程

umount: 卸载某文件系统

    umount 设备/挂载点

    卸载注意事项:

        挂载的设备没有进程使用;

查看正在访问制定文件系统的用户

fuser -v /挂载点

清除正在访问此挂载点的所有进程

fuser -km /挂载点

24.3 swap分区及相关配置(非必要情况下建议不要使用交换分区)

    CPU多路复用通过:time slice

    X86CPU(32bit)当中

             Memory引入了虚拟地址,线性地址(每个进程认为自己有4G空间可用)

            对内存进行分页(page frame)

    如果内存满了,可以在硬盘上划分出一部分空间,将不常用的内存里面的进程移到硬盘当中

     这部分空间称之为是交换空间

    swap in:将内存里面的进程移到硬盘当中

    swap out:将硬盘里面的进程移到内存当中

    交换空间的存在使得内存可以过载使用

    Windows中称之为是虚拟内存

    linux中的交换分区为swap分区:

1、free

    查看当前系统的内存和虚拟内存使用情况 

    -m:以M为单位显示

    -h:进行单位换算

    [root@Daniel-R480 ~]# free

                  total        used        free      shared  buff/cache   available

    Mem:       33404872     6063620    27111900       17720      229352    27207520

    Swap:      31018612       70528    30948084

    [root@Daniel-R480 ~]# free -m

                  total        used        free      shared  buff/cache   available

    Mem:          32621        5922       26475          17         223       26568

    Swap:         30291          68       30222

    [root@Daniel-R480 ~]# free -h

                  total        used        free      shared  buff/cache   available

    Mem:            31G        5.8G         25G         17M        223M         25G

    Swap:           29G         68M         29G

    [root@Daniel-R480 ~]#

2、创建交换分区步骤:

(1)fdisk命令中,调整分区类型为82;

(2)mkswap /dev/sda8

-L LABEL

-U UUID

(3)启用或者关闭swap

swapon /dev/sda8(启用此设备中的交换空间)

-a:启用所有的定义在/etc/fstab文件中的交换设备

-p PRIORITY:指定优先级

swapoff /dev/sda8

3、回环设备及dd命令

    loopback, 使用软件来模拟实现硬件

    可使用回环设备来创建swap空间

    创建一个镜像文件,120G

dd命令:复制并转换文件

复制底层的数据流

if=数据来源

of=数据存储目标

bs=1(block size,复制的文件大小)

count=2(复制数目)

seek=#: 创建数据文件时,跳过的空间大小(可以用来创建虚假大小的文件,可以du来确认真实大小);

磁盘拷贝:

dd if=/dev/sda of=/dev/sdb

MBR的备份和还原    

    dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1

    dd if=/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1

破坏MBR中的bootloader:

dd if=/dev/zero of=/dev/sda bs=256 count=1

    创建一个大小为1024的镜像文件

    dd if=/dev/zero of=/var/swapfile bs=1M count=1024

    /dev/zero:可以无限的出0

    /dev/null:可以吞掉所有的数据

24.4 光盘挂载

挂载光盘设备

光盘设备文件:

IDE:/dev/hdc

SATA:/dev/sr0

符号链接文件:

/dev/cdrom

/dev/cdrw

/dev/dvd

/dev/dvdrw

mount -r /dev/cdrom /media/cdrom

unmount /dev/cdrom

练习:

1、创建一个2G的分区,文件系统为ext2,卷标为DATA,块大小为1024,预留管理空间为磁盘分区的8%;挂载至/backup目录,要求使用卷标进行挂载,且在挂载时启动此文件系统上的acl功能;

[root@localhost ~]# fdisk -l

#查看目前存在的硬盘,有sda,sdb,sdc,nvme0n1四块盘

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x000acbe0

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *        2048     2099199     1048576   83  Linux

/dev/sda2         2099200   209715199   103808000   8e  Linux LVM

Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/centos-swap: 8455 MB, 8455716864 bytes, 16515072 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/nvme0n1: 21.5 GB, 21474836480 bytes, 41943040 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/centos-home: 44.1 GB, 44149243904 bytes, 86228992 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@localhost ~]# fdisk /dev/sdb

#选择sdb进行实验

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.

Device does not contain a recognized partition table

Building a new DOS disklabel with disk identifier 0xfa7592c5.

Command (m for help): n

#创建新的分区

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

Select (default p): p

#选择基本分区或者是扩展分区,这里选择基本分区

Partition number (1-4, default 1): 1

First sector (2048-41943039, default 2048): 2048

#配置初始sector,默认即可

Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 2g^H

#配置最后的sector,这个根据需求,按照标准来配置,前3个是错误示范

Value out of range.

Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 2g

Value out of range.

Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 2G

Value out of range.

Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G

Partition 1 of type Linux and of size 2 GiB is set

Command (m for help): w

#保存退出

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

[root@localhost ~]# partx /dev/sdb

#声明分区,让内核进行读取

NR START     END SECTORS SIZE NAME UUID

 1  2048 4196351 4194304   2G      

[root@localhost ~]# fdisk -l /dev/sdb

#检查分区是否正常识别

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0xfa7592c5

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048     4196351     2097152   83  Linux

#分区已经显示出来了,说明正常识别

[root@localhost ~]# mkfs.ext2 -L DATA -b 1024 -m 8 /dev/sdb1

#对分区进行格式化,配置文件系统

mke2fs 1.42.9 (28-Dec-2013)

Filesystem label=DATA

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

131072 inodes, 2097152 blocks

167772 blocks (8.00%) reserved for the super user

First data block=1

Maximum filesystem blocks=69206016

256 block groups

8192 blocks per group, 8192 fragments per group

512 inodes per group

Superblock backups stored on blocks: 

   8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553, 

   1024001, 1990657

Allocating group tables: done                            

Writing inode tables: done                            

Writing superblocks and filesystem accounting information: done   

[root@localhost ~]# mkdir /backup

#创建分区要挂载的位置,这里是/backup

mkdir: cannot create directory ‘/backup’: File exists

[root@localhost ~]# blkid /dev/sdb1

#查看分区情况

/dev/sdb1: LABEL="DATA" UUID="0a96b1d2-eebe-4245-82b9-612ff8cde44c" TYPE="ext2" 

[root@localhost ~]# mount -o acl /dev/sdb1 /backup

#挂载分区至/backup,并配置acl

[root@localhost ~]# df -h

#检查是否正常挂载,出现sdb1即说明正常挂载

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   50G  2.6G   48G   6% /

devtmpfs                 3.9G     0  3.9G   0% /dev

tmpfs                    3.9G     0  3.9G   0% /dev/shm

tmpfs                    3.9G  8.7M  3.9G   1% /run

tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup

/dev/mapper/centos-home   42G   33M   42G   1% /home

/dev/sda1               1014M  143M  872M  15% /boot

tmpfs                    781M     0  781M   0% /run/user/0

/dev/sdb1                2.0G  3.1M  1.9G   1% /backup

[root@localhost ~]# 

2、将此文件系统的超级块中的信息中包含了block和inode的行保存至/tmp/partition.txt中;

#两个语句效果一样,选择一个进行执行即可,之后可以通过vim查看执行结果

[root@localhost ~]# dumpe2fs -h /dev/sdb1 | egrep -i  "block|inode" >> /tmp/partition.txt  

dumpe2fs 1.42.9 (28-Dec-2013)

[root@localhost ~]# vim /tmp/partition.txt 

[root@localhost ~]# tune2fs -l /dev/sdb1 | egrep -i  "block|inode" >> /tmp/partition.txt  

[root@localhost ~]# vim /tmp/partition.txt 

[root@localhost ~]# 

3、复制/etc目录中的所有文件至此文件系统;而后调整此文件系统类型为ext3,要求不能损坏已经复制而来的文件;

[root@localhost ~]# cp -r /etc/* /backup/

[root@localhost ~]# tune2fs -j  /dev/sdb1

tune2fs 1.42.9 (28-Dec-2013)

Creating journal inode: done

[root@localhost ~]# blkid /dev/sdb1

#查看分区类型

/dev/sdb1: LABEL="DATA" UUID="0a96b1d2-eebe-4245-82b9-612ff8cde44c" SEC_TYPE="ext2" TYPE="ext3" 

[root@localhost ~]# ls /backup/

#查看文件是否备份过来

4、调整其预留百分比为3%;

[root@localhost ~]# tune2fs -m 3 /dev/sdb1

tune2fs 1.42.9 (28-Dec-2013)

Setting reserved blocks percentage to 3% (62914 blocks)

[root@localhost ~]# 

5、以重新挂载的方式挂载此文件系统为不更新访问时间戳,并验正其效果;

[root@localhost ~]# stat /backup/inittab 

#当前时间戳

  File: ‘/backup/inittab’

  Size: 511          Blocks: 2          IO Block: 1024   regular file

Device: 811h/2065d   Inode: 53          Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Context: unconfined_u:object_r:unlabeled_t:s0

Access: 2021-07-13 22:05:24.964712195 -0400

Modify: 2021-07-13 22:05:24.984712387 -0400

Change: 2021-07-13 22:05:24.984712387 -0400

 Birth: -

[root@localhost ~]# cat /backup/inittab 

#cat一下,修改时间戳

# inittab is no longer used when using systemd.

#

# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.

#

# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target

#

# systemd uses 'targets' instead of runlevels. By default, there are two main targets:

#

# multi-user.target: analogous to runlevel 3

# graphical.target: analogous to runlevel 5

#

# To view current default target, run:

# systemctl get-default

#

# To set a default target, run:

# systemctl set-default TARGET.target

#

[root@localhost ~]# stat /backup/inittab 

#stat可以看到accesstime更新了

  File: ‘/backup/inittab’

  Size: 511          Blocks: 2          IO Block: 1024   regular file

Device: 811h/2065d   Inode: 53          Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Context: unconfined_u:object_r:unlabeled_t:s0

Access: 2021-07-13 22:16:20.348151973 -0400

Modify: 2021-07-13 22:05:24.984712387 -0400

Change: 2021-07-13 22:05:24.984712387 -0400

 Birth: -

[root@localhost ~]# mount -o remount,noatime /backup/

#重新挂载为accesstime不随访问更改的系统

[root@localhost ~]# cat /backup/inittab

#cat测试,此时时间戳应该不会变 

# inittab is no longer used when using systemd.

#

# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.

#

# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target

#

# systemd uses 'targets' instead of runlevels. By default, there are two main targets:

#

# multi-user.target: analogous to runlevel 3

# graphical.target: analogous to runlevel 5

#

# To view current default target, run:

# systemctl get-default

#

# To set a default target, run:

# systemctl set-default TARGET.target

#

[root@localhost ~]# stat /backup/inittab

#stat测试,时间戳确实没变

  File: ‘/backup/inittab’

  Size: 511          Blocks: 2          IO Block: 1024   regular file

Device: 811h/2065d   Inode: 53          Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Context: unconfined_u:object_r:unlabeled_t:s0

Access: 2021-07-13 22:16:20.348151973 -0400

Modify: 2021-07-13 22:05:24.984712387 -0400

Change: 2021-07-13 22:05:24.984712387 -0400

 Birth: -

[root@localhost ~]# 

6、对此文件系统强行做一次检测;

[root@localhost ~]# e2fsck -f /dev/sdb1

e2fsck 1.42.9 (28-Dec-2013)

/dev/sdb1 is mounted.

e2fsck: Cannot continue, aborting.

[root@localhost ~]# umount /dev/sdb1

[root@localhost ~]# e2fsck -f /dev/sdb1

e2fsck 1.42.9 (28-Dec-2013)

Backing up journal inode block information.

Moving journal from /.journal to hidden inode.

Pass 1: Checking inodes, blocks, and sizes

Pass 2: Checking directory structure

Pass 3: Checking directory connectivity

Pass 4: Checking reference counts

Pass 5: Checking group summary information

DATA: ***** FILE SYSTEM WAS MODIFIED *****

DATA: 2372/131072 files (5.6% non-contiguous), 97234/2097152 blocks

[root@localhost ~]# 

7、删除复制而来的所有文件,并将此文件系统重新挂载为同步(sync);而后再次复制/etc目录中的所有文件至此挂载点,体验其性能变化;

[root@localhost ~]# mount /dev/sdb1 /backup/

[root@localhost ~]# mount -o remount,sync /backup

[root@localhost ~]# cp -ru /etc/* /backup/

[root@localhost ~]# cd 

评论关闭。