文件系统的使用:
首先要“挂载”:mount命令和umount命令
根文件系统之外的其他文件系统要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此管理操作即为“挂载”,此目录为“挂载点”
挂载点:MOUNT_POINT,用于作为另一个文件系统的访问入口
(1)事先存在
(2)应该使用未被其他进程使用的目录,否则该目录下的数据会被覆盖掉
mount命令:
挂载方法:# mount DEVICE MOUNT_POINT
mount [-fnrsvw] [-t vfstype] [-o options] device dir
mount:通过查看/etc/mtab 文件显示当前已挂载的所有设备
-t vsftype:指定要挂载的设备上的文件系统类型
-r:readonly,只读挂载
-w:read and write,读写挂载
-n:默认情况下,挂载或卸载的操作会同步更新到/etc/mtab文件中,-n用于禁用此特性
-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
-L 'LABEL':以卷标指定挂载设备
-U 'UUID':以UUID指定要挂载的设备
-B, –bind:挂载一个目录到另一个目录上
-o options:挂载选项,多个选项使用逗号分隔
async/sync:异步模式/同步模式, 内存更改时,同时写磁盘
atime/noatime:目录或文件被访问时是否更新时间戳
diratime/nodiratime:目录被访问时是否更新时间戳
auto/noauto:是否支持自动挂载, 是否支持-a选项
exec/noexec:是否允许运行此设备上的程序
dev/nodev:是否支持在此文件系统上使用设备文件
suid/nosuid:是否支持suid和sgid权限
remount:重新挂载
ro:只读
rw:读写
user/nouser:是否允许普通用户挂载此设备,默认管理员才能挂载
acl:启用此文件系统上的acl功能
Defaults:相当于rw, suid, dev, exec, auto, nouser, async
mount挂载,后面的选项会覆盖前面的选项,比如-o指定了acl,noacl,acl会被后面的覆盖
查看系统已挂载的设备:
# mount
# cat /etc/mtab
# cat /proc/mounts
[root@CentOS6 boot]# ls /mnt //未挂载前的mnt目录 hgfs [root@CentOS6 boot]# mount /dev/sda7 /mnt [root@CentOS6 boot]# ls /mnt //挂载后的mnt目录 lost+found [root@CentOS6 boot]# mount //查看当前系统的所有挂载 /dev/sda2 on / type ext4 (rw) ...... /dev/sda6 on /home type ext4 (rw,usrquota,grpquota) /dev/sda7 on /mnt type ext4 (rw) [root@CentOS6 mnt]# df //查看当前文件系统 Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 50264772 11230716 36474056 24% / ...... /dev/sda7 10290483 3856 9762107 1% /mnt [root@CentOS6 boot]# mount -o remount,rw,acl /mnt //重新挂载,并让磁盘支持acl [root@CentOS6 boot]# mount //查看磁盘是否支持acl /dev/sda2 on / type ext4 (rw) ...... /dev/sda6 on /home type ext4 (rw,usrquota,grpquota) /dev/sda7 on /mnt type ext4 (rw,acl) [root@CentOS6 boot]# cd /mnt //进入磁盘内,验证是否支持acl [root@CentOS6 mnt]# ls lost+found [root@CentOS6 mnt]# touch a [root@CentOS6 mnt]# setfacl -m u:gao:rwx a [root@CentOS6 mnt]# getfacl a # file: a # owner: root # group: root user::rw- user:gao:rwx //添加了acl控制 group::r-- mask::rwx other::r--
挂载光盘:(光盘为只读)
# mount -r /dev/cdrom MOUNT_POINT
光盘设备文件:/dev/cdrom ,/dev/ded
挂载U盘:事先识别的U盘的设备文件
挂载本地的回环设备(或.iso的文件):
# mount -o loop /path/to/some_loop_file(.iso文件) MOUNT_POINT
umount命令:
卸载时:可使用设备,也可以使用挂载点
umount DEVICE|DIR
注意:正在被访问的挂载点无法被卸载:
查看被那个或那些进程所占用:
# lsof MOUNT_POINT
# fuser -v MOUNT_POINT
终止所有正在访问某挂载点的进程:
# fuser -km MOUNT_POINT
[root@CentOS6 ~]# umount /mnt umount: /mnt: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) [root@CentOS6 ~]# fuser -v /mnt USER PID ACCESS COMMAND /mnt: root 5912 ..c.. bash [root@CentOS6 ~]# fuser -km /mnt /mnt: 5912c [root@CentOS6 ~]# umount /mnt [root@CentOS6 ~]# ls /mnt hgfs
补充:
swap文件系统:
liunx上的交换分区必须使用独立的文件系统,且文件系统的System ID必须为82
查看为当前系统提供swap分区的磁盘
cat /proc/swaps
创建swap设备:mkswap命令
mkswap [OPTIONGS] device
-L LABEL:指明卷标
-f:强制
交互分区的的启用和禁用:
启用:swapon
swapon [OPTION] [DEVICE]
-a:启用所有定义在/etc/fstab中的所有swap设备
-p PRIORITY:指定优先级
-s:查看当前生效的swap分区是那些磁盘提供
禁用:swapoff
swapoff DEVICE
swap的优先级:
用户可以给某个swap 指定一个0 到32767 的优先级
如果用户没有指定,那么核心会自动给swap 指定一个优先级,这个优先级从-1 开始,每加入一个新的没有用户指定优先级的swap ,会给这个优先级减一
先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级( 是正数) 永远高于核心缺省指定的优先级(是负数)
优化性能:分布存放,高性能磁盘存放
[root@CentOS6 ~]# fdisk /dev/sda //创建一个新的分区 ..... [root@CentOS6 ~]# mkswap /dev/sda8 //格式化为/swap分区 Setting up swapspace version 1, size = 2104476 KiB no label, UUID=d77d8cc5-1c35-491d-a1ce-ea07e87e3723 [root@CentOS6 ~]# swapon -s //查看当前生效的swap分区是那些磁盘提供 FilenameTypeSizeUsedPriority /dev/sda5 partition40959960-1 [root@CentOS6 ~]# free //查看当前磁盘的虚拟内存 total used free shared buffers cached Mem: 1004136 709120 295016 2596 125484 218492 -/+ buffers/cache: 365144 638992 Swap: 4095996 0 4095996 [root@CentOS6 ~]# swapon /dev/sda8 [root@CentOS6 ~]# swapon -s FilenameTypeSizeUsedPriority /dev/sda5 partition40959960-1 /dev/sda8 partition21044760-2 [root@CentOS6 ~]# swapoff /dev/sda8 [root@CentOS6 ~]# swapon -p 100 /dev/sda8 //设定优先级 [root@CentOS6 ~]# swapon -s FilenameTypeSizeUsedPriority /dev/sda5 partition40959960-1 /dev/sda8 partition21044760100 [root@CentOS6 ~]# free //查看当前磁盘的虚拟内存 total used free shared buffers cached Mem: 1004136 710212 293924 2596 125488 218460 -/+ buffers/cache: 366264 637872 Swap: 6200472 0 6200472
文件挂载配置文件;
除根文件系统之外的其他文件系统能够开机时自动挂载:需配置/etc/fstab文件
每行定义了一个要挂载的文件系统及相关属性
/etc/fstab文件中共6个字段:
(1)要挂载的设备或伪文件系统
设备名
LABEL
UUID
伪文件系统:如sysfs ,proc ,tmpfs等
(2)挂载点
swap类型的设备的挂载点为swap
(3)文件系统类型
(4)挂载选项
defaults:使用默认挂载选项
如果要同时指明多个挂载选项,彼此间用逗号隔开
defaults,acl,noatime,noexec
(5)转储频率
0:从不备份
1:每天备份
2:每隔一天备份
(6)自检次序
0:从不自检
1:首先自检,通常只能是根文件系统可用1
2:次级自检
[root@CentOS6 ~]# cat /etc/fstab .... # /etc/fstab .... UUID=d0e29042-dd4b-4e0f-a880-e6c5ae2ef4ab / ext4 defaults 1 1 .... /dev/cdrom/media/cdromiso9660defaults0 0 //挂载光盘 UUID="1bd3fc94-ad93-426b-93de-50220e402fc0" /home ext4 defaults,usrquota,grpquota0 0 //用UUID挂载 /dev/sda8 swapswapdefaults0 0 //挂载swap分区
磁盘管理常见工具:
内存空间使用状态:
free [OPTION]
-m: 以MB 为单位
-g: 以GB 为单位
文件系统空间占用等信息的查看工具:
df [OPTION]… [FILE]…
-H 以1000 为单位
-T 文件系统类型
-h: human-readable
-i :inodes instead of blocks
-P: 以Posix 兼容的格式输出
查看某目录总体空间占用状态:
du [OPTION]… DIR
-h: human-readable
-s: summary
dd 命令:
dd – convert and copy a fil
dd OPTION
用法:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST [options]
[options]:
bs=#:block size, 复制单元大小
count=#:复制多少个bs
of=file:输出数据路径
if=file:输入数据路径
bs=size 指定块大小(既是ibs,也是obs)
ibs=size:一次读size个byte
obs=size:一次写size个byte
cbs=size:一次转化size个byte
skip=blocks:从开头忽略blocks个ibs大小的块
seek=blocks:从开头忽略blocks个obs大小的块
count=n:拷贝n次
conv=conversion[,conversion…]:用指定的参数转换文件
转换参数:
ascii:转换EBCDIC为ASCII
ebcdic:转换ASCII为EBCDIC
block:转换为长度为cbs的记录,不足部分用空格填充。
unblock:替代cbs长度的每一行尾的空格为新行
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swab:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件。
sync:把每个输入块填充到ibs个字节,不足部分用空(NUL)
常见用法:
备份:
备份MBR:
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
将本地的/dev/sdx整盘备份到/dev/sdy
dd if=/dev/sdx of=/dev/sdy
将/dev/sdx全盘数据备份到指定路径的image文件
dd if=/dev/sdx of=/path/to/image
备份/dev/sdx全盘数据,并利用gzip工具进行压缩,保存到指定路径
dd if=/dev/sdx | gzip >/path/to/image.gz
破坏MBR中的bootloader:
dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446
恢复:
将备份文件恢复到指定盘
dd if=/path/to/image of=/dev/sdx
将压缩的备份文件恢复到指定盘
gzip -dc /path/to/image.gz | dd of=/dev/sdx
拷贝内存资料到硬盘:
将内存里的数据拷贝到root目录下的mem.bin文件
dd if=/dev/mem of=/root/mem.bin bs=1024
从光盘拷贝iso镜像:
拷贝光盘数据到root文件夹下,并保存为cd.iso文件
dd if=/dev/cdrom of=/root/cd.iso
销毁磁盘数据:
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/sda1 将无法挂载,创建和拷贝操作无法执行。
dd if=/dev/urandom of=/dev/sda1
得到最恰当的磁盘block size:
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size
测试硬盘读写速度:
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
通过上两个命令输出的执行时间,可以计算出测试硬盘的读/写速度
修复硬盘:
dd if=/dev/sda of=/dev/sda
当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生消磁点。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。且这个过程是安全,高效的
作业:
1、创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项
[root@CentOS6 ~]# fdisk /dev/sda ...... Command (m for help): n First cylinder (11160-26109, default 11160): Using default value 11160 Last cylinder, +cylinders or +size{K,M,G} (11160-26109, default 26109): +2G //添加一个2G的磁盘 Command (m for help): p ...... Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux ...... /dev/sda9 11160 11421 2104483+ 83 Linux Command (m for help): w ...... [root@CentOS6 ~]# partx -a /dev/sda BLKPG: Device or resource busy error adding partition 1 ...... error adding partition 8 [root@CentOS6 ~]# mke2fs -t ext4 -b 2048 -L TEST /dev/sda9 mke2fs 1.41.12 (17-May-2010) Filesystem label=TEST OS type: Linux Block size=2048 (log=1) ...... [root@CentOS6 ~]# blkid /dev/sda9 /dev/sda9: LABEL="TEST" UUID="8e615a71-5589-4cc7-a175-0bf068e3702d" TYPE="ext4" [root@CentOS6 ~]# mkdir /test [root@CentOS6 ~]# vim /etc/fstab
2、写一个脚本,完成如下功能:
(1) 列出当前系统识别到的所有磁盘设备
(2) 如磁盘数量为1,则显示其空间使用信息
否则,则显示最后一个磁盘上的空间使用信息
#!/bin/bash #description #version 0.1 #author gaomeng #date 20160827 # disk=`lsblk | grep "^sd" | tail -1 | cut -d" " -f1` fdisk -l /dev/$disk
[root@CentOS6 bin]# lsblk | grep "^sd" sda 8:0 0 200G 0 disk sdb 8:16 0 20G 0 disk [root@CentOS6 bin]# bash disk.sh 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
原创文章,作者:megedugao,如若转载,请注明出处:http://www.178linux.com/40936
评论列表(1条)
文章内容完整,思路清晰,理论和实践相结合,具有很强的操作性,整体下来读者能学到很多知识。