Linux基础学习笔记之——磁盘与文件系统(二)

Linux磁盘与文件系统(二)

2、文件系统的简单操作

2.1、磁盘与目录的容量

现在我们知道磁盘的整体数据是在superblock区块中,但是每个个别文件的容量则在 inode 当中记录的。那如何在文字接口底下显示出这些数据呢?

  • df:列出文件系统的整体磁盘使用量;
  • du:评估文件系统的磁盘使用量(常用于推估目录所占容量)。

2.1.1、df

[root@server ~]# df [-ahikHTm] [目录或文件名]
选项与参数:
-a:列出所有的文件系统,包括系统特有的/proc等文件系统
-k:以Bytes的容量显示
-m:以MBytes的容量显示
-h:较为易读的方式显示
-H:以十进制代替二进制显示
-T:连同分区的文件系统名称也列出
-i:不用磁盘容量,而以inode数量显示
[root@server ~]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
devtmpfs                  485852       0   485852    0% /dev
tmpfs                     497840       0   497840    0% /dev/shm
tmpfs                     497840    7812   490028    2% /run
tmpfs                     497840       0   497840    0% /sys/fs/cgroup
/dev/mapper/centos-root 17811456 1436916 16374540    9% /
/dev/sda1                1038336  140028   898308   14% /boot
tmpfs                      99568       0    99568    0% /run/user/0

[root@server ~]# df -hi
文件系统                Inode 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs                 119K     385    119K       1% /dev
tmpfs                    122K       1    122K       1% /dev/shm
tmpfs                    122K     784    121K       1% /run
tmpfs                    122K      16    122K       1% /sys/fs/cgroup
/dev/mapper/centos-root  8.5M     32K    8.5M       1% /
/dev/sda1                512K     326    512K       1% /boot
tmpfs                    122K       1    122K       1% /run/user/0

2.1.2、du

[root@server ~]# du [-ahskm] 目录或文件名
选项与参数:
-a:列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已
-h:易读的方式
-s:列出总量而已,而不列出每个个别的目录占用容量
-S:不包括子目录下的总计
-k:以KBytes列出容量
-m:以MBytes列出容量
[root@server ~]# du
40   
[root@server ~]# du -a
4       ./.bash_logout
4       ./.bash_profile
4       ./.bashrc
4       ./.cshrc
4       ./.tcshrc
4       ./anaconda-ks.cfg
4       ./.rnd
8       ./.viminfo
4       ./.bash_history
40      .
[root@server ~]# du -s
40      .

2.2、实体链接与符号链接:ln

2.2.1、Hard Link(硬链接)

从前面的知识我们知道:

  • 每个文件都会占用一个inode,文件内容由inode的记录来指向;
  • 想要读取该文件,必须要经过目录记录的文件名来指向到正确的inode号码才能读取

也就是说,其实文件名只与目录有关,但是文件内容与inode有关。那有没有可能多个文件名对应到同一个inode呢?有的,那就是hard link了。简单的说:hard link只是在某个目录下新增一笔文件名链接到某inode号码的关联记录而已

[root@server ~]# ll -i /etc/crontab
17336313 -rw-r--r--. 1 root root 451 6月  10 2014 /etc/crontab
[root@server ~]# ln /etc/crontab
[root@server ~]# ll -i /etc/crontab crontab
17336313 -rw-r--r--. 2 root root 451 6月  10 2014 crontab
17336313 -rw-r--r--. 2 root root 451 6月  10 2014 /etc/crontab

可以发现,两个文件名都链接到 17336313 这个 inode 号码。有一个字段也由 1 变成了 2 ,那个字段就是“链接”的意思。

Linux基础学习笔记之——磁盘与文件系统(二)_第1张图片

在这种情况下,无论将任何一个文件名删除,其实 inode 和 block 都存在!此时,你可以通过另一个文件名去读取正确的内容!此外,不论你使用哪个文件名编辑,最终的结果都会写入到同一个 block 中。因此,两个文件名均能进行修改。同时,硬链接只是在某个目录下多写入一个关联数据而已,既不会增加 inode 也不会消耗 block数量。

