一、文件系统类型
-
Linux文件系统: ext2, ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap
-
光盘:iso9660
-
Windows:fat32, ntfs
-
Unix: FFS(fast), UFS(unix), JFS2
-
网络文件系统:NFS, CIFS
-
集群文件系统:GFS2, OCFS2(oracle)
-
分布式文件系统:ceph, moosefs, mogilefs, fastdfs,glusterfs, Lustre
-
RAW:未经处理或者未经格式化产生的文件系统
Linux文件系统: ext2, ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap
光盘:iso9660
Windows:fat32, ntfs
Unix: FFS(fast), UFS(unix), JFS2
网络文件系统:NFS, CIFS
集群文件系统:GFS2, OCFS2(oracle)
分布式文件系统:ceph, moosefs, mogilefs, fastdfs,glusterfs, Lustre
RAW:未经处理或者未经格式化产生的文件系统
文件根据其是否支持“日志(journal)”功能可分为两类:
-
有日志:ext3, ext4, xfs
-
无日志:ext2
小贴士:日志文件系统:
一种文件系统,指在文件系统发生变化时,先把相关的信息写入一个被称为日志的区域,然后再把变化写入主文件系统的文件系统。在文件系统发生故障(如内核崩溃或突然停电)时,日志文件系统更容易保持一致性,并且可以较快恢复。
二、虚拟文件系统
虚拟文件系统也成为VFS。
VFS存在的意义:
-
1.向上,对应用层提供一个标准的文件操作接口;
-
2.对下,对文件系统提供一个标准的接口,以便其他操作系统的文件系统可以方便的移植到Linux上;
-
3.VFS内部则通过一系列高效的管理机制,比如inode cache, dentry cache 以及文件系统的预读等技术,使得底层文件系统不需沉溺到复杂的内核操作,即可获得高性能;
-
4.此外VFS把一些复杂的操作尽量抽象到VFS内部,使得底层文件系统实现更简单。
VFS架构图:
三、文件系统的组成
文件系统管理分两部分组成:
-
文件系统内核模块:如 ext4, xfs, vfat…
-
文件系统管理工具:如 mkfs.ext4, mkfs.xfs,mkfs.vfat…
查看当前系统支持的文件系统类型:
[root@CentOS6 ~]# cat /proc/filesystems nodev sysfs nodev rootfs nodev bdev nodev proc ...
四、文件系统选择
1、大量小文件(LOSF, Lost of small files)I/O应用(如小图片)
Reiserfs(首选), Ext4文件系统适合这类负载特征,IO调度算法选择deadline,block size = 4096, ext4关闭日志功能。
2、大文件I/O应用(如视频下载、流媒体)
EXT4文件系统适合此类负载特征,IO调度算法选择anticipatory, block size = 4096, 关闭日志功能,启用extent(default)。
3、SSD文件系统选择
EXT4/Reiserfs可以作为SSD文件系统,但未对SSD做优化,不能充分发挥SSD性能,并影响SSD使用时间。 Btrfs对SSD作了优化,mount通过参数启用。但Btrfs仍处于实验阶段,生产环境谨慎使用。
五、创建与管理文件系统
1.mkfs命令
格式:
mkfs -t <ext4|xfs|btrfs|vfat> /dev/DEVICE
常用选项:
-t FS_TYPE:指定文件系统类型 -L LABEL:指定卷标名称
实例:
[root@bash ~]# mkfs -t ext4 -L "YOUNG" /dev/sdb mke2fs 1.42.9 (28-Dec-2013) /dev/sdb is entire device, not just one partition! Proceed anyway? (y,n) y Filesystem label=YOUNG OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1310720 inodes, 5242880 blocks 262144 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2153775104 160 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
2.mkfs.FS_TYPE命令
格式:
mkfs.FS_TYPE /dev/DEVICE
实例:
[root@bash ~]# mkfs.ext4 /dev/sdb mke2fs 1.42.9 (28-Dec-2013) /dev/sdb is entire device, not just one partition! Proceed anyway? (y,n) y Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) ...
3.mke2fs命令
mke2fs专用于ext系列文件系统的创建于管理。
常用选项:
-t {ext2|ext3|ext4}:指定文件系统 -b {1024|2048|4096}: 指定块大小 -L LABEL:卷标,即分区名称 -j: 相当于“mke2fs -t ext3” mkfs -t ext3 = mke2fs -t ext3 = mke2fs -j = mke2fs -O has_journal -i #: 为数据空间中的每多少字节创建一个inode;此字节数不应该小于块大小;比例关系; -I: 一个inode记录大小128---4096 -N #:直接指定元数据区有多少个inode; -m #: 指定为管理预留管理空间占据总空间的百分比;默认为5% -O FEATURE[,...]:指定启用分区的某特殊特性 -O ^FEATURE:关闭指定特性 -O has_journal:启用日志 -O ^has_journal:关闭关闭
实例:
[root@bash ~]# mke2fs -t ext4 -b 4096 -L 'young'\ -i 4096 -N 100000 -I 128 -m 6 -O has_journal /dev/sdb mke2fs 1.42.9 (28-Dec-2013) /dev/sdb is entire device, not just one partition! Proceed anyway? (y,n) y Filesystem label=young OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 102400 inodes, 5242880 blocks 314572 blocks (6.00%) reserved for the super user ...
4.e2lablel命令
e2lablel命令用于卷标查看及管理。
格式:
e2label DEVICE [LABEL]
实例:
[root@bash ~]# e2label /dev/sdb young [root@bash ~]# e2label /dev/sdb "GEEK" [root@bash ~]# e2label /dev/sdb GEEK
5.blkid命令
blkid命令用于块设备属性信息显示。
格式:
blkid [OPTIONS] [DEVICE]
常用选项:
-U UUID: 列出某UUID对应的设备 -L LABEL: 列出使用此LABEL设备
实例:
[root@bash ~]# blkid /dev/sdb: LABEL="GEEK" UUID="2e564b3f-e542-4bef-aa88-d70935c5c5fb" TYPE="ext4" /dev/sr0: UUID="2015-12-09-22-36-30-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/sda1: UUID="812a29ec-11dd-4fa6-b373-c4b42fb80162" TYPE="xfs" /dev/sda2: UUID="3b67c557-763b-41f2-aff0-4810b0324128" TYPE="xfs" /dev/sda3: UUID="86e06c71-0806-4463-bf6d-490a28cb12b6" TYPE="xfs" /dev/sda5: UUID="431c5b57-a52d-4fcc-8845-f984c463b78f" TYPE="swap" [root@bash ~]# ^C [root@bash ~]# blkid -U 2e564b3f-e542-4bef-aa88-d70935c5c5fb /dev/sdb [root@bash ~]# blkid /dev/sdb /dev/sdb: LABEL="GEEK" UUID="2e564b3f-e542-4bef-aa88-d70935c5c5fb" TYPE="ext4" [root@bash ~]# blkid -L "GEEK" /dev/sdb
6.dumpe2fs命令
dumpe2fs用于ext系列文件系统的超级块信息查看。
格式:
dumpe2fs [OPTIONS] DEVICE
常用选项:
-h: 仅显示超级块信息
实例:
[root@CentOS6 ~]# dumpe2fs /dev/sda1 dumpe2fs 1.41.12 (17-May-2010) Filesystem volume name: <none> Last mounted on: /boot Filesystem UUID: 23048871-a3fd-4d25-92da-5c39459bf7c6 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 51200 Block count: 204800 Reserved block count: 10240 Free blocks: 64456 Free inodes: 49329 First block: 1 Block size: 1024 Fragment size: 1024 Reserved GDT blocks: 256 Blocks per group: 8192 Fragments per group: 8192 Inodes per group: 2048 Inode blocks per group: 256 Flex block group size: 16 Filesystem created: Tue Jul 19 19:11:41 2016 Last mount time: Tue Jan 31 02:35:52 2017 Last write time: Tue Jan 31 02:35:52 2017 Mount count: 143 Maximum mount count: -1 Last checked: Tue Jul 19 19:11:41 2016 Check interval: 0 (<none>) Lifetime writes: 332 MB Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 128 Journal inode: 8 Default directory hash: half_md4 Directory Hash Seed: ac8bb143-702c-4f17-80fd-afda06b8763e Journal backup: inode blocks Journal features: journal_incompat_revoke Journal size: 4096k Journal length: 4096 Journal sequence: 0x000002a7 Journal start: 1 Group 0: (Blocks 1-8192) [ITABLE_ZEROED] Checksum 0x70bd, unused inodes 214 Primary superblock at 1, Group descriptors at 2-2 Reserved GDT blocks at 3-258 Block bitmap at 259 (+258), Inode bitmap at 275 (+274) Inode table at 291-546 (+290) 3545 free blocks, 216 free inodes, 229 directories, 214 unused inodes Free blocks: 4648-8192 Free inodes: 34, 1834-2048 ...
innode与超级块关系图:
超级块:超级块(superblock)的作用是存储文件系统的大小、有多少是空的和已经填满的占多少,以及他们各自的总数和其他诸如此类的信息。要使用一个分区来进行数据访问,那么第一个要访问的就是超级块。所以,超级块坏了,那磁盘也就基本没救了。
超级块占用1号物理块,就是文件系统的控制块,超级块包括:文件系统的大小、空闲块数目、空闲块索引表、空闲i节点数目、空闲i节点索引表、封锁标记等。超级块是系统为文件分配存储空间、回收存储空间的依据。
所以为了防止超级块数据损坏,就需要对超级块数据进行备份,以便于损坏时可以修复。
-
indoe bitmap (indoe对照表): 用来记录当前文件系统的indoe哪些是已经使用的,哪些又是未使用的。
-
block bitmap (块对照表): 用来记录当前文件系统哪些block已经使用,哪些又是未使用的。
-
inode table (inode 表格):inode是用来记录文件的属性以及该文件实际数据所在的block的号码。
-
GDT(Global Descriptor Table):用来描述每个block group开始和结束的block号码以及每个区段位于哪一个block号码之间。相当于文件系统描述的是每个block group的信息。
-
data blocks:数据块,用于存放数据
7.tune2fs命令
tune2fs用于重新设定可ext系统文件系统中的可调整参数。
格式:
tune2fs [OPTIONS] DEVICE
常用选项:
-l: 查看指定文件系统的超级块信息 -L LABEL:设定卷标 -m #: 调整为管理员预留空间的百分比 -j: 用于为ext2文件系统 添加ext3格式的日志,提升ext2为ext3 -O: 文件系统属性的打开或关闭,–O ^has_journal -o: 调整文件系统挂载的默认属性(文件系统挂载属性的开启或关闭),–o ^acl -U UUID:设定指定文件系统的UUID;
实例:
[root@bash ~]# tune2fs -l /dev/sdb #列出超级块信息,相当于dumpe2fs -h tune2fs 1.42.9 (28-Dec-2013) Filesystem volume name: GEEK Last mounted on: <not available> Filesystem UUID: 2e564b3f-e542-4bef-aa88-d70935c5c5fb Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 102400 ... [root@bash ~]# tune2fs -L "H" /dev/sdb #设定卷标 tune2fs 1.42.9 (28-Dec-2013) [root@bash ~]# e2label /dev/sdb H [root@bash ~]# blkid /dev/sdb /dev/sdb: UUID="6ce61834-a56c-4367-bce3-953d05f5f4bc" TYPE="ext2" [root@bash ~]# tune2fs -j /dev/sdb #增加日志,提升为ext3 tune2fs 1.42.9 (28-Dec-2013) Creating journal inode: done [root@bash ~]# blkid /dev/sdb /dev/sdb: UUID="6ce61834-a56c-4367-bce3-953d05f5f4bc" SEC_TYPE="ext2" TYPE="ext3" [root@bash ~]# tune2fs -o ^acl /dev/sdb [root@bash ~]# uuidgen 5272519a-039a-4bf0-817a-6014daec5e15 [root@bash ~]# tune2fs -U 5272519a-039a-4bf0-817a-6014daec5e15 /dev/sdb #修改uuid tune2fs 1.42.9 (28-Dec-2013) [root@bash ~]# blkid -U 5272519a-039a-4bf0-817a-6014daec5e15 /dev/sdb
8.findfs命令
findfs命令用于根据卷标或者UUID查找设备
格式:
findfs [OPTIONS] UUID=<uuid> findfs [OPTIONS] LABEL=<label>
实例:
[root@bash ~]# e2label /dev/sdb "YOUNG" [root@bash ~]# e2label /dev/sdb YOUNG [root@bash ~]# blkid /dev/sdb /dev/sdb: LABEL="YOUNG" UUID="5272519a-039a-4bf0-817a-6014daec5e15" SEC_TYPE="ext2" TYPE="ext3" [root@bash ~]# findfs UUID="5272519a-039a-4bf0-817a-6014daec5e15" /dev/sdb [root@bash ~]# findfs LABEL="YOUNG" /dev/sdb
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2017-02/140307p2.htm
六、文件系统检测和修复
因进程意外中止或系统崩溃等情况导致定稿非正常中止时,可能会导致文件损坏;此时,应该修复文件系统。
-
常发生于死机或者非正常关机之后
-
挂载为文件系统标记为“ no clean”
-
一定不要在挂载状态下修复
1.fsck命令:file system check
常用选项:
-t FS_TYPE:指定文件系统类型,相应地确定调用哪一个修复工具 -a: 自动修复错误 -r: 交互式修复错误
实例:
[root@bash ~]# blkid /dev/sdb /dev/sdb: LABEL="YOUNG" UUID="5272519a-039a-4bf0-817a-6014daec5e15" SEC_TYPE="ext2" TYPE="ext3" [root@bash ~]# fsck -t ext3 -a /dev/sdb fsck from util-linux 2.23.2 YOUNG: clean, 11/1310720 files, 126322/5242880 blocks
2.e2fsck命令
专用于ext系列文件系统检测与修复。
常用选项:
-y:自动回答为yes -f:强制修复
实例:
[root@bash ~]# e2fsck -y -f /dev/sdb e2fsck 1.42.9 (28-Dec-2013) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information YOUNG: 11/1310720 files (0.0% non-contiguous), 126322/5242880 blocks
七、文件系统挂在与卸载
将额外的文件系统与根文件系统上现存的目标建立关联关系,进而使得其作为此额外文件系统访问入口的操作过程即为挂载;拆除此关联关系的操作过程卸载。
挂载位置:挂载点,mount point
固定挂载点:/mnt, /media
文件系统挂载后,挂载点下原有的文件将会被临时隐藏;卸载后,隐藏的文件会再次出现;
挂载方法:# mount DEVICE MOUNT_POINT
1.mount命令
格式:
mount [OPTIONS] [-t FS_TYPE] [-o MOUNT_OPTION] DEVICE MOUNT_POINT
说明:
DEVICE:
-
(1) 设备文件,如/dev/sdb1;
-
(2) 卷标,-L LABEL,例如-L MYDATA;
-
(3) UUID, -U UUID,例如-U 3a96edc3-da29-462f-9ca8-14690b5fdd89;
MOUNT_POINT:事先存在;建议使用空闲目录;
常用的命令选项:
-t FS_TYPE: 指定文件系统类型; -r: read only,只读挂载; -w: read and write,读写挂载; -L LABEL:以LABEL格式指定要挂载的设备; -U UUID:以UUID格式指定要挂载的设备; -a: 自动挂载所有(/etc/fstab)支持自动挂载(挂载选项auto)的文件系统 -n: 挂载时,不更新/etc/mtab文件; -B, --bind:关联目录
实例:
[root@bash ~]# mount -t ext3 -w /dev/sdb /mnt
常用的挂载选项:-o MOUNT_OPTION
async: 使用异步模式;数据的修改操作先于内存中完成,而后根据某策略定期同步至磁盘中实现持久存储; sync: 同步 atime/noatime:对文件和目录都有效; diratime/nodiratime:仅对目录有效; auto/noauto: 设定是否支持mount的-a选项实现自动挂载; dev/nodev:是否支持在此设备使用设备文件; exec/noexec: 是否允许执行此设备上的二进制程序; suid/nosuid:是否允许在此设备上的文件上使用suid; remount:重新挂载 ro: 只读 rw: 读写 user/nouser:是否允许普通用户挂载设备 acl: 在此设备启用facl的功能,默认为不支持
挂在本地回环设备:
mount -o loop /PATH/TO/FILE MOUNT_POINT
实例:
[root@bash ~]# mount -o loop ./archlinux-2016.04.01-dual.iso /root/test/ mount: /dev/loop0 is write-protected, mounting read-only [root@bash ~]# ls test/ arch EFI isolinux loader
重新挂载已经挂载过的文件系统以支持其它挂载选项:
mount -o remount,... DEVICE [MOUNT_POINT]
实例:
[root@bash ~]# mount -t ext3 -o remount,acl,rw /dev/sdb /mnt
挂载目录到目录:
[root@bash ~]# mount --bind vimrc/ test/ [root@bash ~]# ls test/ spf13-vim [root@bash ~]# ls vimrc/ spf13-vim [root@bash ~]# umount test/ [root@bash ~]# ls test/ httpd-2.4.6-40.el7.CentOS.x86_64.rpm httpd-devel-2.4.6-40.el7.centos.x86_64.rpm httpd-manual-2.4.6-40.el7.centos.noarch.rpm httpd-tools-2.4.6-40.el7.centos.x86_64.rpm repodata
2.查看已经挂载的所有设备:
# mount # cat /etc/mtab # cat /proc/mounts
3.umount命令
umount命令用来卸载已经挂在设备。
格式:
umount DEVICE umount MOUNT_POINT
实例:
[root@bash ~]# umount /mnt [root@bash ~]# umount /dev/sdb
4.fuser、findmnt、lsof命令
查看有哪些进程正在访问指定挂载点:
# fuser -v MOUNT_POINT #lsof MOUNT_POINT
强行中止正在使用此挂载点的进程:
# fuser -km MOUNT_POINT
查看挂载情况:
#findmnt MOUNT_POINT
实例:
[root@bash ~]# fuser -v /media/centos7-mirror/ USER PID ACCESS COMMAND /media/centos7-mirror: root kernel mount /media/centos7-mirror [root@bash ~]# ls /media/centos7-mirror/ CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI images Packages RPM-GPG-KEY-CentOS-Testing-7 EULA isolinux repodata TRANS.TBL [root@bash ~]# fuser -km /media/centos7-mirror/ [root@bash ~]# findmnt /media/centos7-mirror TARGET SOURCE FSTYPE OPTIONS /media/centos7-mirror /dev/sr0 iso9660 ro,relatime
5.df命令
df命令用于文件系统空间占用等信息查看。
常用选项:
-h: human-readable -i: 显示inode使用率而非默认的磁盘空间使用率 -T: 文件系统类型 -P: 以Posix兼容的格式输出
实例:
[root@bash ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 20G 1022M 19G 5% / devtmpfs 475M 0 475M 0% /dev tmpfs 489M 76K 489M 1% /dev/shm tmpfs 489M 50M 440M 11% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda3 20G 2.9G 18G 15% /usr /dev/sda1 509M 154M 355M 31% /boot tmpfs 98M 44K 98M 1% /run/user/0 /dev/sr0 7.3G 7.3G 0 100% /media/centos7-mirror [root@bash ~]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda2 20971520 10907 20960613 1% / devtmpfs 121535 391 121144 1% /dev tmpfs 125166 4 125162 1% /dev/shm tmpfs 125166 524 124642 1% /run tmpfs 125166 13 125153 1% /sys/fs/cgroup /dev/sda3 20971520 91748 20879772 1% /usr /dev/sda1 524288 330 523958 1% /boot tmpfs 125166 12 125154 1% /run/user/0 /dev/sr0 0 0 0 - /media/centos7-mirror [root@CentOS6 ~]# df -T Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/sda3 ext4 49207096 7511820 39188988 17% / tmpfs tmpfs 1536304 0 1536304 0% /dev/shm /dev/sda1 ext4 194241 129785 54216 71% /boot
6.du命令
du命令用于某目录树占用空间的情况。
格式:
du [OPTIONS] /PATH/TO/DIR
常用选项:
-s: sumary, display only a total for each argument -h: human-readable --apparent-size FILE:显示文件自身大小而非占用磁盘空间
实例:
[root@bash ~]# du /etc/httpd/ 40 /etc/httpd/conf 16 /etc/httpd/conf.d 28 /etc/httpd/conf.modules.d 84 /etc/httpd/ [root@bash ~]# du -sh /etc/httpd/ 84K /etc/httpd/ [root@bash ~]# du --apparent-size image 395964 image
八、文件系统的配置文件: /etc/fstab
1.文件格式:
设备 挂载点 文件系统 挂载选项 转储频率 自检次序
2.格式说明:
1)设备:设备文件、LABLE=”lable”、UUID=”uuid”、伪文件系统名称
2).挂载点:空闲或专用的目录路径
3).文件系统:指定文件系统类型ext2,ext3,ext4,xfs等
4).挂载选项:defaults: rw, suid, dev, exec, auto, nouser, async, and relatime额外补充其它选项,例如acl,写作“defaults,acl”
5).转储频率(备份频率):能否被dump备份命令作用:dump是一个用来作为备份的命令。通常这个参数的值为0或者1
-
0:不做备份;
-
1:每天备份;
-
2:每隔一天;
6).自检次序:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整(clean)。
-
0:不自检
-
1:首先自检;通常只根文件系统可设定为第一自检次序;
-
2:次级自检,不同设备可以使用同一个自检顺序
九、处理交换文件和分区
交换分区有优先级;性能好的给予较高的优先级;性能一样时使用同等优先级,此时能实现负载均衡的效果;
1.swapon命令
格式:
swapon [OPTIONS] [DEVICE]
常用参数:
-p PRIORITY: 指定优先级,可以指定swap分区0到32767的优先级, 值越大优先级越高,不指定先添加的swap的缺省优先级比较高 -a: 启用所有的交换分区
2.关闭交换分区:
swapoff
常用参数:
-a:关闭所有交换分区
3.内存空间空闲及使用状态报告: free
常用参数:
-h:适合阅读形式展现 -m: 以MB为单位; -g: 以GB为单位
实例:
[root@CentOS6 ~]# lsblk #寻找82交换分区设备 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom sda 8:0 0 50G 0 disk ├─sda1 8:1 0 200M 0 part /boot ├─sda2 8:2 0 2G 0 part └─sda3 8:3 0 47.8G 0 part / sdb 8:16 0 50G 0 disk └─sdb1 8:17 0 50G 0 part sdc 8:32 0 20G 0 disk ├─sdc1 (dm-0) 253:0 0 9.2G 0 part └─sdc2 (dm-1) 253:1 0 3.9G 0 part [root@CentOS6 ~]# swapon /dev/sda2 #打开交换分区 [root@CentOS6 ~]# free -h total used free shared buffers cached Mem: 2.9G 1.9G 1.0G 272K 198M 1.5G -/+ buffers/cache: 245M 2.7G Swap: 2.0G 0B 2.0G [root@CentOS6 ~]# swapoff /dev/sda2 #关闭交换分区 [root@CentOS6 ~]# free -h total used free shared buffers cached Mem: 2.9G 1.9G 1.0G 272K 198M 1.5G -/+ buffers/cache: 244M 2.7G Swap: 0B 0B 0B #关闭后交换分区显示为0
注:在fstab文件中开机自动挂载交换分区挂载点不存在,要写为none
十、光盘及移动介质
1.卸载或弹出磁盘
eject
2.创建ISO文件
cp /dev/cdrom /root/centos7.iso mkisofs -r -o /root/etc.iso /etc
3.刻录光盘
wodim –v –eject centos.iso
十一、dd工具使用说明
(一)、dd命令的解释
dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
注意:指定数字的地方若以下列字符结尾则乘以相应的数字:b=512;c=1;k=1024;w=2
常用参数:
if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file > of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file > ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。 obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。 bs=bytes:同时设置读入/输出的块大小为bytes个字节。 skip=blocks:从输入文件开头跳过blocks个块后再开始复制。 seek=blocks:从输出文件开头跳过blocks个块后再开始复制。 注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。 count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
(二)、dd应用实例
1.将本地的/dev/hdb整盘备份到/dev/hdd
dd if=/dev/hdb of=/dev/hdd
2.将/dev/hdb全盘数据备份到指定路径的image文件
dd if=/dev/hdb of=/root/image
3.将备份文件恢复到指定盘
dd if=/root/image of=/dev/hdb
4.备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径
dd if=/dev/hdb | gzip > /root/image.gz
5.将压缩的备份文件恢复到指定盘
gzip -dc /root/image.gz | dd of=/dev/hdb
6.备份磁盘开始的512个字节大小的MBR信息到指定文件
dd if=/dev/hda of=/root/image count=1 bs=512 count=1指仅拷贝一个块;bs=512指块大小为512个字节。
恢复:dd if=/root/image of=/dev/hda
7.拷贝内存内容到硬盘
dd if=/dev/mem of=/root/mem.bin bs=1024 (指定块大小为1k)
8.拷贝光盘内容到指定文件夹,并保存为cd.iso文件
dd if=/dev/cdrom of=/root/cd.iso
9.增加swap分区文件大小
第一步:创建一个大小为256M的文件:
dd if=/dev/zero of=/swapfile bs=1024 count=262144
第二步:把这个文件变成swap文件:
mkswap /swapfile
第三步:启用这个swap文件:
swapon /swapfile
第四步:编辑/etc/fstab文件,使在每次开机时自动加载swap文件:
/swapfile swap swap default 0 0
10.销毁磁盘数据
dd if=/dev/urandom of=/dev/hda1
注意:利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。
11.测试硬盘的读写速度
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file dd if=/root/1Gb.file bs=64k | dd of=/dev/null
通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度。
12.确定硬盘的最佳块大小:
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
通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。
13.修复硬盘:
dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda
当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生magnetic flux point,当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。并且这个过程是安全、高效的。
/dev/null和/dev/zero的区别
/dev/null——它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。 /dev/zero——该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。
14.备份MBR:
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
15.破坏MBR中的分区表
dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-02/140307.htm