您的位置:首页 > 运维架构 > Linux

Linux磁盘管理

2016-01-22 21:07 459 查看
1.查看磁盘或者目录的容量
df 【-ihkm】:查看以挂载磁盘(分区)的总容量、使用容量、剩余容量等,默认以 KB 为单位显示
选项
-i :查看 inodes 的使用状况
-h :表示使用合适的单位显示,系统自动调节单位
-k,-m:分别表示以K、M 为但闻显示
du【-abckmsh】【文件或目录名】:查看某个目录或者文件所占空间的大小
选项:
-a:把全部文件和目录的大小都列出来,如果不加任何选项,则只会列出目录(包含子目录)的大小
-b、-k、-m、-h:分别表示以byte、kb、mb、合适的单位显示
-c:在最后加总(使用状况)
-s:只列出总和

2.磁盘的分区和格式化
1.增加虚拟硬盘---设置里面扩展
2.fdisk 【-l】:选项 -l 加上就是显示系统中所有磁盘设备以及分区表,不加就会进入另外一个模式(可以对磁盘进行分区操作)
另一个模式下:
①p:打印当前磁盘的分区状况
②n:新建一个新的分区
a.选择e: extended(扩展分区) 或者 p:primary(主分区)
选择扩展分区时,把全部剩余磁盘空间全部划分给扩展分区,不然就会造成空间浪费。因为创建完扩展分区后,再划分新的分区时是在已经划分的扩展分区里来分的
选择主分区时,柱面last cylinder,一般写成+1000M,方便且不会出错。+n M 就是为这个分区划分多少MB的空间
b.当之前选择过扩展分区时,再创建的分区时,会选择 logical(逻辑分区:是从扩展分区里面分) 或者 primary分区。1-4 位主分区和扩展分区,5以上为逻辑分区。在Linux系统中最多只能创建4个主分区,一个扩展分区
③w:保存
④q:退出
⑤d:删除一个分区

3.格式化磁盘分区
磁盘分区分好过后,暂时不能用,必须对每个分区进行格式化,所谓格式化,就是安装文件系统。Windows下的文件系统有Fat32和 NTFS,centOS 为ext
mke2fs 、mkfs.ext4【选项】【分区】:
选项:①-b:设定每个数据区块占用的空间大小。每个数据块支持 1024,2048,4096 bytes。磁盘在被格式化的时候回预先规定好每一个块的大小,然后再把所有的空间分割成一个一个的小块。存数据的时候也是一个块一个块的写入
②-i:设定inode的大小
③-N:设定inode的数量。有事使用默认的inode数不够用,所以要自定义inode的数量
④-c:表示在格式化前检测一下磁盘是否有问题。加上这个选项运行速度会非常慢
-L:预设该分区的标签
⑥-j:表示建立ext3 格式的分区
-t:用来指定文件系统的类型,ext2、ext3、ext4
mkfs.ext4 /a/b = mke2fs -t ext4

e2label:用于查看或修改分区的标签
可重新格式化

4.挂载/卸载磁盘
格式化后的磁盘其实是一个块设备文件,类型为b。挂载某个分区前需要先建立一个挂载点,这个挂载点时以目录的形式出现的。一旦把某一个分区挂载到了这个挂载点(目录)下,要再往这个目录写数据时,就都会写到该分区中。所以,在挂载该分区前,挂载点(目录)下必须是个空目录。如果该目录不是空目录,但一旦挂载上了,该目录下以前的东西就看不见了,除非卸载该分区
mount:查看当前系统已经挂载的所有分区、分区文件系统类型、挂载点及一些选项。
mount 【分区】【目录a/】:把分区挂载到a目录下
mount LABEL=TEST 目录:通过LABEL的方式挂载分区
mount的选项:
①-a:会把/etc/fstab中出现的所有磁盘分区挂载上,可以通过修改/etc/fstab配置文件,可以在结尾添加类似如 LABLE=TEST /newdir ext4 defaults 0 0
②-t:用来指定挂载的分区类型,默认不指定会自动识别
③-o:用来指定挂载分区有哪些特征,为下面第四列下的参数
可以重新挂载,先卸载再挂载

/etc/fatab 配置文件