但是,硬链接也是有限制的:1、不能跨文件系统;2、不能链接目录

2.2.2、Symbolic Link(符号链接,也称为快捷方式)

符号链接就是在建立一个独立的文件,而这个文件会让数据的读取指向它链接的那个文件的文件名!由于是利用文件来作为指向的动作,所以,当被指向的文件被删除后,symbolic link 的文件就打不开了

[root@server ~]# ln -s /etc/crontab crontab2
[root@server ~]# ll -i /etc/crontab crontab2
33574991 lrwxrwxrwx. 1 root root  12 7月  31 10:35 crontab2 -> /etc/crontab
17336313 -rw-r--r--. 2 root root 451 6月  10 2014 /etc/crontab

可以发现两个文件名对应的是不同的 inode 号码,当然是两个不同的文件了

Linux基础学习笔记之——磁盘与文件系统(二)_第2张图片

符号链接会新建一个文件,当然会占用 inode 和 block 了。

2.2.3、建立连接的指令

[root@server ~]# ln [-sf] 源文件 链接文件
选项与参数:
-s:如果不加任何参数,那就是硬链接,至于-s则是符号链接
-f:如果链接文件存在,就主动将链接文件删除后再建立

3、磁盘的分区、格式化、检验与挂载

如果想要在系统里边新增一块磁盘,应该有哪些动作:

  1. 对磁盘进行分区;
  2. 对该分区进行格式化,以建立可用的文件系统;
  3. 若再仔细点,对刚建立的文件系统检验;
  4. 需要建立挂载点,把文件系统挂载上来。

3.1、观察磁盘分区状态

3.1.1、lsblk:列出系统上的所有磁盘列表

[root@server ~]# lsblk [-dfimpt] [device]
选项与参数:
-d:仅列出磁盘本身,并不会列出该磁盘的分区数据
-f:同时列出该磁盘内的文件系统名称
-i:使用ASCII的线段输出
-m:同时输出该设备在/dev底下的权限数据
-p:列出该设备的完整文件名
-t:列出该磁盘的详细信息
[root@server ~]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                  8:0    0   20G  0 disk
├─sda1               8:1    0    1M  0 part
├─sda2               8:2    0    1G  0 part /boot
└─sda3               8:3    0   19G  0 part
  ├─centos_li-root 253:0    0   17G  0 lvm  /
  └─centos_li-swap 253:1    0    2G  0 lvm  [SWAP]
sr0                 11:0    1 1024M  0 rom
[root@server ~]# lsblk -ip /dev/sda
NAME                           MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sda                         8:0    0  20G  0 disk
|-/dev/sda1                      8:1    0   1M  0 part
|-/dev/sda2                      8:2    0   1G  0 part /boot
`-/dev/sda3                      8:3    0  19G  0 part
  |-/dev/mapper/centos_li-root 253:0    0  17G  0 lvm  /
  `-/dev/mapper/centos_li-swap 253:1    0   2G  0 lvm  [SWAP]

3.1.2、blkid:列出设备的UUID等参数

UUID是全局单一标识符,设备独一无二的标识符。

[root@server ~]# blkid
/dev/sda1: PARTUUID="cfa1d5d0-a865-449d-9710-40dbf10503f9"
/dev/sda2: UUID="2353541d-eb76-4ff1-9592-ab771e2969af" TYPE="xfs" PARTUUID="bf0e00c3-5cf0-4b8f-abda-8e53aadb7dc7"
/dev/sda3: UUID="x8WReu-Yhrw-H6Qe-1XGr-OLdg-L1G1-gcp2e2" TYPE="LVM2_member" PARTUUID="7b3ea3bf-97cf-4fe8-a134-a0bef62ed7c7"
/dev/mapper/centos_li-root: UUID="ec2f4b86-770c-4d81-a1ce-b929becb235e" TYPE="xfs"
/dev/mapper/centos_li-swap: UUID="51f4c516-207e-4069-bbc9-ef0e766d0e01" TYPE="swap"

