5.文件系统的简单操作
5.1 磁盘与目录的容量
- df:列出文件系统的整体磁盘使用量
如果使用"-a"这个参数时,系统会出现/proc这个挂载点,但是里面的东西都是0。这是因为/proc是Linux系统需要加载的系统数据,而且是挂载在内存中的
,所以当然没有占任何的磁盘空间了。
- du:评估文件系统的磁盘使用量(常用在推算目录所占容量)
5.2 实体链接与符号链接:ln
在Linux下的链接档有两种,一种是类似Windows的快捷方式功能的文件;另一种是透过文件系统的inode连结来产生新档名,而不是新文件。这种成为实体链接。
- Hard Link(实体链接,硬式连结或实际连结)
我们知道每个文件都会占用一个inode,想要读取该文件,必须经过目录记录的文件名来指向到正确的inode号码。
也就是说,其实文件名只与目录有关,但是文件内容则与inode有关。那么有没有可能是多个档名对应到同一个inode号码?这就是Hard Link的由来。
所以,简单来说,Hard Link只是在某个目录下新增一笔档名链接到某inode号码到关联记录而已。
举个例子:
可以发现,两个档名都连结到34474855这个inode号码。而且也会发现第二个字段由1变成2了。这个字段的意义是:由多少个档名链接到这个inode号码。示意图如下:
那这样有什么好处?最大的好处就是安全,如果将任何一个档名删除,它的inode与block都还是存在的。
一般来说,Hard Link设定链接文件,磁盘的空间与inode数目都不会改变。从上面图来看,它只是在某个目录下的block中多写入一个关联数据。
事实上Hard Link应该只能在单一文件系统中运行,不能跨文件系统的。所以Hard Link是有限制的:
不能跨filesystem
不能跨连结目录
如果使用Hard Link链接目录,链接的数据需要连同被链接目录下的所有数据都建立链接。例如,要将/etc使用实体链接建立一个/etc_hd的目录时,那么在/etc_hd下的所有档名同时都与/etc下的档名要建立Hard Link,这样当然非常乱了。
- Symbolic Link(符号链接,也就是快捷方式)
Symbolic Link是在建立一个独立的文件,而这个文件会让数据的读取指向他Link的那个文件的档名。当源档文件被删除后,Symbolic Link的文件也就打不开了。
例如:
可以发现链接档的大小为12bytes,因为箭头"->"右边的档名"/etc/crontab"总共12个英文,每个英文占1bytes。
- ln指令的使用
假设我们有文件passwd1.txt。我们做"ln passwd1.txt passwd2.txt",此时passwd2.txt就是Hard Link。使用"ls -il"命令,也可以查看到passwd1与passwd2的inode号码相同,删除掉其中一个,对另一个也没有影响。我们做"ln -s passwd1.txt passwd3.txt",此时passwd3.txt就是Symbol Link(类似快捷方式)。使用"ls -il"命令,可以查看passwd1与passwd3的inode号码不同,属性也发生了变化,删除掉passwd1.txt以后,passwd3.txt将不能使用。
关于目录的Link数量
一个空目录里,他默认的Link数量会是多少呢?就是存在.与..这两个目录。所以新建目录为/tmp/test目录时,基本有三个东西:
/tmp/test
/tmp/test/.
/tmp/test/..
其中/tmp/test与/tmp/test/.其实是一样的,都表示该目录,而/tmp/test/..代表/tmp这个目录。所以说,当我们建立一个新的目录时,新的目录Link数为2,而上层目录的Link数则会加1。
5.3 磁盘的分区、格式化、检验、挂载
观察磁盘分区状态(下面的命令经测试已经不是)
- lsblk 列出系统上的所有磁盘列表
是"list block device"的缩写。
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 8G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 7G 0 part
├─centos-root 253:0 0 6.2G 0 lvm /
└─centos-swap 253:1 0 820M 0 lvm [SWAP]
sr0 11:0 1 1024M 0 rom
可以看到,目前的系统主要有sr0和sda的装置,sda又分为二个分区,其中sda2下面还有LVM产生的文件系统。
NAME:装置的文件名
MAJ:MIN:核心认识的装置都是透过这两个代码来熟悉,分别是 主要:次要装置代码
RM:是否为可卸载装置,如光盘、USB接口
SIZE:装置大小
RO:是否为只读装置
TYPE:装置类型,有磁盘(disk)、分区槽(partition)、只读存储器(rom)等
MOUTPOINT:挂载点
- blkid 列出装置的UUID等参数,如下所示
[root@localhost ~]# blkid
/dev/sda1: UUID="0c05a3e8-9e53-49e6-ab85-2d7af60ca826" TYPE="xfs"
/dev/sda2: UUID="7OB8ex-dmmC-b7pW-5dvG-GGdr-niJh-XmdZl2" TYPE="LVM2_member"
/dev/mapper/centos-root: UUID="be693ffd-55ea-4213-878d-6249272e0bbb" TYPE="xfs"
/dev/mapper/centos-swap: UUID="e3326d04-2925-4a3a-82f3-9be5fb911837" TYPE="swap"
- parted 列出磁盘的分区表类型与分区信息
使用命令"parted ${deviceName} print",如下所示
[root@localhost ~]# parted /dev/sda1 print
Model: Unknown (unknown)
Disk /dev/sda1: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:
Number Start End Size File system Flags
1 0.00B 1074MB 1074MB xfs
我们可以通过"lsblk"或"blkid"先找到磁盘,再用"parted /dev/xxx print"找出内部的分区表类型,之后决定用gdisk或fdisk来操作系统。上面可以看到,分区类型是loop。
磁盘分区:gdisk/fdisk
注意:MBR分区表使用"fdsk"分区,GPT分区表使用"gdisk"分区。但是这两个工具的操作是很类似的。
[root@localhost ~]# fdisk /dev/sda
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 0x38d7bb2a.
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition # 删除一个分区
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition # 增加一个分区
o create a new empty DOS partition table
p print the partition table # 输出分区表
q quit without saving changes # 直接离开不保存分区动作
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit # 离开并保存分区动作
x extra functionality (experts only)
不管你进行了什么都工作,离开时按下"q",那么所有的动作都不会生效。按下"w"就是动作生效的意思。
接下来,我们看看分区表信息,在交互界面输入"p"。如下所示:
Command (m for help): p #输出目前磁盘的状态
Disk /dev/sda: 8589 MB, 8589934592 bytes, 16777216 sectors #磁盘文件名/扇区总容量
Units = sectors of 1 * 512 = 512 bytes #单一扇区大小为512bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000aecf6 # 磁盘的loop标识符
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 16777215 7339008 8e Linux LVM
注意!fdisk只有root才能执行;使用装置文件名请不要加上数字,因为partition是针对"整个磁盘装置"而不是某个partition。所以执行"fdisk /dev/sda2" 就会发生错误了。
Device Boot:分区名称
Start:每一个分区槽开始扇区号码
End:每一个分区槽的结束扇区号码位置
Blocks:表示每一个分区的容量
Id和System:分区类型的标识
fdisk新建分区槽
[root@localhost ~]# fdisk /dev/sda
...
Disk /dev/sda: 8589 MB, 8589934592 bytes, 16777216 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: 0x000aecf6
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
# 先找出最后一个 sector 的号码为2099199(这里我扇区满了,先删除了sda2,可以不保存退出嘛)
Command (m for help): m
Command (m for help): n # 新增一个新的分区
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
Partition number (2-4, default 2):
First sector (2099200-16777215, default 2099200):
Using default value 2099200
Last sector, +sectors or +size{K,M,G} (2099200-16777215, default 16777215): +50MB
# 使用"+容量"的方式,可以自己计算扇区号码
Partition 2 of type Linux and of size 48 MiB is set
关于Id值表示的类型,可以在交互界面使用"l"来查看。
我们按下"w"保存后,会出现是否确定的字样,这时按下"y",但是还会出现警告。这时因为这个磁盘目前正在使用,因此系统无法立即加载新的分区表。
解决方式1:重新启动;方式2:使用"partprobe"指令。
partprobe更新Linux核心的分区表信息
使用"partprobe -s"指令来更新分区表信息。
XFS文件系统 mkfs.xfs
我们常听到的"格式化"其实应该称为"构建文件系统(make filesystem)",使用命令"mkfs.xfs"。这个指令使用如下:
[root@localhost ~]# mkfs.xfs [-b bsize] [-d params] [-l params] [-L lable] [-f] [-r params] 设备名称
选项与参数:
-b:指定block的容量,512bytes到64K,不过最大容量限制为Linux的4K
-d:data section的相关参数值,主要的值有
agcount=数值:设定需要几个储存群组(AG),通常与CPU有关
agsize=数值:每个AG设定为多少容量
file:格式化的设备是个文件而不是个设备(例如虚拟磁盘)
size=数值:data section的容量
su=数值:当有RAID时,表示stripe数值,与sw搭配使用
sw=数值:当有RAID时,用于储存数据的磁盘数量(扣除备份盘)
sunit=数值:与su相当,不过单位使用的是sector(一个sector有512个bytes)
swidth=数值:就是su * sw的数值,单位使用的是sector
-f:如果设备内已经有文件系统,需要使用-f强制格式化才行
-i:与inode相关的设定,主要的设定值有
size=数值:最小256bytes,最大为2K,一般256就够
internal=[011]:log装置/设备是否为内建,预设为1内建,如果用外部装置/设备,使用下面的设定
logdev=device:log装置为后面的那个设备上,需设定internal=0
-L:后面接这个文件系统的标头名称Label name
-r:指定realtime section的相关设定值,主要有
extsize=数值:就是那个重要的extent的数值,一般不指定,但有RAID时,最好设定与swidth的数值相同。最小4K最大1G
XFS文件系统 RAID效能优化
磁盘阵列(RAID)是多个磁盘组成一个大磁盘的意思,利用同步写入到这些磁盘的技术,不但可以加快I/O,还可以让某一个磁盘坏掉时,整个文件系统还是可以运作的状态。
RAID就是通过先将文件先分为多个小型的分区区块(stripe),然后将众多的stripes分别放到磁盘阵列里面的所有磁盘,所以一个文件是同时被分别写入到多个磁盘里的,当然效能会好了。为了文件的安全性,这些磁盘里会保留数个备份磁盘(parity disk),还可能会保留多个备用磁盘(spare disk)。
要想优化文件系统的读写,最好能搭配磁盘阵列的参数来设计。即可以先在文件系统将stripe规划好,交给RAID存取时,它就不用重复进行文件的stripe过程来。下面来假设一个环境:
我有两个线程的CPU数量,所以agcount最好设定为2
设定的RAID的stripe指定为256K,因此su最好设定为256K
设定的磁盘阵列有8个,因为是RAID5的设定,所以有一个parity(备份盘),因此指定sw为7
由上述数据中,我们可以发现数据宽度(swidth)应该是256K*7,因此指定extsize为1792K
注意,如果设定的参数是sunit和swidth直接套用在mkfs.xfs中就要小心了,因为这两个参数单位都表示"几个512bytes的sector"数量。
因此计算为:
sunit = 256 * 1024 / 512 = 512个sector
swidth = 7个磁盘 * sunit = 7 * 512 = 3584个sector
EXT4文件系统 mkfs.ext4
[root@localhost ~]# mkfs.ext4 [-b size] [-L label] 装置/设备名称
选项参数
-b:设定block大小,1K/2K/4K
-L:设定装置/设备的标头名称
其他文件系统 mkfs
mkfs其实是个综合指令,我们使用"mkfs -t xfs"时,它会去找mkfs.xfs相关参数给我们使用。如果想知道还支持哪些文件系统的格式化功能,按两次[tab]:
[root@localhost ~]# mkfs [tab][tab]
5.4 文件系统检验
如果系统在运作时,发生宕机我们该怎么样挽救呢?下面主要针对xfs和ext4来说明
- xfs_repair 处理XFS文件系统
[root@localhost ~]# xfs_repair [-fnd] 装置/设备名称
选项与参数:
-f:表示后面的装置/设备其实是个文件而不是实体装置
-n:单纯检查并不修改文件系统的任何数据
-d:通常用在单人模式下,针对根目录进行检查与修复。很危险,不要随便使用。
Linux系统有个装置无法被卸除,那就是根目录。如果根目录出问题怎么办?这时需要进入单人模式或救援模式,然后通过-d来处理。
fsck.ext4修复EXT4文件系统
fsck是个综合指令,如果针对ext4,建议直接使用fsck.ext4来检验。
[root@localhost ~]# fsck.ext4 [-pf] [-b superblock] 装置名称
选项与参数:
-p:当文件系统在修复时,若有需要回复y的动作时,自动回复y来继续修复
-f:强制检查。一般来说,如果fsck没有发现任何unclean的旗标,不会主动进入内部检查,若干想强制进入,加上-f
-D:针对文件系统下的目录进行优化配置
-b:接superblock的位置,一般这个选项不用。但是你的superblock损毁时,通过这个参数可以利用文件系统内备份的superblock尝试救援
执行xfs_repair/fsck.ext4时,不能修复已经挂载的文件系统,这个挂载可以解除。
5.5 文件系统挂载与卸除(mount命令)
在进行挂载前,需要确定几件事:
单一文件系统不应该被重复挂载在不同的挂载点(目录)中
单一目录不应该重复挂载多个文件系统
作为挂载点的目录,理论上应该是空目录:如果你挂载的目录是非空的,挂载文件系统后,原目录的东西会暂时消失。新分区槽被卸除后,原本的内容会再次出现。
[root@localhost ~]# mount -a
[root@localhost ~]# mount [-l]
[root@localhost ~]# mount [-t 文件系统] LABEL='' 挂载点
[root@localhost ~]# mount [-t 文件系统] UUID='' 挂载点
[root@localhost ~]# mount [-t 文件系统] 装置文件名 挂载点
选项与参数:
-a:依照配置文件/etc/fstab的数据将所有为挂载的磁盘都挂载上来
-l: 可增列Label名称
-t:指定想要挂载的类型
-n:默认情况,系统会将实际挂载的情况写入/etc/mtab中。如果不想写入,此时要用-n
-o:可以接一些额外的参数。例如账号、密码、读写权限等:
async,sync:此文件系统是否使用同步写入或异步的内存机制。预设为async。
atime,noatime:是否修订文件的读取时间。
ro,rw:挂载系统成为我只读(ro)或可擦写(rw)。
auto,noauto:允许此文件系统被以mount -a自动挂载。
dev,nodev:是否允许此文件系统建立装置文件,dev为允许。
suid,nosuid:是否允许此文件系统含有suid/sgid的文件格式。
exec,noexec:是否允许此文件系统上拥有可执行binary文件。
user,nouser:是否允许此文件系统让任何使用者执行mount命令,一般来说,
mount只有root可执行。但指定user参数,可以让一般user对此分区也能mount。
defaults:默认值是rw、suid、dev、exec、auto、nouser、async。
remount:重新挂载或更新参数时使用。
基本上,不需要加-t选项,系统会自动分析最适合的文件系统来尝试挂载你需要的。因为文件系统都有superblock,系统会通过分析superblock搭配Linux自己的驱动程序去测试挂载,系统有没有指定哪些类型的filesystem需要进行挂载测试嗯?主要参考以下两个文件:
/etc/filesystem:系统指定的测试挂载文件系统类型的优先级。
/proc/filesystem:Linux系统已经加载的文件系统类型。
那么Linux系统有没有相关文件系统类型的驱动程序呢?我们Linux支持的文件系统驱动程序都在以下的目录中:
- /lib/modules/$(uname -r)/kernel/fs/
挂载xfs/ext4/vfat 等文件系统
示例:
# 先找出/dev/xxx的UUID后,用UUID来挂载文件系统到 /data/xfs内
[root@localhost ~]# blkid /dev/xxx
/dev/xxx: UUID='xxxxxxxxxxxx' TYPE='xfs'
[root@localhost ~]# mount UUID='xxxxxxxxxxxx' /data/xfs
mount:mount point /data/xfs does not exist # 非正规目录,所以要手动建立它
[root@localhost ~]# mkdir -p /data/xfs
[root@localhost ~]# mount UUID='xxxxxxxxxxxx' /data/xfs
[root@localhost ~]# df /data/xfs # 查看挂载目录的信息
挂载 CD 或 DVD 光盘
示例:例如插入CentOS7光盘,让我们来测试以下,挂载到/data/cdrom下。
[root@localhost ~]# blkid
...
/dev/sr0:UUID='xxxxxx' LABEL='CentOS 7 x86_64' TYPE='iso9660' PTTYPE='dos'
[root@localhost ~]# mkdir /data/cdrom
[root@localhost ~]# mount /dev/sr0 /data/cdrom
mount:/dev/sr0 is write-protected,mounting read-only
[root@localhost ~]# df /data/cdrom
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sr0 7413478 7413478 0 100% /data/cdrom
因为是DVD所以使用掉了100%!无法再写入了!光驱一挂载后,就无法退出光盘片了,除非你将它卸除;但如果使用的是图形界面,系统会自动帮你挂载到/media下,可以不用卸载直接推出光盘。
挂载 vfat (USB磁盘)
注意,你的USB磁盘不能是NTFS的文件系统。预设的CentOS7并不支持NTFS文件系统格式。需要安装NTFS文件系统的驱动程序。
示例:将你的USB挂载到/data/usb目录
[root@localhost ~]# blkid
/dev/sda1:UUID='xxxxxx' TYPE='vfat'
[root@localhost ~]# mkdir /data/usb
[root@localhost ~]# mount -o codepage=950,iocharset=utf8 UUID='xxxxxx' /data/usb
[root@localhost ~]# df /data/usb
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 2092344 4 2092340 1% /data/usb
重新挂载根目录&挂载不定目录
根目录不能被卸除的!如果你想改变挂载参数或者根目录出现只读状态,如何重新挂载呢?(也可以重新启动reboot)
[root@localhost ~]# mount -o remount,rw,auto /
另外,还可以使用mount命令将某个目录挂载到另一个目录中。这不算挂载文件系统,只是额外挂载某个目录的办法。
示例:将/var目录暂时挂载到/data/var下
[root@localhost ~]# mkdir /data/var
[root@localhost ~]# mount --bind /var /data/var
[root@localhost ~]# ls -lid /var /data/var
12582977 drwxr-xr-x. 19 root root 267 Feb 18 01:20 /data/var
12582977 drwxr-xr-x. 19 root root 267 Feb 18 01:20 /var
这样,两个就连结到同一个inode了,所以从此进入/data/var就是进入/var的意思。
umount(将装置文件卸除)
[root@localhost ~]# umount [-fn] 装置文件名或挂载点
选项与参数:
-f:强制卸除。可用在类似网络文件系统(NFS)无法读取到的情况
-l:立刻卸除文件系统,比-f还强
-n:不更新/etc/mtab的情况下卸除
注意:在卸载的时候不要在装置的目录内,它表示"你正在使用该文件系统",所以无法卸除。
5.6 磁盘/文件系统参数修改
有时候,需要修改一下目前文件系统的相关信息。例如,修改Label name,或者journal参数等等,就得用下面的指令了。
- mknod
Linux下所有装置都以文件代表的,那是怎么代表的呢?这就是通过major和minor号码来表示的。假设我们的/dev/vda的相关装置号码如下:
[root@localhost ~]# ll /dev/vda*
brw-rw----. 1 root disk 252,0 Jun 24 02:30 /dev/vda
brw-rw----. 1 root disk 252,1 Jun 24 02:30 /dev/vda1
brw-rw----. 1 root disk 252,2 Jun 24 02:30 /dev/vda2
brw-rw----. 1 root disk 252,3 Jun 24 02:30 /dev/vda3
brw-rw----. 1 root disk 252,4 Jun 24 02:30 /dev/vda4
brw-rw----. 1 root disk 252,5 Jun 24 02:30 /dev/vda5
252为主要装置代码(major),0-5则为次要装置代码(minor)。这些代码都是有意义的,不要随意设定啊。
基本上,硬件文件名已经都可以被系统自动的实时产生了,我们根本不需要手动建立装置文件。但有时候还是要手动的,比如在某些服务被关到特定目录下面时,我们可以这样做:
[root@localhost ~]# mknod 装置文件名 [bcp] [Major] [Minor]
选项与参数:
bcp表示装置的类型:
b:设定装置名称为一个周边储存设备文件,例如磁盘等
c:设定装置名称为一个周边输入设备文件,例如鼠标/键盘等
p:设定装置名称巍峨一个FIFO文件
Major:主要装置代码
Minor:次要装置代码
示例:由上述可知,如果是/dev/vda10,装置代码就为252,10
[root@localhost ~]# mknod /dev/vda10 b 252 10
[root@localhost ~]# ll /dev/vda10
brw-rw----. 1 root root 252,10 Jun 24 02:30 /dev/vda10
示例:建立一个FIFO文件,档名为/tmp/testpipe
[root@localhost ~]# mknod /tmp/testpipe p
[root@localhost ~]# ll /tmp/testpipe
prw-rw----. 1 root root 0 Jun 24 02:30 /tmp/testpipe
示例:删除FIFO文件
[root@localhost ~]# rm /dev/vda10 /tmp/testpipe
- xfs_admin修改XFS文件系统的UUID与Label name
如果当初格式化的时候忘了加标头名称,可以在修改的。
[root@localhost ~]# xfs_admin [-lu] [-L label] [-U uuid] 装置文件名
选项与参数:
-l:列出装置的Label name
-u:列出装置的UUID
-L:设定装置的Label name
-U:设定装置的UUID
示例:设定/dev/vda4的UUID,并测试挂载
[root@localhost ~]# umount /dev/vda4 #使用前,先卸除
[root@localhost ~]# uuidgen #可以生成UUID
xxxxxxxxxxxxx
[root@localhost ~]# xfs_admin -u /dev/vda4
UUID = xxxxxxxxxxxxx
[root@localhost ~]# xfs_admin -U xxxxxxxxxxxxxxx /dev/vda4
...
[root@localhost ~]# mount UUID=xxxxxxxxxxxxx /data/xfs #挂载
- tune2fs修改EXT4的label name与UUID
[root@localhost ~]# tune2fs [-l] [-L label] [-U uuid] 装置文件名
选项与参数:
-l:类似于dumpe2fs -h 的功能,将superblock内的数据读出来
-L:修改Label name
-U:修改UUID
示例:列出/dev/vda5的label name,将它改成superman_ext4
[root@localhost ~]# dumpe2fs -h /dev/vda5 |grep name
dumpe2fs 1.42.9(28-Dec-2013)
Filesystem volume name : #没有设定label
[root@localhost ~]# tune2fs -L superman_ext4 /dev/vda5
[root@localhost ~]# dumpe2fs -h /dev/vda5 | grep name
Filesystem volume name:superman_ext4
[root@localhost ~]# mount LABEL=superman_ext4 /data/ext4
6.设定挂载
6.1 开机挂载/etc/fstab与/etc/mtab
我们直接到/etc/fstab里面修改就行,不过,系统挂载有一些限制:
1.根目录/是必须挂载的,而且一定要先于其他mount point被挂载进来。
2.其他mount point必须为已建立的目录,可任意指定,但一定要遵守必须的系统目录架构原则(FHS)
3.所有mount point在同一时间内,只能挂载一次
4.所有partition在同一时间内,只能挂载一次
5.如果进行卸除,必须先将工作目录移到mount point(子目录)之外
接下来看一下/etc/fstab的内容:
# Device MountPoint filesystem parameters dump fsck
/dev/mapper/vg_root-lv_root / ext4 defaults 1 1
UUID=fce38776-55ce-4512-8c56-4dbd7454a398 /boot ext4 defaults 1 2
/dev/mapper/vg_root-lv_swap 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
/etc/fstab(filesystem table)就是将我们利用mount指令进行挂载时,把所有的选项与参数写入这个文件了。
假设要将/dev/vda0每次开机都自动挂载到/dara/xfs,怎么做?
将UUID="xxx" /data/xfs xfs default 0 0 加入到上面的文件即可,如果已经被挂载了,应该先"umount /dev/vda0"
注意:开机自动挂载可参考/etc/fstab的设定,设定完毕后一定要使用"mount -a"测试语法的正确性。挂载和卸载命令后也可以是用此命令进行校验。
6.2 特殊装置loop挂载(磁盘映像不用刻录就可挂载)
当我们从网上下载.iso文件后,我们可以使用以下命令来进行挂载,而不需要刻录:
[root@root ~]# ll -h /tmp/CentOS-7.0-1406-x86_64-DVD.iso
[root@root ~]# mkdir /data/cenos_dvd
[root@root ~]# mount -o loop /tmp/CentOS-7.0-1406-x86_64-DVD.iso /data/centos_dvd
[root@root ~]# df /data/centos_dvd