一、作业(练习)内容:
1、复习本次课程所讲的内容;
2、总结整理磁盘管理及文件系统管理中设计的各种命令的使用,并附注一定的示例;
Linux磁盘管理
机械式
磁盘接口类型:
识别硬盘设备:/dev/sd
标记不同的硬盘设备:/dev/sd[a-z]
标记同一设备上的不同分区:/dev/sd[a-z][1-]
1-4:主或扩展分区标识
5+:逻辑分区标识
设备文件:特殊文件
设备号:
major,
minor
major:设备类型
minor: 同一类型下的不同设备
“块”:block,随机设备
“字符”:character,线性设备
GPT
分区:分隔存储空间为多个小的空间,每个空间可独立使用文件系统;
fdisk工具的使用:
最多支持在一块硬盘上的15个分区;
分区管理子命令:
p:显示
n:创建
d:删除
t:修改分区ID
l:列出所有支持ID类型
w:保存退出
q:放弃修改并退出
m:获取帮助
创建完成之后,查看内核是否已经识别新的分区:
#
cat /proc/partitions
有三个命令可以让内核重读磁盘分区表:
CentOS
5: partprobe [DEVICE]
6,7:
partx
kpartx
partx命令:
DEVICE
-a DEVICE
-a -n M:N DEVICE
M
M:
:N
kpartx命令:
-af DEVICE
文件系统:
VFS:Virtual File System
绝对路径:/
根文件系统:rootfs
文件系统挂载:
LSB:
FHS(文件系统层级结构标准)
FHS:
/boot:引导文件存放目录,例如kernel(vmlinuz)、bootloader(grub, grub2);
/bin:
binary,供用户使用的基本的命令;OS启动即会用到程序;
/sbin:管理类的基本命令;
/lib:基本共享库;内核模块;
/lib64:x86_64系统的共享库;
/etc:配置文件目录;
/home/USERNAME:普通用主目录的默认位置;
/root:管理员的主目录;
/media:便携式移动设备;
/mnt:临时文件系统挂载点;
/opt:可选目录,第三方应用程序的默认安装位置;
/dev:devices,设备文件
b:block devices,random access
c:
character deivces,linear access
/proc:
伪文件系统;用于输出内核与进程的相关信息;
/sys:
伪文件系统;
/srv:services,系统上运行服务用到中间数据;
/tmp:临时文件目录;
/usr:Universal Shared,
Read-only data;
bin:保证系统提供基本功能;
sbin
lib
lib64
include:
C程序的头文件;header
files
share:结构化的独立数据
doc,
man
local:现在常用的第三方程序的安装位置;
bin
sbin
lib
lib64
etc
share
/var:variable data files
cache:应用程序缓存数据
lib:应用程序的状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据;
lock:锁文件
log:日志文件
opt:专用于/opt
spool:应用程序的数据池;
run:运行中的进程的相关数据;通常用守护进程 的pid文件;
/selinux
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
ext系列文件系统的专用管理工具:
mke2fs
-t {ext2|ext3|ext4} DEVICE
-b
BLOCK: 1024, 2048, 4096
-L
'LABEL': 设定卷标
blkid命令:
blkid
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:显示超级块中的信息;显示整个文件的属性及布局等相关信息;
'LABEL':修改卷标;
#: 调整预留给管理员的管理空间百分比;
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文件中的所有支持自动挂载的文件系统;
[options] [-o options] DEVICE MOUNT_POINT
[options]:命令选项
[-o
options]:挂载选项
DEVICE:要挂载的设备
(1)设备文件:/dev/sda5
(2)卷标:-L
(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
文件系统等空间占用信息的查看工个:
df:
disk free
-h:
human-readable
-i:
inode数量
-P:以Posix兼容的格式输出
du:
disk usage
-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
3、创建一个10G的文件系统,类型为ext4,要求开机可自动挂载至/mydata目录
[root@localhost ~]# fdisk -l
Disk /dev/sda: 128.8 GB, 128849018880
bytes
255 heads, 63 sectors/track, 15665
cylinders
Units = cylinders of 16065 * 512 =
8225280 bytes
Sector size (logical/physical): 512
bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes /
512 bytes
Disk identifier: 0x0005f700
Device Boot Start End Blocks
Id System
/dev/sda1 *
1 26 204800
83 Linux
Partition 1 does not end on cylinder
boundary.
/dev/sda2 26 7675
61440000 83 Linux
/dev/sda3 7675 7936
2097152 82 Linux swap / Solaris
Disk /dev/sdb: 21.5 GB, 21474836480
bytes
255 heads, 63 sectors/track, 2610
cylinders
Units = cylinders of 16065 * 512 =
8225280 bytes
Sector size (logical/physical): 512
bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes /
512 bytes
Disk identifier: 0x00000000
这里发现有一个硬盘
[root@localhost ~]# fdisk /dev/sdb
Device contains neither a valid DOS
partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk
identifier 0x88371439.
Changes will remain in memory only,
until you decide to write them.
After that, of course, the previous
content won't be recoverable.
Warning: invalid flag 0x0000 of
partition table 4 will be corrected by w(rite)
WARNING: 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): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility
flag
d delete a partition
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)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G}
(1-2610, default 2610): +10G
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition
table.
Syncing disks.
[root@localhost ~]# cat /proc/partitions
major minor #blocks
name
8 0 125829120 sda
8 1 204800 sda1
8 2 61440000 sda2
8 3 2097152 sda3
8 16 20971520 sdb
8 17 10490413 sdb1
[root@localhost ~]#
接下来格式化,并且指定类型为ext4
[root@localhost ~]# mkfs -t ext4
/dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655776 inodes, 2622603 blocks
131130 blocks (5.00%) reserved for the
super user
First data block=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments
per group
8096 inodes per group
Superblock backups stored on blocks:
32768,
98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem
accounting information: done
This filesystem will be automatically
checked every 35 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
然后在根目录下创建mydata目录,并使用mount命令挂载分区
[root@localhost ~]# mkdir /mydata -----创建目录
[root@localhost ~]#
[root@localhost ~]# mount -o auto /dev/sdb1
/mydata -o auto表示此分区允许自动挂载
[root@localhost ~]# df -Th
Filesystem Type
Size Used Avail Use% Mounted on
/dev/sda2 ext4
58G 3.4G 52G
7% /
tmpfs tmpfs
491M 0 491M
0% /dev/shm
/dev/sda1 ext4
190M 36M 145M
20% /boot
/dev/sdb1 ext4
9.8G 23M 9.3G
1% /mydata
[root@localhost ~]#
[root@localhost ~]# blkid /dev/sdb1 ---使用blkid命令查看该分去的UUD,并把该值复制下来
/dev/sdb1: UUID="c48ea605-b1d7-4585-aeb8-e6918ea4e77a" TYPE="ext4"
[root@localhost ~]#
[root@localhost ~]# vi /etc/fstab
# /etc/fstab
# Created by anaconda on Wed Aug 19
18:07:26 2015
#
# Accessible filesystems, by reference,
are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8),
mount(8) and/or blkid(8) for more info
#
UUID=628caa97-3e69-481c-95ed-13acc4721bec
/ ext4 defaults 1 1
UUID=f7eb501a-f2d6-4b95-bf68-b4a616f3d992
/boot ext4 defaults 1 2
UUID=511653fb-e927-4f78-bac9-c2d349484467
swap swap defaults 0 0
UUID="c48ea605-b1d7-4585-aeb8-e6918ea4e77a"
/mydata ext4 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
[root@localhost ~]# mount -a
[root@localhost ~]#
[root@localhost ~]# df -Th
Filesystem Type
Size Used Avail Use% Mounted on
/dev/sda2 ext4
58G 3.4G 52G
7% /
tmpfs tmpfs
491M 0 491M
0% /dev/shm
/dev/sda1 ext4
190M 36M 145M
20% /boot
/dev/sdb1 ext4
9.8G 23M 9.3G
1% /mydata
[root@localhost ~]#