3.1.3、parted:列出磁盘的分区表类型与分区信息

[root@server ~]# parted device_name print
[root@server ~]# parted /dev/sda print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: pmbr_boot

Number  Start   End     Size    File system  Name  标志
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  1076MB  1074MB  xfs
 3      1076MB  21.5GB  20.4GB                     lvm

3.2、磁盘分区

注:以下的主机名更改了,内容并不影响。

MBR分区表采用的是fdisk分区,GPT分区表请使用gdisk分区

[root@li ~]# yum install gdisk -y

3.2.1、gdisk

[root@li ~]# gdisk 设备名称
[root@li ~]# gdisk /dev/sda
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): ?
b       back up GPT data to a file
c       change a partition's name
d       delete a partition		#删除一个分区
i       show detailed information on a partition
l       list known partition types
n       add a new partition		#新增一个分区
o       create a new empty GUID partition table (GPT)
p       print the partition table		#打印出分区表
q       quit without saving changes		#不存储分区就离开gdisk
r       recovery and transformation options (experts only)
s       sort partitions
t       change a partition's type code
v       verify disk
w       write table to disk and exit		#存储后再离开gdisk
x       extra functionality (experts only)
?       print this menu

Command (? for help): p			#这里可以输出目前磁盘的状态
Disk /dev/sda: 41943040 sectors, 20.0 GiB		#磁盘文件名/扇区总数与总容量
Logical sector size: 512 bytes				#每一个扇区的大小5112 bytes
Disk identifier (GUID): 993284BF-F048-4E2B-9D73-A81B3C0504B5	#磁盘的 GPT 标识
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name		#分区表信息
   1            2048            4095   1024.0 KiB  EF02
   2            4096         2101247   1024.0 MiB  0700
   3         2101248        41940991   19.0 GiB    8E00

Command (? for help): q		#不存储就离开输入q,w不要轻易输入!

分区表信息的每个项目的意义:

  • Number:分区的编号;
  • Start (sector):每一个分区的开始扇区号;
  • End (sector):每一个分区的结束扇区号;
  • Size:扇区大小;
  • Code:在分区内的可能的文件系统类型。Linux 为 8300,swap 为 8200;
  • Name:文件系统的名称等等。
3.2.1.1、用gdisk新增分区

新加了一块 2.5G 的磁盘,假设需要有如下的分区要求:

  • 1GB 的 xfs 文件系统
  • 1GB 的 ext4 文件系统
  • 0.5GB 的 swap(这个分区等一会被删除)
[root@li ~]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                  8:0    0   20G  0 disk
├─sda1               8:1    0    1M  0 part
├─sda2               8:2    0    1G  0 part /boot
└─sda3               8:3    0   19G  0 part
  ├─centos_li-root 253:0    0   17G  0 lvm  /
  └─centos_li-swap 253:1    0    2G  0 lvm  [SWAP]
sdb                  8:16   0  2.5G  0 disk		<==新增的磁盘
sr0                 11:0    1  4.5G  0 rom
[root@li ~]# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): p
Disk /dev/sdb: 5242880 sectors, 2.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 36458782-15CD-4860-B400-6572DA453043
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 5242846
Partitions will be aligned on 2048-sector boundaries
Total free space is 5242813 sectors (2.5 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
#可以看到因为是新增的磁盘,并没有进行分区,所以下面的分区表是空白的
Command (? for help): n			#使用n新增一个分区
Partition number (1-128, default 1): 1	#从1开始
First sector (34-5242846, default = 2048) or {+-}size{KMGTP}:	#第一个扇区,可以直接enter
Last sector (2048-5242846, default = 5242846) or {+-}size{KMGTP}: +1G	#千万不要enter,否则就会占用整个磁盘
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):	#文件系统的ID
Changed type of partition to 'Linux filesystem'

