文件存储结构(FHS标准)
在Windows操作系统中,想要找到一个文件,我们要依次进入该文件所在的磁盘分区(假设这里是D盘),然后在进入该分区下的具体目录,最终找到这个文件。但是在Linux系统中并不存在C/D/E/F等盘符,Linux系统中的一切文件都是从“根(/)”目录开始的,并按照文件系统层次化标准(FHS)采用树形结构来存放文件,以及定义了常见目录的用途。另外,Linux系统中的文件和目录名称是严格区分大小写的。
Linux系统中常见的目录名称以及相应内容
物理设备命名规则(udev)
在Linux系统中一切都是文件,硬件设备也不例外。既然是文件,就必须有文件名称。
Linux系统中常见的硬件设备的文件名称如表所示
常见的文件系统
**Ext3:**是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。它会把整个磁盘的每个写入动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。
**Ext4:**Ext3的改进版本,作为RHEL 6系统中的默认文件管理系统,它支持的存储容量高达1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4文件系统能够批量分配block块,从而极大地提高了读写效率。
**XFS:**是一种高性能的日志文件系统,而且是RHEL 7中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为18EB,这几乎满足了所有需求。
1.inode存放文件的权限与属性记录,每个文件占用一个独立的inode表格,该表格的大小默认为128字节,里面记录着如下信息:
该文件的访问权限(read、write、execute);
该文件的所有者与所属组(owner、group);
该文件的大小(size);
该文件的创建或内容修改时间(ctime);
该文件的最后一次访问时间(atime);
该文件的修改时间(mtime);
文件的特殊权限(SUID、SGID、SBIT);
该文件的真实数据地址(point)。
2.block存放文件的实际内容(大小可以为1KB、2KB、4KB)。
1.文件很小(1KB),但依然会占用一个block,因此会潜在地浪费3KB。
2.文件很大(5KB),那么会占用两个block(5KB-4KB后剩下的1KB也要占用一个block)。
挂载硬件设备
fdisk命令:用于管理磁盘分区。格式:fdisk [磁盘名称]。它提供了集添加、删除、转换分区等功能于一身的“一站式分区服务”。这是一条交互式命令。
1.该文件的访问权限(read、write、execute);
2.该文件的所有者与所属组(owner、group);
3.该文件的大小(size);
4.该文件的创建或内容修改时间(ctime);
5.该文件的最后一次访问时间(atime);
6.该文件的修改时间(mtime);
7.文件的特殊权限(SUID、SGID、SBIT);
8.该文件的真实数据地址(point)。
添加新的分区:
[root@caoxinyang Desktop]# fdisk /dev/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 0xc2228dcb.
Command (m for help): p
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: 0xc2228dcb
Device Boot Start End Blocks Id System
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):
Using default value 2048
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@caoxinyang Desktop]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel_caoxinyang-root 18G 3.0G 15G 17% /
devtmpfs 985M 0 985M 0% /dev
tmpfs 994M 84K 994M 1% /dev/shm
tmpfs 994M 8.9M 986M 1% /run
tmpfs 994M 0 994M 0% /sys/fs/cgroup
/dev/sda1 497M 119M 379M 24% /boot
格式化新的分区:
[root@caoxinyang Desktop]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=256 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
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@caoxinyang Desktop]# cd /
[root@caoxinyang /]# mkdir cxy
[root@caoxinyang /]# mount /dev/sdb1 /cxy
添加到系统启动项:
[root@caoxinyang /]# vim /etc/fstab
重启保存,完成
2.格式化
mkfs命令:用于格式化操作。格式:mkfs.文件类型 磁盘设备文件。
3.挂载与卸载
①挂载操作就是把硬件设备与目录进行关联的动作
②卸载操作就是取消硬件设备与目录关联的动作,卸载文件系统就意味不再使用硬件的设备资源
挂载 mount 设备 目录
-a:挂载所有在/etc/fstab中定义的文件系统
-t:指定文件系统的类型
卸载 umount 设备或者目录
用mount命令挂载,系统重启后就会失效。要在/etc/fstab文件追加挂载信息才能永久挂载。在/etc/fstab文件中,挂载信息格式:“设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检”。
挂载信息格式各字段含义:
设备文件 一般为设备的路径+设备名称,也可以写唯一识别码(UUID,Universally Unique Identifier)
挂载目录 指定要挂载到的目录,需在挂载前创建好
格式类型 指定文件系统的格式,比如Ext3、Ext4、XFS、SWAP、i so9660(此为光盘设备)等
权限选项 若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async
是否备份 若为1则开机后使用dump进行磁盘备份,为0则不备份
是否自检 若为1则开机后自动进行磁盘自检,为0则不自检
df命令:用于查看挂载状态和硬盘使用量信息。常用参数为-h。格式:df -h。
du命令:用于查看文件数据占用量。格式 :du [选项] [文件]。
du -sh /* #查看在Linux系统根目录下所有一级目录分别占用的空间大
du -sh /newFS #查看/newFS下的内容占了多少容量
添加交换分区
SWAP(交换)分区是一种通过在硬盘中预先划分一定的空间,然后将把内存中暂时不常用的数据临时存放到硬盘中,以便腾出物理内存空间让更活跃的程序服务来使用的技术,其设计目的是为了解决真实物理内存不足的问题。但由于交换分区毕竟是通过硬盘设备读写数据的,速度肯定要比物理内存慢,所以只有当真实的物理内存耗尽后才会调用交换分区的资源。
交换分区的创建过程与前文讲到的挂载并使用存储设备的过程非常相似。在对/dev/sdb存储设备进行分区操作前,有必要先说一下交换分区的划分建议:在生产环境中,交换分区的大小一般为真实物理内存的1.5~2倍
过程:
添加完重启虚拟机,添加交换分区
[root@caoxinyang Desktop]# fdisk /dev/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.
Command (m for help): p
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: 0x8f10640b
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (4196352-41943039, default 4196352):
Using default value 4196352
Last sector, +sectors or +size{K,M,G} (4196352-41943039, default 41943039): +6G
Partition 2 of type Linux and of size 6 GiB is set
Command (m for help): W
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
成功之后查看 内存
[root@caoxinyang Desktop]# free -h
total used free shared buffers cached
Mem: 1.9G 911M 1.1G 9.8M 1.2M 242M
-/+ buffers/cache: 667M 1.3G
Swap: 2.0G 0B 2.0G
格式化新的交换分区,发现不可以格式化 此时运行一次partprobe 以进行格式化:
[root@caoxinyang Desktop]# mkswap /dev/sdb2
/dev/sdb2: No such file or directory
[root@caoxinyang Desktop]# partprobe
[root@caoxinyang Desktop]# mkswap /dev/sdb2
Setting up swapspace version 1, size = 6291452 KiB
no label, UUID=6696346f-e4d4-4860-9d2b-5f1e888035d8
挂载新的交换分区:
[root@caoxinyang Desktop]# swapon /dev/sdb2
[root@caoxinyang Desktop]# free -h
total used free shared buffers cached
Mem: 1.9G 926M 1.0G 9.8M 1.6M 245M
-/+ buffers/cache: 678M 1.3G
Swap: 8.0G 0B 8.0G
添加交换分区到系统启动项:
[root@caoxinyang Desktop]# vim /etc/fstab
完成