1.Linux版本
Linux分为内核版和发行版,Linux内核其实就是一个操作系统最底层的核心及其提供的核心工具,仅有内核而没有应用软件的操作系统是无法使用的,为了让使用者能够接触到Linux,于是很多的商业公司或非营利团体,就将 Linux Kernel(含 tools)与可运行的软件整合起来,加上自己具有创意的工具程序,这个工具程序可以让用户以光盘/DVD 或者透过网络直接安装/管理 Linux 系统,这个『Kernel + Softwares + Tools + 可完全安装程序』的咚咚,我们称之为Linux发行版。
Linux发行版本根据软件包管理方式大致可以分为两类,RPM方式管理软件的系统(RedHat系列:RedHat、CentOS、OpenSuSe等),DPKG方式管理软件的系统(Debian系列:Debian、Ubuntu等)
2.Linux分区与挂载
用于学习或者实验的话,一般采用虚拟机安装Linux操作系统即可,比较常用的虚拟机软件有VMware、VirtualBox,如果你的电脑是win10系统的话可以直接使用系统自带虚拟机软件Hyper-v,具体使用和安装过程这里不再详述可以自行参照网上教程,这里主要说一下Linux的分区与挂载。
2.1 分区方式
常见的两种分区表现形式,
MBR分区表:最大支持2.1T硬盘,最多支持4个分区,支持32位和64位系统;
GPT分区表(全局唯一标示分区表):支持9.4ZB(1ZB=1024PB, 1PB=1024EB, 1EB=1024TB),理论上支持的分区数没有限制(但windows限制128个主分区),只支持64位系统。
虽然GPT是一个较新的分区机制,解决了MBR很多缺点,但是目前使用最多的还是MBR分区方式。MBR最多有4个分区,分区类型有三种:
- 主分区
-
扩展分区
- 最多有一个
- 扩展分区+主分区数最多不超过4个
- 不能写入数据,不能格式化,只能用来包含逻辑分区
-
逻辑分区
- 包含在扩展分区内,可以有多个
- 扩展分区至少要包含一个逻辑分区
2.2 设备挂载
Linux中所有内容都是以文件的形式保存和管理的,硬件设备也是文件,这和Windows完全不同,windows是通过设备管理器来管理硬件的,linux的设备文件保存在/dev/
目录中,比如硬盘文件是/dev/sd[a-p]
,光盘文件是/dev/hdc
等,硬件设备需要挂载到相应的目录文件才能使用。
所谓的挂载就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下,也就是说进入该目录就可以读取该分区的意思,这个动作我们称为挂载,那个进入点的目录我们称为挂载点。 由于整个 Linux 系统最重要的是根目录(/
),因此根目录一定需要挂载到某个分区, 至于其他的目录则可依用户自己的需求来给予挂载到不同的分区。
常见的硬件设备文件名如下:
硬件 | 设备名称 |
---|---|
IDE硬盘 | /dev/hd[a-d] |
SCSI/SATA/USB硬盘 | /dev/sd[a-p] |
光驱 | /dev/cdrom或/dev/sr0 |
软盘 | /dev/fd[01-1] |
打印机(25针) | /dev/lp[0-2] |
打印机(USB) | /dev/usb/lp[0-15] |
鼠标 | /dev/mouse |
图示说明:
上图所示,硬盘被分为三个可用分区,其中sda1、sda2为主分区分别挂载在/boot和 / 目录下,sda3为扩展分区内部包含一个逻辑分区sda5,sda5挂载在/home目录下。/boot目录下的所有数据存储在sda1分区里,/home目录下的所有数据存储在sda5分区里,根目录 / (除了/boot、/home)下的数据都存储在sda2分区里。
1.sda1表示第一块硬盘第一个分区,sda2表示第一块硬盘第二个分区,sdb1表示第二块硬盘一个分区,以此类推...
2.逻辑分区一定是从sda5开始,因为sda1、sda2、sda3和sda4文件名被主分区或扩展分区占用
Linux系统安装时,一般分区如下:
-
必须分区
- / (根分区)
-
swap (交换分区)
- 如果真实内存小于4GB, swap为内存的两倍
- 如果真实内存大于4GB, swap和内存一致
- 实验环境,不大于2GB即可
-
推荐分区
- /boot (启动分区,一般1GB,仅存放系统启动所需的数据)
-
常用分区
- /home (用于文件服务器)
- /www (用于web服务器)
swap分区的文件系统类型式为swap,其余分区文件系统类型一般为ext4。一般系统安装存在 /、swap、/boot三个分区即可
2.3 挂载命令
-
mount 或 mount -l
- 查询系统中已挂载的设备,-l会显示卷标名称
-
mount -a
- 依据配置文件/etc/fstab的内容,自动挂载
-
mount [-t 文件系统类型] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点
- 手动挂载
-
选项
- -t 文件系统:加入文件系统类型来指定挂载的类型,可以是ext3、ext4、iso9660等文件系统
- -L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载
- -o 特殊选项: 可以指定挂载的额外选项,比如读写权限、同步异步等,如果不指定则默认值生效。具体的特殊选项见下表
-
umount 设备文件名 或 umount 挂载点
- 卸载已挂载设备
- 因为设备文件名和挂载点已经连接到一起,所以卸载哪一个都可以
补充(挂载特殊选项参数说明):
特殊选项 说明 atime/noatime 更新访问时间/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认为更新 async/sync 异步/同步,默认为异步 auto/noauto 自动/手动,mount –a命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认为自动 defaults 定义默认值,相当于 rw,suid,dev,exec,auto,nouser,async这七个选项 exec/noexec 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是 exec允许 remount 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限。示例: mount -o remount,noexec /boot
重新挂载/boot分区并使用noexec权限rw/ro 读写/只读,文件系统挂载时,是否具有读写权限,默认是 rw suid/nosuid 具有/不具有 SUID权限,设定文件系统是否具有 SUID和 SGID的权限,默认是具有 user/nouser 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认不允许,只有root可以挂载分区 usrquota 写入代表文件系统支持用户磁盘配额,默认不支持 grpquota 写入代表文件系统支持组磁盘配额,默认不支持
2.4 LVM逻辑卷管理
2.4.1 LVM简介
LVM是Logical Volume Manager的简称,中文就是逻辑卷管理。传统分区使用固定大小分区,重新调整大小十分麻烦。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于传统的磁盘分区有很大的灵活性。
- 物理卷(PV, Physical Volume):就是真正的物理硬盘或分区
- 卷组(VG, Volume Group):将多个物理卷合起来就组成卷组,组成同一个卷组的物理卷可以是同一个硬盘的不同分区,也可以是不同硬盘的不同分区,可以把物理卷想象为一个逻辑硬盘。
- 逻辑卷(LV, Logival Volume):卷组是一个逻辑硬盘,硬盘必须分区之后才能使用,这个分区我们称作逻辑卷,逻辑卷可以格式化和写入数据。
2.4.2 建立LVM步骤
- 使用
fdisk
交互命令把物理硬盘分成分区,当然也可以是整块硬盘。 -
把物理分区建立成为物理卷(PV),也可以把整块硬盘都建立为物理卷。
-
建立物理卷:
pvcreate [设备文件名]
- 把整块硬盘都建立成物理卷,命令为
pvcreate /dev/sdb
,即第二块硬盘整个都建立成物理卷;把分区建立成物理卷,命令为pvcreate /dev/sdb5
,即第二块硬盘第五个分区建立成物理卷
- 把整块硬盘都建立成物理卷,命令为
- 查看物理卷:
pvscan
或pvdisplay
(查看更加详细的物理卷状态) - 删除物理卷:
pvremove [物理卷名(建立物理卷时的设备文件名)]
-
-
把物理卷整合成为卷组(VG)。卷组就已经可以动态的调整大小了,可以把物理分区加入卷组,也可以把物理分区从卷组中删除。
-
建立卷组:
vgcreate [选项] 卷组名 物理卷名(多个空格隔开)
- 选项 '
-s PE大小
':指定PE(保存数据的最小单元)的大小,单位可以是MB、GB、TB等,如果不写默认PE大小是4MB。 - 示例:
vgcreate -s 8MB scvg /dev/sdb5 /dev/sdb6
, 把物理卷/dev/sdb5、/dev/sdb6加入卷组scvg
- 选项 '
- 查看卷组:
vgscan
或vgdisplay
- 扩充卷组容量:
vgextend 卷组名 物理卷名
- 减小卷组容量:
vgreduce 卷组名 物理卷名
-
删除卷组:
vgremove 卷组名
- 卷组如果已经添加了逻辑卷,要先删除逻辑卷才能删除卷组,卷组删除后才能删除物理卷
-
-
把卷组再划分为逻辑卷(LV),当然逻辑卷也是可以直接调整大小的。逻辑卷可以想象成分区,所以也需要格式化和挂载。
-
建立逻辑卷:
lvcreate [选项] [-n 逻辑卷名] 卷组名
-
选项
-
-L 容量
:指定逻辑卷大小,单位MB、GB、TB -
-l 个数
:按照PE个数指定逻辑卷大小,这个参数需要换算容量 -
-n 逻辑卷名
:指定逻辑卷名
-
-
- 示例:
lvcreate -L 2GB -n userlv scvg
,在卷组scvg中建立一个容量2GB名称为userlv的逻辑卷 -
建立完逻辑卷之后,还要格式化和挂载之后逻辑卷才能正常使用。格式化和挂载命令和操作普通分区时一样,不过需要注意的是逻辑卷的设备文件名是“/dev/卷组名/逻辑卷名”,比如示例这里建立的逻辑卷设备文件名是
/dev/scvg/userlv
- 格式化逻辑卷:
mkfs -t ext4 /dev/scvg/userlv
- 创建挂载目录:
mkdir /disklvm
- 挂载逻辑卷:
mount /dev/scvg/userlv /disklvm/
- 格式化逻辑卷:
-
3.目录结及说明
Linux目录结构及说明如下
目录名 | 作用 |
---|---|
/bin/ | bin是Binary的缩写, 这个目录存放着最经常使用的命令 |
/sbin/ | s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序 |
/usr/bin/ | 系统用户使用的应用程序 |
/usr/sbin/ | 超级用户使用的比较高级的管理程序和系统守护程序 |
/boot/ | 系统启动目录,保存于系统启动相关的文件,如内核文件和启动引导程序(grup)文件等 |
/dev/ | 设备文件保存位置 |
/etc/ | 配置文件保存位置。系统内所有采用默认安装方式(rpm安装)的服务配置文件全部保存在此目录,如用户信息、服务的启动脚本、常用服务的配置文件等 |
/home/ | 普通用户的家目录。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的家目录,所有普通用户的宿主目录是在/home/下建立一个和用户名相同的目录。如用户user1的家目录就是/home/user1/ |
/lib/ | 这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库 |
/lib64/ | 64位函数库保存位置 |
/lost+found/ | 当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。这个目录只在每个分区中出现,例如/lost+found就是根分区的备份恢复目录,/boot/lost+found就是/boot分区的备份恢复目录 |
/media/ | 挂载目录。系统建议是用来挂载媒体设备的,如软盘和光盘 |
/misc/ | 挂载目录。系统建议用来挂载NFS服务的共享目录 |
/mnt/ | 挂载目录。早期Linux只有这一个挂载目录,并没有细分,现在系统建议这个目录用来挂载额外的设备,如U盘、移动硬盘等。虽然有三个默认的挂载目录/media/、/misc/、/mnt/,但是到底使用哪个目录挂载什么设备都可以由管理员自己决定。一般习惯挂载目录只用一个/mnt/, 在/mnt/目录下建立不同的目录挂载不同的设备,如/mnt/cdrom挂载光盘、/mnt/usb挂载U盘 |
/opt/ | 第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。一般习惯把软件放到/usr/local/目录中,也就是说/usr/local/目录也可以用来安装软件 |
/proc/ | 虚拟文件系统。改目录中的数据并不保存在硬盘上,而是保存到内存中。主要保存系统的内核、进程、外部设备状态和网络状态等。如/proc/cpuinfo是保存CPU信息的,/proc/devices是保存设备驱动的列表的,/proc/filesystems是保存文件系统列表的,/proc/net 是保存网络协议信息的 |
/sys/ | 虚拟文件系统。和/proc/目录相似,该目录中的数据都保存在内存中,主要保存与内核相关的信息 |
/root/ | root用户的宿主目录。普通用户宿主目录在/home/下,root宿主目录直接在 / 下 |
/run/ | 系统运行时产生的数据,如ssid, pid等相关数据。 |
/srv/ | 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据 |
/tmp/ | 临时目录。系统存放历史文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录不要保存重要数据,最好每次开机把该目录清空 |
/usr/ | 系统软件资源目录。注意usr不是user的缩写,而是"UNIX Software Resource"的缩写,所以不是存放用户数据的目录,而是存放系统软件资源的目录。系统中安装的软件大多数保存在这里 |
/usr/lib/ | 应用程序调用的函数库保存位置 |
/usr/local/ | 手工安装的软件保存位置。一般建议源码包软件安装在这个位置 |
/usr/share/ | 应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录 |
/usr/src/ | 源码包保存位置。手工下载的源码包和内核源码包都可以保存到这里。一般习惯把手工下载的源码包保存到/usr/local/src/目录中,把内核源码保存到/usr/src/kernels/目录中 |
/usr/src/kernels/ | 内核源码保存位置 |
/var/ | 动态数据保存位置。只要保存缓存、日志以及软件运行所产生的文件 |
/var/www/html/ | RPM包安装Apache的网页主目录 |
/var/lib/ | 程序运行中需要调用和改变的数据保存位置。如mysql的数据库保存在/var/lib/mysql/目录中 |
/var/log/ | 系统日志保存位置 |
/var/run/ | 一些服务和程序运行后,它们的PID(进程ID)保存位置。是/run/目录的软链接 |
/var/spool/ | 放置队列数据的目录。就是排队等待其他程序使用的数据,比如邮件队列和打印队列 |
/var/spool/mail/ | 新收到的邮件队列保存位置。系统新收到的邮件会保存在此目录 |
/var/spool/cron/ | 系统的定时任务队列保存位置。系统的计划任务会保存在这里 |