一、总结:

Linux系统管理

磁盘和文件系统管理;

RAID, LVM; btrfs; 

程序包管理:rpm, yum(dnf)

Linux的网络管理; 

进程和作业管理:htop, glances, tsar;

sed和awk;

Linux系统的开机启动流程;

内核基础知识,内核定制编译;

系统安装:kickstart, pxe

Linux磁盘管理

硬盘:

机械式硬盘

SSD

机械式:

track

sector: 512bytes

cylinder: 分区的基本单位;

MBR:Master Boot Record

512bytes

446: bootloader

64: filesystem allocation table

16: 标识一个分区

2:55AA

磁盘接口类型:

IDE (ATA):133MB/s,/dev/hd

SCSI: 640MB/s

SATA:6Gbps

SAS:6Gbps

USB:480MB/s

识别硬盘设备:/dev/sd

标记不同的硬盘设备:/dev/sd[a-z]

标记同一设备上的不同分区:/dev/sd[a-z][1-]

1-4: 主或扩展分区标识

5+:逻辑分区标识

设备文件:特殊文件

设备号:

major, minor

major: 设备类型

minor: 同一类型下的不同设备

“块”:block,随机设备

“字符”:character,线性设备

GPT

分区:分隔存储空间为多个小的空间,每个空间可独立使用文件系统;

分区工具:

fdisk, parted, sfdisk

fdisk工具的使用:

最多支持在一块硬盘上的15个分区;

分区管理子命令:

p: 显示

n: 创建

d: 删除

t: 修改分区ID

l: 列出所有支持ID类型

w: 保存退出

q: 放弃修改并退出

m: 获取帮助

创建完成之后,查看内核是否已经识别新的分区:

# cat /proc/partitions

有三个命令可以让内核重读磁盘分区表:

CentOS 5: partprobe [DEVICE]

CentOS 6,7: 

partx

kpartx

partx命令:

partx DEVICE

partx -a DEVICE

partx -a -n M:N DEVICE

M

M:

:N

kpartx命令:

kpartx -af DEVICE

Linux文件系统管理

文件系统:

VFS:Virtual File System

Linux:ext2, ext3, ext4, reiserfs, xfs, btrfs, swap

光盘:iso9660

Windows: fat32(vfat), ntfs

Unix: ffs, ufs, jfs, jfs2

网络文件系统:nfs, cifs

集群文件系统:ocfs2, gfs2

分布式文件系统:ceph, 

moosefs, mogilefs, hdfs, gfs, glusterfs

(1) 日志型文件系统

非日志型文件系统:ext2

日志型文件系统:ext3

(2) swap:交换分区

创建文件系统:

在分区上执行格式化(高级格式化)

要使用某种文件系统,满足两个条件:

内核中:支持此种文件系统

用户空间:有文件系统管理工具

创建工具:mkfs (make filesystem)

mkfs -t type DEVICE

mkfs.type DEVICE

ext系列文件系统的专用管理工具:

mke2fs -t {ext2|ext3|ext4} DEVICE

-b BLOCK: 1024, 2048, 4096

-L 'LABEL': 设定卷标

blkid命令:

blkid DEVICE

LABEL, UUID, TYPE

Linux文件系统管理:

mkfs, mkfs -t type = mkfs.type

ext:mke2fs

创建文件系统:

mke2fs [OPTION]... DEVICE

-t {ext2|ext3|ext4}

-b {1024|2048|4096}

-L 'LABEL'

-j: mke2fs -t ext3

-i #:

-N #:

-m #: 预留磁盘空间占据多大百分比的空间为后期管理使用;

-O FEATURE[,...]

-O ^FEATURE:关闭此特性

has_journal

文件系统属性查看及调整工具:

e2label

e2lable DEVICE [LABEL]

tune2fs

显示ext系列文件系统的属性,或调整其属性;

-l:显示超级块中的信息;显示整个文件的属性及布局等相关信息;

-L 'LABEL':修改卷标;

-m #: 调整预留给管理员的管理空间百分比;

-j: ext2 --> ext3

-O:文件系统属性的启动或关闭 

-o:文件系统默认挂载选项的启用或关闭

dumpe2fs:

-h: 仅显示超级块信息;

文件系统检测:

fsck: Filesystem check

fsck -t type

fsck.type

-a: 自动修复错误

-r: 交互式修复错误

-f: 强制检测

e2fsck:ext系列文件系统专用的检测修复工具;

-y: 自动回答为“yes”

-f:force

文件系统的挂载和使用:

kernel --> rootfs(分区)

rootfs分区:

bin, sbin, etc, lib, lib64, dev, tmp, proc, sys

/sbin/init

将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件系统访问入口的行为,称之为挂载;

解除此关联关系的过程:卸载;

挂载点:mount point, 设备挂载至目录;

注意:挂载点在挂载在之后,其内部原有的文件会被暂时隐藏;建立使用空目录做为挂载点;

挂载方法:

mount:通过读取/etc/mtab文件来显示当前系统所有已经挂载的设备;

mount -a:挂载/etc/fstab文件中的所有支持自动挂载的文件系统;

mount [options] [-o options] DEVICE MOUNT_POINT

[options]:命令选项

[-o options]:挂载选项

DEVICE: 要挂载的设备

(1) 设备文件:/dev/sda5

(2) 卷标:-L 'LABEL'

(3) UUID:-U 'UUID'

(4) 伪文件系统名称

MOUNT_POINT: 挂载点

常用选项:

-t type:文件系统类型

-r: 以“只读”方式挂载此文件系统

-w: 以“读写”方式挂载此文件系统

-n:每个文件系统在挂载时都会自动更新/etc/mtab文件,-n用于禁止此功能;

此时,如果想查看挂载的所有文件系统:cat /proc/mounts

-a: 自动挂载所有支持自动挂载的设备;

-B:绑定目录至另一个目录上;

-o 挂载选项:

async:异步模式

sync: 同步模式

atime/noatime:是否更新访问时间戳;

diratime/nodiratime:是否更新目录的访问时间戳;

auto/noauto: 是否允许此设备被自动挂载;

exec/noexec:是否允许执行此文件系统上应用程序;

dev/nodev:是否支持在此设备上使用设备文件;

suid/nosuid:

remount:重新挂载

ro

rw

user/nouser: 是否允许普通挂载此设备;

acl:是否支持此设备上使用facl;

defaults:rw, suid, dev, exec, auto, nouser, and async

umount:卸载命令

# umount DEVICE

# umount MOUNT_POINT

查看正在访问指定挂载点的进程:

# fuser -v MOUNT_POINT

终止所有正在访问指定的挂载点的进程:

# fuser -km MOUNT_POINT

交换分区:

free命令:

查看memory和swap的使用状态

-m: 以MB为单位

-g: 以GB为单位 

mkswap:创建交换分区

mkswap [option] DEVICE

-L 'LABEL'

swapon:启用交换分区

swapon [option] [DEVICE]

-a: 激活所有交换分区

-p PRIORITY: 设定其优先级;

swapoff:禁用交换分区

swapoff [option] [DEVICE]

文件系统等空间占用信息的查看工个:

df: disk free

-h: human-readable

-i: inode数量

-P: 以Posix兼容的格式输出

du: disk usage

-h: human-readable

-s: summary

文件系统相关挂载配置文件:/etc/fstab

每行定义一个文件系统;

要挂载的设备或伪文件系统   挂载点 文件系统类型 挂载选项 转储频率   自检次序

要挂载的设备:

设备文件、LABEL=、UUID=、伪文件系统名称

挂载选项:

defaults

转储频率:

0: 不转储

1: 每天转储

2: 每隔一天转储

自检次序:

0:不自检

1:首先自检,通常只有/才为1

2:

...

文件系统上的链接文件:

硬链接:

两个路径指向同一个inode

不能对目录进行;

不能跨分区进行

指向同一个inode的多个不同路径; 创建文件的硬链接会增加inode的引用计数;删除硬链接仅是删除其一个访问路径,只到最后一个路径被删除; 

符号链接:

链接文件的数据指向另一个文件路径;

可以对目录进行;

可以跨分区;

指向的是另一个文件路径;而非inode;

对文件创建符号链接不会增加其引用计数;删除原文件,符号链接文件也将无法;

ln [-s] SRC DEST

-s:symbolic link 

-v:verbose

二、创建一个10G文件系统,类型为ext4,要求开机可自动挂载至/mydata目录;

首先查看磁盘信息:

[root@Centos6 ~]# fdisk -lDisk /dev/sda: 128.8 GB, 128849018880 bytes255 heads, 63 sectors/track, 15665 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x0008c80d   Device Boot      Start         End      Blocks   Id  System/dev/sda1               1        7650    61440000   8e  Linux LVM/dev/sda2   *        7650        7675      204800   83  LinuxDisk /dev/mapper/vg_centos6-LogVol00: 2097 MB, 2097152000 bytes255 heads, 63 sectors/track, 254 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000Disk /dev/mapper/vg_centos6-LogVol03: 39.8 GB, 39841693696 bytes255 heads, 63 sectors/track, 4843 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0xe8070000Disk /dev/mapper/luks-6f00ee5a-0ab7-4164-bad4-865d6c97b01b: 39.8 GB, 39839596544 bytes255 heads, 63 sectors/track, 4843 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000Disk /dev/mapper/vg_centos6-LogVol01: 10.5 GB, 10485760000 bytes255 heads, 63 sectors/track, 1274 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000Disk /dev/mapper/vg_centos6-LogVol02: 10.5 GB, 10485760000 bytes255 heads, 63 sectors/track, 1274 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000

对/dev/sda进行操作:

[root@Centos6 ~]# fdisk /dev/sdaWARNING: DOS-compatible mode is deprecated. It's strongly recommended to         switch off the mode (command 'c') and change display units to         sectors (command 'u').Command (m for help):

选择n,添加一块新的分区

Command (m for help): nCommand action   e   extended   p   primary partition (1-4)

选择主分区或者扩展分区,主分区最多4个,目前还有2个可以选择:

Command (m for help): pDisk /dev/sda: 128.8 GB, 128849018880 bytes255 heads, 63 sectors/track, 15665 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x0008c80d   Device Boot      Start         End      Blocks   Id  System/dev/sda1               1        7650    61440000   8e  Linux LVM/dev/sda2   *        7650        7675      204800   83  Linux

使用扩展分区,并且创建10G的扩展分区

Command (m for help): nCommand action   e   extended   p   primary partition (1-4)ePartition number (1-4): 3First cylinder (7675-15665, default 7675): Using default value 7675Last cylinder, +cylinders or +size{K,M,G} (7675-15665, default 15665): +10G

按w保存创建内容:

Command (m for help): wThe 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 atthe next reboot or after you run partprobe(8) or kpartx(8)Syncing disks.

对扩展分区再次进行操作,建立10G的空间

[root@Centos6 ~]# fdisk /dev/sdaWARNING: DOS-compatible mode is deprecated. It's strongly recommended to         switch off the mode (command 'c') and change display units to         sectors (command 'u').Command (m for help): nCommand action   l   logical (5 or over)   p   primary partition (1-4)lFirst cylinder (7675-8980, default 7675): Using default value 7675Last cylinder, +cylinders or +size{K,M,G} (7675-8980, default 8980): Using default value 8980Command (m for help): wThe partition table has been altered!

partprobe刷新后使用cat /proc/partitions看到:

[root@Centos6 ~]# cat /proc/partitions major minor  #blocks  name   8        0  125829120 sda   8        1   61440000 sda1   8        2     204800 sda2   8        3          1 sda3   8        5   10485994 sda5 253        0    2048000 dm-0 253        1   38907904 dm-1 253        2   38905856 dm-2 253        3   10240000 dm-3 253        4   10240000 dm-4

sda5出来了。

对这10G的空间进行格式化成ext4类型。

[root@Centos6 ~]# mkfs.ext4 /dev/sda5 mke2fs 1.41.12 (17-May-2010)warning: 58 blocks unused.Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks656640 inodes, 2621440 blocks131074 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=268435456080 block groups32768 blocks per group, 32768 fragments per group8208 inodes per groupSuperblock backups stored on blocks: 	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632Writing inode tables: done                            Creating journal (32768 blocks): doneWriting superblocks and filesystem accounting information: ddoneThis filesystem will be automatically checked every 36 mounts or180 days, whichever comes first.  Use tune2fs -c or -i to override.

建立/mydata目录

[root@Centos6 ~]# mkdir /mydata

更改fstab使得开机能将/dev/sda5挂载到/mydata下面,挂载之后,使用df -h查看

[root@Centos6 ~]# cat /etc/fstab | tail -n1/dev/sda5		/mydata		ext4		defaults	0 0[root@Centos6 ~]# mount -a[root@Centos6 ~]# df -hFilesystem            Size  Used Avail Use% Mounted on/dev/dm-2              37G  356M   35G   2% /tmpfs                 932M     0  932M   0% /dev/shm/dev/sda2             190M   41M  140M  23% /boot/dev/mapper/vg_centos6-LogVol01                      9.5G  1.6G  7.5G  17% /usr/dev/mapper/vg_centos6-LogVol02                      9.5G   79M  9.0G   1% /var/dev/sda5             9.8G   23M  9.2G   1% /mydata