在第一天装系统的时候,我们已经知道了mount,即挂载的概念。装机时自己配置分区的小伙伴都知道,CentOS7的文件系统为xfs,CentOS6则是ext4,更早的CentOS5则是ext3。老师告诉我们这叫文件系统。不同的文件系统有不同的存储特色。如linux里ext2无日志,xfs可支持最高200T之类的,window里fat32无法支持大于4G文件的传输云云……
稍等,好像有点跑题了。
总之,今天我们来说说基于CentOS平台的Linux文件管理。
先看下面这个题目。
创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项 |
喂喂,用不着这个表情啦。我们今天的主题就是教你学会做这类题目啦!注意,是这类啦!这么说本作的标题大概可以改成——教你十分钟掌握Linux文件管理。嗯,不错呢这个注意。阿拉现在就去改。
改好了!那就让我们重回正题。
咳咳,创建2G的文件系统啊。那就来吧……
桥豆麻袋。先看好题目。题目要求文件系统大小为2G,这个不先设定好可不美哟。虽然图形化分区size和format是同时设定的,但其执行也是一条条来的哟。科科,后期可更改的文件系统属性里可没有文件大小这一属性哟。0.0总觉得说了一堆无关紧要的废话啊。喂,这点常识是个人都知道的吧。。
咳咳,开始了啊。
1.分区
linux里的分区工具有fdisk,parted,gdisk。论功能parted最全面。论性能大概数gdisk最优。但是用的最多的,还是老当益壮的fdisk。
关于分区工具,度娘和谷哥都能给出不错的答案。阿拉就不再废话了。(众人:喂,该多说的地方一字千金啦?阿拉:咳咳,这叫抛砖引玉。众人:)
哦急死尅。阿拉开始分区了啊。记笔记了啊。
fdisk和gdisk默认为交互式分区。好吧,parted也可以交互式分区。(大概是分区着实麻烦了点。嘛,英语好的话交互式操作两遍就熟悉了。)
不过我们可以用下面的方式实现非交互式。(说是非交互式,其实也就是把交互式要做的列出来执行罢了)
#fdisk对新硬盘分区(覆盖已有数据的话需要加o) #gdisk功能类似fdisk。 [root@centos7 ~]# echo -e "n\np\n1\n\n+1G\nw\n" |fdisk /dev/sdb #fdisk追加大小为1G的新分区(仅分区总数不超过4时) [root@centos7 ~]# echo -e "n\n\n\n+1G\nw\n" |fdisk /dev/sdb #parted新设分区结构(这个跟ext4和xfs不是一个体系啦),yes是重设时需要的 [root@centos7 ~]# parted /dev/sdb mklabel gpt/msdos [yes] #parted新分一个1G的分区。这个要是继续分区的话数值要计算好的说 [root@centos7 ~]# parted /dev/sdb mkpart p 1 1000 #lsblk查询分区信息。不跟磁盘名则列出当前主机下所有磁盘 [root@centos7 ~]# lsblk /dev/sdb NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 150G 0 disk ├─sdb1 8:17 0 953M 0 part └─sdb2 8:18 0 1G 0 part #虽然非交互式演示起来方便,实操还是交互式更强大哦。 [root@centos7 ~]# fdisk /dev/sdb WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion. Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): m #m显示帮助信息 Command action d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types m print this menu n add a new partition o create a new empty DOS partition table q quit without saving changes s create a new empty Sun disklabel w write table to disk and exit Command (m for help): p #显示当前分区信息 Disk /dev/sdb: 161.1 GB, 161061273600 bytes, 314572800 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: gpt # Start End Size Type Name 1 2048 1953791 953M Microsoft basic p 2 1953792 4050943 1G Linux filesyste Command (m for help): n #新建分区 Partition number (3-128, default 3): #使用默认 First sector (34-314572766, default 4050944): #使用默认 Last sector, +sectors or +size{K,M,G,T,P} (4050944-314572766, default 314572766): +2G #增加2G大小的分区 Created partition 3 Command (m for help): p #查看分区是否成功 Disk /dev/sdb: 161.1 GB, 161061273600 bytes, 314572800 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: gpt # Start End Size Type Name 1 2048 1953791 953M Microsoft basic p 2 1953792 4050943 1G Linux filesyste 3 4050944 8245247 2G Linux filesyste Command (m for help): w #保存当前分区表 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@centos7 ~]# lsblk /dev/sdb #查看分区,新增2G分区成功 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 150G 0 disk ├─sdb1 8:17 0 953M 0 part ├─sdb2 8:18 0 1G 0 part └─sdb3 8:19 0 2G 0 part #需要注意的是,fdisk和gdisk新增系统引导磁盘内的分区时,该分区不会自动写入内存 #centos5和7里使用partprobe /dev/sdX,centos6则使用partx -a /dev/sda保存新增,partx -d --nr nmuber\|range /dev/sdX保存删除
2G分区保存成功,耶。好的,一鼓作气攻城略地,拿下这山头今晚吃鸡。
2.格式化文件系统
分区完了,不代表我们就能使用他了。咳咳,忽略为什么是他不是它的问题。
电脑也是这样子。买了主机不代表就能使用了,我们需要操作系统。而文件系统,则需要格式化。(就像是卷福需要华生)
格式化文件系统的方式虽说有mkfs与mkfs.的区分,实际调用的则是同一命令常用的是mkfs。
格式化前我们使用blkid查询文件系统信息,发现我们新增的分区比起其他文件系统少了点什么。
[root@centos7 ~]# blkid /dev/sda1: UUID="e45a1265-9826-442b-9ce6-5f44440e8d0e" TYPE="xfs" /dev/sda2: UUID="2fe39e58-8f02-49bf-b4b3-a59c56dd3907" TYPE="xfs" /dev/sda3: UUID="a86604e8-9d34-4c3f-b3b3-fb3f3b72e356" TYPE="xfs" /dev/sda5: UUID="f1eb3668-9539-4d4f-bae1-79f94029a101" TYPE="swap" /dev/sda6: UUID="d629014c-23c3-43e0-b6b9-7c545b4f59f4" TYPE="ext4" /dev/sdb1: UUID="68c661e2-7f3d-4ec9-b3f4-380f9490af38" TYPE="ext4" PARTLABEL="p" PARTUUID="5506b37b-5bfb-4ee2-9b18-386c9cc65e4f" /dev/sr0: UUID="2016-12-05-13-52-39-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/sdb2: PARTUUID="f68ec926-e324-4bf7-bbcc-927ec8aa43b2" /dev/sdb3: PARTUUID="8c8d30d2-6209-4182-9e1d-0beabe8f0e60"#没有TYPE项
CentOS7之前的红帽主流文件系统是extX系列,所有也有对应的ext文件格式化专用工具mke2fs。总结如下:
格式化/dev/sdb3分区的文件系统为ext4:mkfs.ext4 /dev/sdb3=mkfs -t ext4 /dev/sdb3=mke2fs -t ext4 /dev/sdb3
格式化文件系统为ext3:mkfs -t ext3 /dev/sdb3=mkfs.ext3 /dev/sdb3=mke2fs -t ext3 /dev/sdb3=mke2fs -j /dev/sdb3
格式化文件系统为ext2:mkfs -t ext2 /dev/sdb3=mkfs.ext2 /dev/sdb3=mke2fs /dev/sdb3
格式化文件系统为xfs:mkfs -t xfs -f /dev/sdb3=mkfs.xfs /dev/sdb3(centos6里需安装对应软件包,centos5及之前系统不支持)
其余格式参见man mkfs。另外mke2fs一言难尽,索性就不说了。
在我们的题目里,我们接下来只要执行mkfs.ext4 /dev/sdb3就可以了。dei哞西卡西,我盟的mkfs还要更强大。比如mkfs.ext4 -L TEST /dev/sdb3,格式化的时候顺便指定个卷标啦。
众人:嗯?没了? 阿拉恭敬的弯腰行礼:没了。 众人:啊,是很强大……
3.修改文件系统信息
嘿,上面的那个记得完了再用blkid查询一下用没有成功啊……
在学习acl特殊权限位的设定是,我们会用到tune2fs -l /dev/sdX |grep acl来查询某文件系统是否开启了acl权限。(众人:那个跟这个有什么关系?? 阿拉傲娇脸:就是有关系,没有我扯他干嘛! 众人:哦那你继续。但我不认为没关系的你不扯。 阿拉:)
tune2fs -l /dev/sdb3可以查询到很多文件系统相关的信息。但有时也会出现这样的情况。(阿拉去吃饭没关ssh,ssh自动断电了)
[root@centos7 ~]# tune2fs -l /dev/sdb3 tune2fs 1.42.9 (28-Dec-2013) tune2fs: Bad magic number in super-block while trying to open /dev/sdb3 Couldn't find valid filesystem superblock.
这个要详细说就扯太远了。(众人:算了,你随意吧,你开心就好,你爱扯多远扯多远吧。)
众人:咳咳,该干啥干啥,别发奇怪的表情。
得勒。上面有提到super-block,即超级块。嗯,超级块嘛,嗯,详情见http://book.2cto.com/201312/38223.html,如果还不懂,再看看这个http://www.cnblogs.com/bangerlee/archive/2012/03/31/2426069.html,如果再看不懂,那就自己查资料去。
众人:说好的要脸呢?
阿拉:啊,你刚说啥?我听不到。
super-block,里面有文件系统的详细信息。因为断电、死机等非正常关机情况,会使超级块受到破坏。超级块坏掉后就不能挂载,不能挂载当然就不能访问,不能访问自然就用不了,磁盘或分区没法用,数据拷不出开。
运维,自然就是为解决这类问题而生的。
因为超级块在文件系统中是有备份的。总之我们是可以进行修复的。
虽然挂载是我们之后要说的,这里还是要提一下。修复应该在非挂载状态下进行。CentOS6与CentOS7里不卸载是不允许修复的,但在CentOS5里却没有这个提示。然而我们不卸载的状态下修复的话,整个文件系统就坏掉了。随便说一下,RHCE的考试里有这道题哦。
然后是修复。
fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
-p: 自动修复错误
-r: 交互式修复错误
FS_TYPE一定要与分区上已经文件类型相同
e2fsck:ext系列文件专用的检测修复工具
-y:自动回答为yes
-f:强制修复
哦,对了。没修复之前用blkid查看的话/dev/sdb3下是这个样子滴。
/dev/sdb3: PARTUUID="8c8d30d2-6209-4182-9e1d-0beabe8f0e60"
但你要是直接格式化的话,里面的数据可就听天由命了。空磁盘当然无所畏惧。如果你不确定里面有没有数据的话,当然是先修复了看一下靠谱。
这里我们的/dev/sdb3是ext4的文件系统。所以我们这样来。
[root@centos7 ~]# fsck /dev/sdb3 fsck from util-linux 2.23.2 e2fsck 1.42.9 (28-Dec-2013) ext2fs_open2: Bad magic number in super-block fsck.ext2: Superblock invalid, trying backup blocks... /dev/sdb3 was not cleanly unmounted, check forced. 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 /dev/sdb3: ***** FILE SYSTEM WAS MODIFIED ***** /dev/sdb3: 11/131072 files (0.0% non-contiguous), 26156/524288 blocks [root@centos7 ~]# blkid /dev/sda1: UUID="e45a1265-9826-442b-9ce6-5f44440e8d0e" TYPE="xfs" /dev/sda2: UUID="2fe39e58-8f02-49bf-b4b3-a59c56dd3907" TYPE="xfs" /dev/sda3: UUID="a86604e8-9d34-4c3f-b3b3-fb3f3b72e356" TYPE="xfs" /dev/sda5: UUID="f1eb3668-9539-4d4f-bae1-79f94029a101" TYPE="swap" /dev/sda6: UUID="d629014c-23c3-43e0-b6b9-7c545b4f59f4" TYPE="ext4" /dev/sdb1: UUID="68c661e2-7f3d-4ec9-b3f4-380f9490af38" TYPE="ext4" PARTLABEL="p" PARTUUID="5506b37b-5bfb-4ee2-9b18-386c9cc65e4f" /dev/sr0: UUID="2016-12-05-13-52-39-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/sdb2: UUID="9bd0fea2-0ef0-415d-9a54-d7c4d9deccf4" TYPE="ext4" PARTUUID="f68ec926-e324-4bf7-bbcc-927ec8aa43b2" /dev/sdb3: UUID="cdf26127-fee3-4d5a-9066-f077fd36b6d8" TYPE="ext4" PARTUUID="8c8d30d2-6209-4182-9e1d-0beabe8f0e60"
这样就修复好了。这个尴尬的是,我们的/dev/sdb3就是新建的分区,新格式化的空磁盘。一点数据都没有修复起来也没价值可言。
得,找个其他磁盘试试吧。
因为断电,阿拉的这块磁盘也不行了。
[root@centos7 ~]# tune2fs -l /dev/sda3 tune2fs 1.42.9 (28-Dec-2013) tune2fs: Bad magic number in super-block while trying to open /dev/sda3 Couldn't find valid filesystem superblock.
因为重新连接后就一直挂载中,所以这磁盘还能正常使用。毕竟虚拟机没断电,所以ssh联通后这磁盘还是正常挂起来了。但是阿拉任性啊,阿拉非要看到他的超级块信息。或者说如果虚拟机也断电了,有块磁盘就是挂载不上了呢?
这里当然要先卸载。另外注意,这块磁盘是xfs格式的。
[root@centos7 ~]# umount /dev/sda3
0.0刚去xfs_repair /dev/sda3了一下,然后tune2fs -l /dev/sda3结果还是一样一样的。
一个小时后反应过来,噢,tune2fs是ext文件系统专用啊。
查看xfs超级块信息左转xfs_admin -f {device}。
被自己气乐了。
默默的把/dev/sda3挂上。
得。继续看题。
创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项 |
块大小即block。以及1%可用空间。
mke2fs在格式化文件系统时的功能有很多。但除了block的大小外,其他信息都可以后期修改。
结果还是要用到mke2fs啊,居然把mke2fs寥寥数语带过的阿拉真是。。给大家造成了麻烦真是抱歉。
那就列个表给各位大爷。
mke2fs(仅格式化时指定,不指定则按默认值) | tune2fs(格式化后可随时更改) |
-t {ext2|ext3|ext4}:设置文件系统格式 -b {1024|2048|4096}:设置block大小 |
-l:查看指定文件系统超级块信息super block |
-L 'LABEL':指定卷标 | -L 'LABEL':修改卷标 |
-m #: 默认5%,为管理人员预留空间占总空间的百分比 | -m #:修预留给管理员的空间百分比 |
-j: 相当于 -t ext3 | -j: 将ext2升级为ext3 |
-O FEATURE[,...]:启用指定特性 可指定特性为下面示例中Filesystem features行所列出的选项 |
-O: 文件系统属性启用或禁用 –O ^has_journal |
-O ^FEATURE:关闭指定特性 | -o: 调整文件系统的默认挂载选项 –o ^acl -U UUID: 修改UUID号 |
-i #: 为数据空间中每多少个字节创建一个inode;此大 小不应该小于block的大小 -N #:指定分区中创建多少个inode -I 一个inode记录占用的磁盘空间大小,范围为128---4096 |
除此之外还有:
dumpe2fs: 块分组管理
-h:查看超级块信息,不显示分组信息
blkid:块设备属性信息查看
blkid [OPTION]... [DEVICE]
-U UUID: 根据指定的UUID来查找对应的设备
-L LABEL:根据指定的LABEL来查找对应的设备
e2label:管理ext系列文件系统的LABEL
e2label DEVICE [LABEL]
findfs :查找分区
findfs [options] LABEL=
findfs [options] UUID=
我们的题目就可以这样做:
[root@centos7 ~]# mke2fs -b 2048 -m 1 -L TEST -t ext4 /dev/sdb3 #连同文件系统格式化同步执行 mke2fs 1.42.9 (28-Dec-2013) Filesystem label=TEST OS type: Linux Block size=2048 (log=1) Fragment size=2048 (log=1) Stride=0 blocks, Stripe width=0 blocks 131072 inodes, 1048576 blocks 10485 blocks (1.00%) reserved for the super user First data block=0 Maximum filesystem blocks=269484032 64 block groups 16384 blocks per group, 16384 fragments per group 2048 inodes per group Superblock backups stored on blocks: 16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done [root@centos7 ~]# tune2fs -l /dev/sdb3 #查看超级块信息 tune2fs 1.42.9 (28-Dec-2013) Filesystem volume name: TEST #LABEL Last mounted on:Filesystem UUID: bbc06076-3025-4589-857e-a8e64a5fc9f2 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 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: 131072 Block count: 1048576 Reserved block count: 10485 Free blocks: 994651 Free inodes: 131061 First block: 0 Block size: 2048 #指定成功 Fragment size: 2048 Group descriptor size: 64 Reserved GDT blocks: 512 Blocks per group: 16384 Fragments per group: 16384 Inodes per group: 2048 Inode blocks per group: 256 Flex block group size: 16 Filesystem created: Sat Aug 19 19:55:36 2017 Last mount time: n/a Last write time: Sat Aug 19 19:55:37 2017 Mount count: 0 Maximum mount count: -1 #为-m所制定的值 Last checked: Sat Aug 19 19:55:36 2017 Check interval: 0 ( ) Lifetime writes: 65 MB Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 28 Desired extra isize: 28 Journal inode: 8 Default directory hash: half_md4 Directory Hash Seed: 7876e37e-5dca-4797-9566-0cc4d7ee6ea9 Journal backup: inode blocks
耶。大部分的工作都完成了耶。tune2fs的功能类似,你们辣么聪明,一定一看就知道了。(各位大爷:我呸,还用你说)
4.挂载与自动挂载
好的好的。是阿拉多嘴。
恕阿拉还要balabala一阵。
接下来的mount我们都见过他。光盘镜像挂载的时候还经常用来着呢。mount /dev/sr0 /media,这样就把镜像挂载到/media下了。
有个问题不知各位大侠发现了没。每次挂载完再开机df一下,就成了这样。
[root@centos7 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 48803552 5018104 43785448 11% / devtmpfs 1001404 0 1001404 0% /dev tmpfs 1016076 84 1015992 1% /dev/shm tmpfs 1016076 9184 1006892 1% /run tmpfs 1016076 0 1016076 0% /sys/fs/cgroup /dev/sda1 972452 156004 816448 17% /boot tmpfs 203216 16 203200 1% /run/user/42 tmpfs 203216 0 203216 0% /run/user/0 /dev/sda3 48803552 1896576 46906976 4% /app
别的暂且不论,我的镜像怎么又不见了。我的这一行呢??
/dev/sr0 8086368 8086368 0 100% /media
ls查一下现有的磁盘,发现是这样。
[root@centos7 ~]# ls /dev/sd* /dev/sda /dev/sda3 /dev/sda6 /dev/sdb1 /dev/sdc /dev/sdc3 /dev/sda1 /dev/sda4 /dev/sda7 /dev/sdb2 /dev/sdc1 /dev/sdc4 /dev/sda2 /dev/sda5 /dev/sdb /dev/sdb3 /dev/sdc2 /dev/sdc5
lsblk查看磁盘分区,blkid查看文件系统。
[root@centos7 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 953M 0 part /boot ├─sda2 8:2 0 46.6G 0 part / ├─sda3 8:3 0 46.6G 0 part /app ├─sda4 8:4 0 512B 0 part ├─sda5 8:5 0 3.7G 0 part [SWAP] ├─sda6 8:6 0 1G 0 part └─sda7 8:7 0 10.3G 0 part sdb 8:16 0 150G 0 disk ├─sdb1 8:17 0 953M 0 part ├─sdb2 8:18 0 1G 0 part └─sdb3 8:19 0 2G 0 part sdc 8:32 0 100G 0 disk ├─sdc1 8:33 0 1G 0 part ├─sdc2 8:34 0 5G 0 part ├─sdc3 8:35 0 1K 0 part ├─sdc4 8:36 0 4G 0 part └─sdc5 8:37 0 90G 0 part sr0 11:0 1 7.7G 0 rom /media [root@centos7 ~]# blkid /dev/sda1: UUID="e45a1265-9826-442b-9ce6-5f44440e8d0e" TYPE="xfs" /dev/sda2: UUID="2fe39e58-8f02-49bf-b4b3-a59c56dd3907" TYPE="xfs" /dev/sda3: UUID="a86604e8-9d34-4c3f-b3b3-fb3f3b72e356" TYPE="xfs" /dev/sda5: UUID="f1eb3668-9539-4d4f-bae1-79f94029a101" TYPE="swap" /dev/sda6: UUID="d629014c-23c3-43e0-b6b9-7c545b4f59f4" TYPE="ext4" /dev/sdb1: UUID="68c661e2-7f3d-4ec9-b3f4-380f9490af38" TYPE="ext4" PARTLABEL="p" PARTUUID="5506b37b-5bfb-4ee2-9b18-386c9cc65e4f" /dev/sr0: UUID="2016-12-05-13-52-39-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/sdb2: UUID="9bd0fea2-0ef0-415d-9a54-d7c4d9deccf4" TYPE="ext4" PARTUUID="f68ec926-e324-4bf7-bbcc-927ec8aa43b2" /dev/sdb3: LABEL="TEST" UUID="bbc06076-3025-4589-857e-a8e64a5fc9f2" TYPE="ext4" PARTUUID="8c8d30d2-6209-4182-9e1d-0beabe8f0e60"
几个命令的结果砸下来,是不是一脸懵逼呢?
你们肯定要说明明一个mount的事,给整这么个复杂。
当然,你们要心里跟明镜似的,阿拉就不用絮叨这么多了。就是因为不清楚所以才学习的呀。
计算机就是,你不懂他的时候仰慕他的神秘,你懂他了惊叹他的巧妙,你和他在一起了才知道他的能力。
电生磁磁生电线圈正负极电磁共振交流电并联串联逻辑与非或,这一切进展太快,留下名字的人太多,数学物理逻辑撑起了计算机的世界。
呃,怎么就扯到计算机科学了。咳咳,阿拉并没有装13,阿拉只是情不自禁兴头所致。再不说正题今晚博客就写不完了。
monut的挂载不能说是临时挂载,因为每次关机系统都会把内存内的信息写入磁盘,然后把磁盘全部卸载以保存数据。装系统的时候分区的信息被写入到一个文件里,写在这个文件里的磁盘会在每次电脑开机的时候自动挂载。这个文件是/etc/fstab。
[root@centos7 ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Tue Jul 11 20:07:17 2017 # # 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=2fe39e58-8f02-49bf-b4b3-a59c56dd3907 / xfs defaults 0 0 UUID=a86604e8-9d34-4c3f-b3b3-fb3f3b72e356 /app xfs defaults 0 0 UUID=e45a1265-9826-442b-9ce6-5f44440e8d0e /boot xfs defaults 0 0 UUID=f1eb3668-9539-4d4f-bae1-79f94029a101 swap swap defaults 0 0
咋一看和blkid列出的内容有些相似。然而/etc/fstab里却只有装系统时的分区信息。
我们要想一个磁盘也能开机挂载,只要把其信息写入此文件即可。残念,这个文件,只能我们手动写入。并没有useradd那种能写入到/etc/passwd里的命令呢。
通过blkid命令我们可以得到/dev/sdb3的UUID。
啊,你不会要问我什么是UUID吧。
哎呀,真是拿你们没办法啊。
UUID,是类似于×××号的东西啦。×××号由出生地出生日期等决定,光×××号就能知道整个人的几乎全部信息。UUID由时间日期时钟序列等决定,是磁盘的唯一编号。当磁盘更改label,也就是改名字的时候,UUID还能够识别磁盘。嘛,虽然UUID也可以重设。这大概类似于某些人有两个×××号一样。别不服气了,就是有这种啊。在家入户口,后来又到外地了再入户口之类的。
UUID就没这么好运了,你可以随意指定。UUID简直就像私人女仆一样随便主人调教呢。。。
建一个/test目录,追加/dev/sdb3的相关信息到/etc/fstab,mount -a挂载/etc/fstab里没有挂载的磁盘。df查看,/dev/sdb3果然挂载上了。不服的重启测试去。
[root@centos7 ~]# mkdir /test #centos里文件系统默认开启acl,centos6里新挂载分区需手动指定acl权限 [root@centos7 ~]# echo 'UUID=bbc06076-3025-4589-857e-a8e64a5fc9f2 /test ext4 defaults,acl 0 0' >> /etc/fstab [root@centos7 ~]# mount -a [root@centos7 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 48803552 5018132 43785420 11% / devtmpfs 1001404 0 1001404 0% /dev tmpfs 1016076 84 1015992 1% /dev/shm tmpfs 1016076 9184 1006892 1% /run tmpfs 1016076 0 1016076 0% /sys/fs/cgroup /dev/sda1 972452 156004 816448 17% /boot tmpfs 203216 16 203200 1% /run/user/42 tmpfs 203216 0 203216 0% /run/user/0 /dev/sda3 48803552 1896576 46906976 4% /app /dev/sr0 8086368 8086368 0 100% /media /dev/sdb3 1998538 9236 1960140 1% /test
mount命令说起来还挺复杂的。偷偷把我们辣个超帅萌的老师的总结贴在下面。那个-o,和tune2fs、mke2fs用法差不多了。
mount 设备名 挂载点
-t 指定文件系统类型
-r 只读挂载
--remount,ro|rw 也会新/etc/fstab中的选项,如果与指定的冲突,则remount后指定的优先。
-n 隐藏挂载信息不显示,但在/proc/mounts可以查到
-a 读取/etc/fstab,挂载其中没有挂载的设备
-L 'LABEL': 以卷标指定挂载设备
-U 'UUID': 以UUID指定要挂载的设备
-B --bind 目录挂目录
-o 选项
sync,async 同步,异步(defaults)
atime(defaults),noatime 是否在读访问时更新atime
diratime(defaults),nodiratime
auto(defaults)/noauto 写在/etc/fstab当中的分区,是否在mount -a时被挂载
exec(defatuls)/noexec 在该分区所挂载的目录中的脚本是否可以执行。
dev(defaults)/nodev:是否支持在此文件系统上使用设备文件
suid(defaults)/nosuid:不否支持suid和sgid权限
remount:重新挂载
ro:只读
rw:读写(defaults)
user/nouser(defaults):是否允许普通用户挂载此设备,默认管理员才能挂载
acl:启用此文件系统上的acl功能
defaults 默认,见以上中的(defaults)
就是资源被占用,无法卸载的情况了。当然可以广播通知占用磁盘的家伙赶紧下来。但那有时可不轻松。好的,能帮到你的相关卸载命令如下:
查看挂载情况:
findmnt MOUNT_POINT|device
查看正在访问指定文件系统的进程:
lsof MOUNT_POINT
fuser -v MOUNT_POINT
终止所有在正访问指定的文件系统的进程:
fuser -km MOUNT_POINT
卸载:
umount DEVICE
umount MOUNT_POINT
那么这个问题就完成了。怎么样,有信心把这个写成脚本吗?