一 Linux目录结构与磁盘分区
1 Linux文件系统架构
在Linux中,所有的文件与目录都是由根目录开始的。那是所有目录与文件的源头, 然后再一个一个的分支下来,因此,我们也称这种目录配置方式为:目录树(directory tree), 这个目录树的主要特性有:目录树的启始点为根目录 (/, root);每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem 。举例来说, 可以利用 Network File System (NFS) 服务器挂载某特定目录等。每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。
绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/wzh/test.txt;
相对路径:相对于目前路径的文件名写法,只要不是 / 就属于相对路径的写法,. 代表当前的目录,也可以使用 ./ 来表示;
… 代表上一层目录,也可以 …/ 来代表;
/bin: 系统执行档的目录 ,存放的是单人维护模式下还能够被操作的常用指令
/boot Linux启动时,需要的文件
/dev 设备文件,类似于WIndows的设备文件管理器,linux习惯将一个个硬件映射成文件来管理,万物皆文件
- /dev/cpu:共0,1,2,3四个文件,因为我们在虚拟机设置中为该虚拟机分配了四核cpu
- /dev/(sda1,sda2,sda3,sdb1,sdb2…),每个都代表这某块的磁盘的一个分区映射文件
/etc ①保存系统配置信息(用户名&密码)和环境变量(jdk)的配置,root才有权力修改 ② 存储应用程序mysql,redis…的配置文件
- /etc/passwd:用户的配置文件,每行的信息是 username:token:uid:gid:description:homedir:loginShell,可查看系统有哪些用户
- /etc/shadow:用户的配置文件
- /etc/group:用户组的配置文件,每行的信息是groupname:token:gid:userlist,可以查看系统有几个组
- /etc/inittab:指定系统开机的运行级别,运行级别有6个,0,1,2,3,4,5
- /etc/fstab:配置磁盘分区信息的文件
- /etc/profile:有关Linux环境变量的东西
/home 普通用户的家目录: ~ 代表当前使用者的家目录,而 ~guest则代表用户名为guest的家目录,每新增一个帐号时会在此生成相应的家目录(文件名默认就是用户名),删除用户时也会连带被删除,linux每个用户必有一个家目录
/media 媒体文件,linux将我们插入的U盘/光驱等移动存储设备识别并挂载到该目录下
/mnt 挂载文件,允许用户临时挂载别的文件夹的,会自动生成相应文件夹来挂载外部文件系统,如hgfs
- /mnt/hgfs/myshare:这是共享文件夹路径,myshare是指定的共享文件夹
/opt 主要用于存放第三方软件的安装包,约定俗成规范性的产物,便于系统多人共享
/proc 虚拟化文件,是系统内存的映射,通过访问这个目录来获取系统信息
/root 管理员的家目录,即根目录,详情如下
/run 进程文件
/srv service的缩写,是一些网路服务启动之后,这些服务所需要取用的资料目录
/sys 系统文件
/lib 类似于Windows的动态链接库DDL文件,几乎所有应用程序都需要这些共享库
/var 可变数据,日志文件及系统运行产生的临时数据
- var/run 某些程序或者是服务启动后,会将他们的PID放置在这个目录下
- var/lib 程序本身执行的过程中,需要使用到的数据文件放置的目录
- var/log 系统日志存储文件夹
/tmp 临时文件
/usr(unix software resource):与软件的安装与执行有关,类似于Windows的和program files
-
/usr/bin 普通用户可以使用的命令
-
/usr/sbin 超级用户可以使用的命令
-
/usr/lib 32位库文件(各应用软件的函式库、目标文件(object file),执行档或脚本,类似于Windows的program files(x86)
-
/usr/lib64 64位库文件(各应用软件的函式库、目标文件(object file),的执行档或脚本,类似于Windows的program files
-
/usr/local/ 软件的安装包推荐存储在/opt目录,软件的安装位置推荐在此处
2 根目录与磁盘空间
-
“/”它是最高一级目录,是树形结构,我们称"/“为Linux的root,也就是 Linux文件系统的入口就是,所有的目录、文件、设备都在”/“之下,所有的目录都是由根目录衍生出来的,”/"是Linux文件系统的组织者领导者。
-
linux采用了一种“载入的处理方式”,它的整个文件系统包含了一整套的文件目录结构,将某块磁盘分区与一个目录联系起来,这时要载入的一个分区将使它的存储空间一个目录下获取
/*添加分区步骤
1 在虚拟机设置中添加一块磁盘,重启,通过lsblk -f可以看到sdb,此时还未分区
2 分区:fdisk /dev/sdb 开始分区操作
1) 第一步输入m,在众多指令中选择n命令,n是新建分区
2) 第二部是选择该分区是主分区还是扩展分区,选择p(primary)指定该分区是主分区
3) 选择分区数,指定该硬盘有几个分区,我们选1,只创建一个分区
4) 最后选w,w是将修改同步到磁盘然后退出,q是直接退出,刚才的修改对磁盘无效
5) 再次查看分区情况,sdb下面有一个分区sbd1,但此时该分区sdb1没有UUID和MOUNTPOINT
3 我们进行分区格式化:mkfs -t ext4 /dev/sdb1,此时磁盘被分配了UUID(依然没有MOUNTPOINT),初始化成功,称为了ext4类型的磁盘
4 ①磁盘挂载到/dev/newdisk: mount /dev/sdb1 /dev/newdisk(重启失效)
②取消挂载:unmount /dev/sdb1或者unmount /dev/newdisk,但卸载后之前通过/dev/newdesk写入/dev/sdb1的文件不会变化
5修改/etc/fstab,里面的内容如下,我们复制一行修改新增磁盘的的UUID(或者直接用它的名称/dev/sbd1代替UUID)和挂载目录信息*/
/dev/sdb1/ /newdisk ext4 defaults 0 0
UUID=38a64ec0-65e6-4ac5-8a84-92fbd758206c / xfs defaults 0 0
UUID=a85088a2-34c9-475e-ae1e-aca24c3958aa /boot xfs defaults 0 0
UUID=6789b952-b26c-4d23-ac65-98377b1a9976 swap swap defaults 0 0
/*
lsblk -f 查看磁盘分区详情(之所以有两块硬盘是因为我们在虚拟机硬件设置中添加了一块硬盘,重启后被识别)
第一列NAME:硬盘分为SCSI(当前主流硬盘,标识为hd*,hda1与hdb3就分别代表第一块SCSI硬盘的第一分区,
hdb3就代表第二块硬盘的第三分区)和IDE硬盘(sd,sda1,sdb3同理)
第二列FSTYPE:swap,即交换分区,存储暂时被踢出内存的进程;ext4是第四代扩展文件系统;xfs是一种非常优秀的
日志文件系统
第三列UUID:分区唯一标识符,刚添加的磁盘是没有的,只有格式化后才能获得
MOUNTPOINT:挂载点,标识该磁盘分区挂载到了那个文件夹上
*/
[root@CentOSWzh-7 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs a85088a2-3.... /boot
├─sda2 swap 6789b952-b.... [SWAP]
└─sda3 xfs 38a64ec0-6.... /
sdb
└─sdb1 ext4 de527071-e....
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00 /run/media/root/CentOS 7 x86_64
/*
df -h这是查看的磁盘利用情况
1 之所以没有显示/dev/sda2是因为这是swap分区,不是传统的磁盘
2 /dev/sr0是光驱的设备名,代表linux镜像CentOS 7 x86_64
3 vmhgfs-fuse磁盘对应挂载目录是/mnt/hgfs,是我们挂载的linux系统共享文件夹;
4 /dev/sda1 | sda2 | sda3分别挂载的是"/boot","/swap","/"
5 /dev/sdb1是我们新增的磁盘分区,挂载目录是自定义的 /dev/newdisk
6 tmpfs是一种虚拟内存文件系统,而不是块设备,是基于内存的文件系统
*/
[root@CentOSWzh-7 dev]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 895M 0 895M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 35M 876M 4% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda3 195G 8.3G 187G 5% /
/dev/sda1 1014M 180M 835M 18% /boot
vmhgfs-fuse 892G 111G 781G 13% /mnt/hgfs
tmpfs 182M 36K 182M 1% /run/user/0
/dev/sr0 4.4G 4.4G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 2.0G 6.0M 1.9G 1% /dev/newdisk
上述过程如图所示:
3)"/"目录也是root用户的家目录,根目录是整个系统最重要的一个目录,根目录不要放在非常大的分区, 因为越大的分区内你会放入越多的数据,如此一来根目录所在分区就可能会有较多发生错误的机会
4) /etc:配置文件,/bin:重要执行档,/dev:所需要的装置文件,/lib:执行档所需的函式库与核心所需的模块,/sbin:重要的系统执行文件这五个目录千万不可与根目录分开在不同的分区;