Command (? for help): p		#显示分区,可以看到已经出现了一个分区
Disk /dev/sdb: 5242880 sectors, 2.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 36458782-15CD-4860-B400-6572DA453043
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 5242846
Partitions will be aligned on 2048-sector boundaries
Total free space is 3145661 sectors (1.5 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2099199   1024.0 MiB  8300  Linux filesystem
Command (? for help): n			#按照需求新增其余两个分区
Partition number (2-128, default 2):
First sector (34-5242846, default = 2099200) or {+-}size{KMGTP}:
Last sector (2099200-5242846, default = 5242846) or {+-}size{KMGTP}: +1G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 0700
Changed type of partition to 'Microsoft basic data'

Command (? for help): n
Partition number (3-128, default 3):
First sector (34-5242846, default = 4196352) or {+-}size{KMGTP}:
Last sector (4196352-5242846, default = 5242846) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8200
Changed type of partition to 'Linux swap'

Command (? for help): p
Disk /dev/sdb: 5242880 sectors, 2.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 36458782-15CD-4860-B400-6572DA453043
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 5242846
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2099199   1024.0 MiB  8300  Linux filesystem
   2         2099200         4196351   1024.0 MiB  0700  Microsoft basic data
   3         4196352         5242846   511.0 MiB   8200  Linux swap
Command (? for help): w			#使用w进行分区表的保存

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
3.2.1.2、partprobe 更新 Linux 核心的分区表信息
[root@li ~]# partprobe [-s]		#如果不加 -s,屏幕将不会出现信息
[root@li ~]# partprobe -s
/dev/sda: gpt partitions 1 2 3
/dev/sdb: gpt partitions 1 2 3
#实际的分区状况
[root@li ~]# lsblk /dev/sdb
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  2.5G  0 disk
├─sdb1   8:17   0    1G  0 part
├─sdb2   8:18   0    1G  0 part
└─sdb3   8:19   0  511M  0 part
#内核的分区记录
[root@li ~]# cat /proc/partitions
major minor  #blocks  name

   8        0   20971520 sda
   8        1       1024 sda1
   8        2    1048576 sda2
   8        3   19919872 sda3
   8       16    2621440 sdb
   8       17    1048576 sdb1
   8       18    1048576 sdb2
   8       19     523247 sdb3
  11        0    4669440 sr0
 253        0   17821696 dm-0
 253        1    2097152 dm-1
#现在内核也抓到了分区参数了
3.2.1.3、用 gdisk 删除一个分区
[root@li ~]# gdisk /dev/sdb

Command (? for help): p

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2099199   1024.0 MiB  8300  Linux filesystem
   2         2099200         4196351   1024.0 MiB  0700  Microsoft basic data
   3         4196352         5242846   511.0 MiB   8200  Linux swap

Command (? for help): d
Partition number (1-3): 3

Command (? for help): p

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2099199   1024.0 MiB  8300  Linux filesystem
   2         2099200         4196351   1024.0 MiB  0700  Microsoft basic data

Command (? for help): w

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
[root@li ~]# lsblk /dev/sdb
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  2.5G  0 disk
├─sdb1   8:17   0    1G  0 part
└─sdb2   8:18   0    1G  0 part
[root@li ~]# partprobe -s
/dev/sda: gpt partitions 1 2 3
/dev/sdb: gpt partitions 1 2

注意:千万不要处理正在使用的文件系统!必须先卸载!

3.2.2、fdisk

fdisk的使用方法几乎和gdisk的方法一样,只不过一个是使用?作为提示数据,一个使用m作为提示数据。

3.3、磁盘格式化(新建文件系统)

3.3.1、XFS 文件系统 mkfs.xfs

[root@li ~]# mkfs.xfs [-b bsize] [-d parms] [-i parms] [-l parms] [-L label] [-f] [-r parms] 设备名称
选项与参数:
-b:后面接的是 block 容量,可由 512 到 64k,不过最大容量限制为 Linux 的 4k
-d:后面接的是重要的 data section 的相关参数,主要的值有:
	agcount=数值:设定需要几个存储群组的意思(AG),通常与 CPU 有关
	agsize=数值:每个 AG 设定为多少容量的意思,通常 agcount/agsize 只选一个设定即可
	file:指的是“格式化的设备是个文件而不是个设备”的意思
	size=数值:data section 的容量,也就是说你可以不将全部容量用完
	su=数值:当有 RAID 时,那个 stripe 数值的意思,于底下的 sw 搭配使用
	sw=数值:当有 RAID 时,用于存储数据的磁盘数量
	sunit=数值:与 su 相当,不过单位使用的是“几个 sector(512bytes大小)”的意思
	swidth=数值:就是 su*sw 的意思
-f:如果设备内已经有文件系统,就用 -f 强制格式化
-i:与 inode 相关的参数:
	size=数值:最小是 256bytes 最大是 2k
	internal=[011]:log设备是否内建
	logdev=device:log设备为后面的设备,需设定 internal=0 才可
	size=数值:指定登录区的容量,通常最小有 512 个 block,大约 2M 以上才行
-L:这个文件系统的标头名称 Label Name的意思
-r:指定 realtime section 的相关设定值,常见的有:
	extsize=数值:就是那个重要的 extent 数值,一般不须设定,但有 RAID 时,最好设定与 swidth 的数值相同较佳
#将 /dev/sbd1格式化为 xfs 文件系统
[root@li ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              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@li ~]# blkid /dev/sdb1
/dev/sdb1: UUID="9a2e881c-c84b-403e-903a-d1e8a92b005c" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="31ce0980-9bfe-459d-a770-1d33e4967605"
#找出系统的 CPU 数,并据此设定你的 agcount 数值
[root@li ~]# grep 'processor' /proc/cpuinfo
processor       : 0
#1颗CPU
[root@li ~]# mkfs.xfs -f -d agcount=2 /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=2, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0

可以发现,agcount变成了2。

3.3.2、其他文件系统 mkfs

[root@li ~]# mkfs
mkfs         mkfs.cramfs  mkfs.ext3    mkfs.minix
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.xfs
[root@li ~]# mkfs -t vfat /dev/sdb2
mkfs.vfat: 没有那个文件或目录
[root@li ~]# mkfs -t ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
第一个数据块=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: 完成
正在写入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

3.4、文件系统的检测

3.4.1、xfs_repair 处理 XFS 文件系统

当 xfs 文件系统错乱时才会使用这个指令。

[root@li ~]# xfs_repair [-fnd] 设备
选项与参数:
-f:后面接的是文件
-n:单纯检查并不维修文件系统
-d:通常用在单人维护模式下,针对根目录(/)进行检查与修复的动作!很危险!不要随意使用
[root@li ~]# xfs_repair /dev/sdb1
Phase 1 - find and verify superblock...
Phase 2 - using internal log
        - zero log...
        - scan filesystem freespace and inode maps...
...
        - moving disconnected inodes to lost+found ...
Phase 7 - verify and correct link counts...
done		#共有7个检查流程

同样,修复是时文件系统最好不要正在挂载,可以先卸载了,再修复。

3.4.2、fsck.ext4 修复 EXT4 文件系统

[root@li ~]# fsck.ext4 /dev/sdb2
e2fsck 1.42.9 (28-Dec-2013)
/dev/sdb2: clean, 11/65536 files, 12955/262144 blocks

3.5、文件系统的挂载

在挂载之前,最好确定几件事:

  • 单一文件系统不应该被重复挂载在不同的挂载点(目录)中;
  • 单一目录不应该重复挂载多个文件系统;
  • 要作为挂载点的目录,理论上都是空目录才是。

如果目录非空,那么挂载了文件系统后,原目录底下的东西就会暂时消失。等分区卸载后,就会再次显示出来。

3.5.1、挂载文件系统

[root@li ~]# blkid /dev/sdb1
/dev/sdb1: UUID="71b60c0b-7c2d-4522-beaa-fc7abc2e94a3" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="31ce0980-9bfe-459d-a770-1d33e4967605"
[root@li ~]# mount UUID="71b60c0b-7c2d-4522-beaa-fc7abc2e94a3" /data/xfs
mount: 挂载点 /data/xfs 不存在
[root@li ~]# mkdir -p /data/xfs
[root@li ~]# mount UUID="71b60c0b-7c2d-4522-beaa-fc7abc2e94a3" /data/xfs
[root@li ~]# df /data/xfs
文件系统         1K-块  已用    可用 已用% 挂载点
/dev/sdb1      1038336 32896 1005440    4% /data/xfs
[root@li ~]# blkid /dev/sdb2
/dev/sdb2: UUID="68580139-f2f6-423a-a15a-35d73d8c0e01" TYPE="ext4" PARTLABEL="Microsoft basic data" PARTUUID="a3416769-7de6-4b4c-8e08-aa6bfff242b7"
[root@li ~]# mkdir /data/ext4
[root@li ~]# mount UUID="68580139-f2f6-423a-a15a-35d73d8c0e01" /data/ext4
[root@li ~]# df /data/ext4/
文件系统        1K-块  已用   可用 已用% 挂载点
/dev/sdb2      999320  2564 927944    1% /data/ext4

3.5.2、umount:将设备文件卸载

[root@li ~]# umount [-fn] 设备文件名或挂载点
选项与参数:
-f:强制卸载!
-l:立刻卸载文件系统,比 -f 还强!
-n:不更新 /etc/mtab 情况下卸载
[root@li ~]# mount
...
/dev/sdb1 on /data/xfs type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/sdb2 on /data/ext4 type ext4 (rw,relatime,seclabel,data=ordered)
[root@li ~]# umount /dev/sdb1		
[root@li ~]# umount /data/ext4

4、设定开机挂载

4.1、开机挂载 /etc/fstab

先要说明一下系统挂载的限制:

  • 根目录 / 是必须挂载的,而且一定要先于其他 mount point 被挂载出来;
  • 其他 mount point 必须为已建立的目录,可任意指定,但一定要遵守必须的系统目录架构原则(FHS);
  • 所有 mount point 在同一时间之内,只能挂载一次;
  • 所有mount point 在同一时间之内,只能挂载一次;
  • 如若进行卸载,您必须先将工作目录移到 mount point(及其子目录)之外。
[root@li ~]# cat /etc/fstab
#设备名					挂载点					文件系统	参数			dump	fsck
/dev/mapper/centos_li-root /                       xfs     defaults        0 0
UUID=2353541d-eb76-4ff1-9592-ab771e2969af /boot                   xfs     defaults        0 0
/dev/mapper/centos_li-swap swap                    swap    defaults        0 0

六个字段很重要:

  • 第一栏:磁盘设备文件名/UUID/Label Name

  • 第二栏:挂载点

  • 第三栏:文件系统

  • 第四栏:文件系统参数

    文件系统参数 说明
    async/sync 设定磁盘是否以异步方式运作!预设为async(效能较佳)
    auto/noauto 当下达 mount -a 时,此文件系统是否会被主动测试挂载。预设为 auto
    rw/ro 如果你想要分享数据而不给用户随便更改,可以设定为只读!则不论在此文件系统上的文件是否设定为w,都无法写入!
    exec/noexec 同上
    user/nouser 是否允许用户使用 mount 指令挂载。一般不允许一般用户使用 mount,所以设定为 nouser
    suid/nosuid 该文件系统是否允许 SUID 的存在
    defaults 同时具有 rw,suid,exec,auto,nouser,async等
  • 第五栏:是否被 dump 备份指令作用

  • 第六栏:是否以 fsck 检验扇区

[root@li ~]# vim /etc/fstab
UUID="71b60c0b-7c2d-4522-beaa-fc7abc2e94a3"     /data/xfs       xfs     defaults        0       0
UUID="68580139-f2f6-423a-a15a-35d73d8c0e01"     /data/ext4      ext4    defaults        0       0
[root@li ~]# mount -a
[root@li ~]# df /data/xfs /data/ext4
文件系统         1K-块  已用    可用 已用% 挂载点
/dev/sdb1      1038336 32896 1005440    4% /data/xfs
/dev/sdb2       999320  2564  927944    1% /data/ext4

你可能感兴趣的:(Linux基础)