第一列:分区的标识,可以写分区的LABLE、分区的UUID、分区名 /dev/sda1
第二列是挂载点
第三列是分区的格式
第四列是mount的一些挂载参数,一般情况下,直接写defaults即可
①async/async: async表示与磁盘和内存不同步,系统每隔一段时间会把内存数据写入磁盘中,而 sync 则会时时同步内存和磁盘中的数据
②auto/noauto:表示开机自动挂载/不挂载
③defualt:表示按照大多数永久文件系统的默认值设置挂载定义,包括了rw、suid、dev、exec、auto、nouser、async
④ro:按只读权限挂载
⑤rw:表示按可读可写权限挂载
⑥exec/noexec:表示允许/不允许可执行文件执行,但千万不要把根分区挂载为noexec,否则将无法使用系统,甚至连mount命令都无法使用,这是只有重新做系统
⑦user/nouser:表示允许/不允许分区root以外的其他用户挂载分区,为了安全用nouser
⑧suid/nosuid:表示允许/不允许分区有suid属性,一般设置nosuid
⑨usrquota:表示启动用户的磁盘配额模式。磁盘配额会针对用户限定他们使用的磁盘额度
10 grquota:表示启动群组的磁盘配额模式
第五列的数字表示是否被dump备份。1表示备份,0表示不备份
第六列的数字表示开机时是否自检磁盘,1和2 都表示检测,0表示不检测。在RedHat/CentOS中,/分区这一列必须设为1,而且整个fstab中只允许出现一个1.自检时,1比2优先级高,所以先检测1,然后检测2.如果有多个分区需要开机检测,就都设置成2,1检测完后会同时检测2
挂载是为了往一个目录写数据时可以写进对应的分区中

blkid:获取各个分区的UUID.其后可以跟指定的分区,表示查询指定分区的的UUID.
挂载磁盘是通过/dev/hdb1这样的分区名字来挂载的,如果把磁盘插错插槽,且该分区先前已加入到/etc/fstab 中,系统启动后则会挂错分区,如何避免?
mount UUID = “......” /目录
UUID支持写入到/etc/fstabl中
如何让某个分区在开机后自动挂载?
①在/etc/fstabl 中添加上面一行
②把挂载命令写到/etc/rc.d/rc/local 文件中去,系统启动后会执行这个文件命令,可以把开机启动的命令全写入到这个文件中
建议:挂载磁盘分区时,尽量使用UUID 或者 LABLE 这两种方法

umount:其后可以跟挂载点,也可以跟分区名,但是不可以跟 LABLE 和 UUID。当卸载的时候,提示device is busy 时,可以使用 -l 选项

5.建立一个swap文件增加虚拟内存
当遇到虚拟内存不够用的情况,就必须增加一个虚拟磁盘,因为不可能重新给磁盘分区
增加虚拟磁盘的基本思路:建立swapfile -- 格式化为swap格式 --- 启用该虚拟磁盘
①建立一个swapfile : dd if=/dev/zer0 of=/tmp/newdisk bs=4k count=102400 if 指定源(一般写成/dev/zero,它是Unix系统一个特有的文件,可以源源不断的提供0);of指定目标文件,bs 定义块的大小,count定义块的数量。bs 和 count的大小决定的目标文件的大小,即大小文 bs * count
②格式化为 swap 格式: mkswap -f 目标文件/tmp/newdisk
挂载使用:swapon 目标文件
free -m :查看内存的使用情况,-m表示以MB 为单位

问题
1. 为什么 du -b /etc/passwd 和 du -k /etc/passwd 所得到的结果不一致呢?按道理讲1024b 等于 1k 阿铭的 /etc/passwd 为 1181b 而 使用k为单位表示它竟然是 4k?
因为默认格式化磁盘的块大小是4096字节即4K,即使是一个很小的文件也会分得一个块大小为4k。du -b则会以文件大小的b单位来统计,所以结果不一致。

2. /dev/zero 和 /dev/null 在linux系统中是什么文件,有什么作用?
/dev/zero 是一个造零器,它可以源源不断的提供0,它可以用于向设备或文件写入字符串0,可以用它来创建一个指定长度用于初始化的空文件,比如临时交换文件等。
/dev/null 它是空设备,也称为位桶(bit bucket),任何写入它的输出都会被抛弃。常用来禁止标准输出和标准错误的输出。如果不想让消息以标准输出显示或写入文件,那么可以将消息

3.有什么方法可以查看某个分区格式化时指定的块大小为多少(1024,2048,4096)?
有两种方法:
第一个是个笨方法,touch 1; echo 1 > 1; du -sh 1 看看1的大小事几k,是1k块大小就是1024,2k块大小就是2048,4k块大小就是4096
第二个方法是,tune2fs -l /dev/sda1 |grep 'Block size'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: