2015-03-17 15:18:28 blossom_v 阅读数 559
  • Linux系统编程

    Linux系统编程这门课的重点是:进程,线程,网络。 传统的学习方法是在讲这三个知识点之前,有很长篇幅的铺垫,这导致了很多初学者还没有学到“进程”就没了兴趣,半途而废了。 所以,本课程,进行了重新编排,突出“进程”“线程”“网络”,一开始就讲进程,在讲进程的过程中展开其他需要的知识点,而且是恰到好处的展开,不会冗长,不会“喧宾夺主”。

    819 人正在学习 去看看 程光淼

----- 环境:centos6.2 kvm虚拟机

 

----- 情况:磁盘上有一分区/dev/sda5太大,希望分解成多个分区,此分区挂载在/www目录下

 

----- 开始操作:

 

#---- 卸下分区

cd /home/

umount /dev/sda5

# 如果 umount 出现 device is busy:fuser -m /dev/sda5,查看读写磁盘的pid,找出来kill之

kill方法:

执行umount 命令的时候出现 device is busy ,有人在使用这块磁盘

umount /dev/sde1
umount: /u01/app/oracle: device is busy
umount: /u01/app/oracle: device is busy

使用fuser 命令查看哪个进程在使用
[root@localhost ~]# fuser -m /u01/app/oracle/
/u01/app/oracle/:     2636c  2694c
[root@localhost ~]# ps aux | grep 2636
root      2636  0.0  0.2   4532  1464 pts/1    S    09:56   0:00 bash
root      2776  0.0  0.1   3916   696 pts/1    R+   10:18   0:00 grep 2636
kill -9 干掉进程
[root@localhost ~]# kill -9 2636
[root@localhost ~]# umount /dev/sde1


 

#---- 目标:使用 fdisk /dev/sda 删除/dev/sda5,新建 15G的sda5 和 10G的sda6/7/8。以下为大致记录,删掉了一些废话

 

[root@FDFS-2 home]# fdisk /dev/sda

 

... 磁盘信息,忽略

 

Command (m for help): p     # 查看当前分区表。更多信息:m for help

 

Disk /dev/sda: 62.9 GB, 62914560000 bytes...

 

  Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      102400   83  Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2              13        1319    10485760   83  Linux

/dev/sda3            1319        1449     1048576   82  Linux swap / Solaris

/dev/sda4            1449        7649    49802240    5  Extended

/dev/sda5            1449        7649    49801216   83  Linux

 

Command (m for help): d     # 删除动作

Partition number (1-5): 5   # 选择分区号/dev/sda5就是5

 

Command (m for help): n     # 新建分区

First cylinder (1449-7649, default 1449):   # 从默认磁盘扇区开始即可

Using default value 1449

Last cylinder, +cylinders or +size{K,M,G} (1449-7649, default 7649): +15G   # 懒得计算扇区,可以照提示使用“+容量”的办法

 

... 多次新建动作,忽略

 

Command (m for help): p     # 再次查看分区表

 

...

 

  Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      102400   83  Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2              13        1319    10485760   83  Linux

/dev/sda3            1319        1449     1048576   82  Linux swap / Solaris

/dev/sda4            1449        7649    49802240    5  Extended

/dev/sda5            1449        3407    15728936   83  Linux

/dev/sda6            3408        4713    10490413+  83  Linux

/dev/sda7            4714        6019    10490413+  83  Linux

/dev/sda8            6020        7325    10490413+  83  Linux

 

Command (m for help): w     # 写入到磁盘中,谨慎操作!

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

 

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

The kernel still uses the old table. The new table will be used at

the next reboot or after you run partprobe(8) or kpartx(8)

Syncing disks.

 

# 看到上面的error提示不要慌张,回到shell后运行fdisk可以查看到重新分区已经顺利进行。

[root@FDFS-2 home]# fdisk -l

 

  Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      102400   83  Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2              13        1319    10485760   83  Linux

/dev/sda3            1319        1449     1048576   82  Linux swap / Solaris

/dev/sda4            1449        7649    49802240    5  Extended

/dev/sda5            1449        3407    15728936   83  Linux

/dev/sda6            3408        4713    10490413+  83  Linux

/dev/sda7            4714        6019    10490413+  83  Linux

/dev/sda8            6020        7325    10490413+  83  Linux

 

#---- 这时已经回到shell并且通过上面的命令已经查看到最新的分区的了,但是分区已经直接可用?

shell> mkfs -t ext4 /dev/sda6

   提示错误:

   Could not stat /dev/sda6 --- No such file or directory

   The device apparently does not exist; did you specify it correctly?

错误原因为新的分区表不被系统识别,一种说法为可以通过partprobe命令解决,但是

shell> partprobe

   后提示:

   Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.

看来还是无法读取,需要reboot

 

#---- 重点来了,请重启前先确认你原来使用的分区不在/etc/fstab中!

我原来的/etc/fstab中有这么一行:

   UUID=000120ad-6480-40ba-9a64-3d5c27d1ff96 /www                    ext4    defaults        1 2

但/www目录对应的设备/dev/sda5已经被删除了,如果/etc/fstab中还存在着旧信息,开机会提示您:

   fsck.ext4: unable to resolve 'uuid=000120ad--6480-40ba-9a64-3d5c27d1ff96'......然后无法进入系统啥的

但根据提示输入root帐号,我们可以进入到"repair filesystem"界面。这时已经发现了问题,准备编辑/etc/fstab系统已经read only filesystem了,重mount之

   mount -o remount rw /

   vi /etc/fstab   # 删除掉上面的无用记录:“UID=000120ad-6480-40ba-9a64-3d5c27d1ff96 /www                    ext4    defaults        1 2”

   reboot

 

#---- 下一台同类机器,可以这么做

更新完分区表后

   sed -i '/\/www/'d /etc/fstab    # 删除掉fstab中原来的配置信息

   reboot

# 重启后,格式化新分区,mount上就可以用了

for((i=5;i<=8;i++));do mkfs -t ext4 /dev/sda$i;done

mkdir /fdfs_tracker

for((i=1;i<=3;i++));do mkdir /fdfs_storage_${i};done

mount -t ext4 /dev/sda5 /fdfs_tracker

mount -t ext4 /dev/sda6 /fdfs_storage_1

mount -t ext4 /dev/sda7 /fdfs_storage_2

mount -t ext4 /dev/sda8 /fdfs_storage_3

 

#---- 新分区信息没有写入在/etc/fstab中,如何开机自动加载

1. 有看见过将mount命令写在/etc/rc.local中的。但目录如果被应用所引用,最好确保在应用启动前mount上

2. 写入信息到/etc/fstab中

   文件格式:<file system> <mount point> <type> <options> <dump> <pass>

       <file system> = device # 要挂载的设备名称

       <mount point> = directory  # 要挂载到的目录名称

       <type> = fs type    # 文件类型:ext*等,是什么类型就挂什么类型

       <options> = 设置选项   # 挂载参数,default即可,更多知识在man mount

       <dump> = 内容备份?0为不备份1为备份。

       <pass> = 开机检查文件系统(使用fsck):0=不检查;1=优先检查;2/3/4次之检查;都为2的会同时第二批检查

   插入以下内容到/etc/fstab

       /dev/sda5 /fdfs_tracker ext4 defaults 1 2

       /dev/sda6 /fdfs_storage_1 ext4 defaults 1 2

       /dev/sda7 /fdfs_storage_2 ext4 defaults 1 2

       /dev/sda8 /fdfs_storage_3 ext4 defaults 1 2


参考文档:http://blog.csdn.net/robinson1988/article/details/5283944

http://www.it165.net/os/html/201309/6262.html

2008-10-14 14:16:47 iteye_17498 阅读数 295
  • Linux系统编程

    Linux系统编程这门课的重点是:进程,线程,网络。 传统的学习方法是在讲这三个知识点之前,有很长篇幅的铺垫,这导致了很多初学者还没有学到“进程”就没了兴趣,半途而废了。 所以,本课程,进行了重新编排,突出“进程”“线程”“网络”,一开始就讲进程,在讲进程的过程中展开其他需要的知识点,而且是恰到好处的展开,不会冗长,不会“喧宾夺主”。

    819 人正在学习 去看看 程光淼
在使用linux的过程中, 有时会出现因为安装系统时分区不当导致有的分区空间不足,而有的分区空间过剩的情况.

比如: 我在安装系统时给/usr/local分配器了5G的空间,但使用一段过程后发现, /usr/local最多只用到了1G.这样可以将
/usr/local大小调整为1G. 空出4G留作他用.

本文归纳了在不破快文件系统数据的前提下对文件系统大小进行调整的方法.这里采用的是"拆东墙, 补西墙"的方法. 当然, 如果你的
磁盘中有未分区的空闲空间, 你就不用减小某个分区的空间了. 这实际上是一个特例.

减小一个分区的大小:
[ partition ]
[ partition | free space ]

增加一个分区的大小:
[ partition a1 | partition b | free space ]
[ partition a2 | | partition a2 ]

准备工作

(一) 备份

首先组好备份要更改的分区中的文件. 对磁盘的操作也许会导致数据的丢失. 开始工作之前最好将重要的数据保存到别的分区.

(二) 获取相关信息.

1, 运行 $ df , 查看文件系统信息. 记下你想要调整的分区对应的挂载点和设备文件.
这一步是为了查看/usr/local对应/dev/中的哪个设备文件. 本文以/dev/hda7为例.

2, 运行 # sudo fdisk /dev/sda . 进入fdisk , 按下p, 查看磁盘分区信息. 记下/dev/sda8的起始柱面号, 终止柱面号. 设他们分别为start, end. 并记下一个"Unit"包含多少字节.

注意, 文件系统大小和磁盘分区大小是不能等同的: 起码他们的计量单位不同. 在文件系统中, 一般用KB, MB, GB为单位. 但在fdisk中, 是以磁盘的"unit"值(即一个柱面中包含的字节数)来计算的. 我们运行 # fdisk /dev/sda后, fdisk显示如下信息:

Disk /dev/sda: 163.9 GB, 163928604672 bytes
255 heads, 63 sectors/track, 19929 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

(三)计算终止柱面号

e.g: 原先/usr/local的大小为5000 MB, 起始柱面号为2550, 终止柱面号为3157. 那么我现在要将它的大小改为1000MB, 应该这样计算终止柱面号( [3.2] = 4 ):

终止柱面号 = 2550 + [(1000 * 1024 * 1024 ) / 8225280] = 2678

使用fdisk删除原来的分区(以前分区的数据不会丢失!). 然后新建一个分区, 新分区于旧分区唯一的区别就在于分区大小不一样, 这表现在他们终止柱面号不同.
增加分区大小: 终止柱面号设置为空闲空间的最后一个柱面号.
减小分区大小: 终止柱面号由计算得出.


开始调整
在开始调整之前, 最好拿一张纸记下要调整的分区的下列信息:
调整前大小, 调整后大小. 它挂载在哪个目录, 对应于/dev/中的哪个设备. 起始, 终止柱面.

e.g: 调整前: 5G, 调整后: 1G, 挂载点: /usr/local, 对应于/dev/hda7. 起始,终止柱面分别为2550, 3157.

1, 卸载分区
最好在runlevel = 1的情况下卸载.
# umount /dev/<partition to resize>

2, 检查文件系统的一致性
# fsck -n /dev/<partition to resize>

3, 如够是ext3系统, 还要去除日志
# tune2fs -O ^has_journal /dev/<partition to resize>

注意: 取出日志后的ext3系统是无法挂载的, 使用

# tune2fs -j /dev/<resized partition>重建日志.


4, 调整文件系统大小
# resize_reiserfs -s 1000M /dev/hda7
调整完文件系统的大小以后,再使用以下命令以文件系统进行全面的检查:
# reiserfsck --check --fix-fixable /dev/hda7

5, 进入fdisk, 调整分区大小.
# fdisk /dev/hda

由于内核仍然使用旧的分区表, 重启之后再进行后面的步骤.

通过以上步骤,我们已经完成了硬盘分区大小调整的操作,接下来回到重新调整文件系统大小的问题上来。 由于硬盘分区是按照柱面来计划的,我们要在 resize_reiserfs步骤上就一步到位调整文件系统大小与硬盘分区大小正好相等是比较困难的事情。所以一般是调硬盘分区比文件系统要大一点点,然后再通过以下命令进行同步(当然如果你不在意硬盘分区里面存在部分空间的话也可以忽略以下步骤):
# umount /home/
# resize_reiserfs /dev/hda6

这样, 就将/usr/local的大小调整为1G, 留下了4G的空闲磁盘空间.
2019-03-02 10:45:19 weixin_43916597 阅读数 196
  • Linux系统编程

    Linux系统编程这门课的重点是:进程,线程,网络。 传统的学习方法是在讲这三个知识点之前,有很长篇幅的铺垫,这导致了很多初学者还没有学到“进程”就没了兴趣,半途而废了。 所以,本课程,进行了重新编排,突出“进程”“线程”“网络”,一开始就讲进程,在讲进程的过程中展开其他需要的知识点,而且是恰到好处的展开,不会冗长,不会“喧宾夺主”。

    819 人正在学习 去看看 程光淼

关于Linux分区

由于重新装了这么多次Linux系统,所以写一下自己对于分区的获奖感言(我给了200G给它)
1:/boot 分区,也叫作Linux内核引导分区(我用自己的话来讲就是开机的时候那个界面引入那个东西)我没有弄这个分区直接剩的全给/home了
2.Swap交换分区:这个被称为虚拟内存也就是物理内存不行了就用它。(这个分区官方理论值是给物理内存的两倍不知道的可以查看一下)在这里插入图片描述
就是这个,但是阿里巴巴直接给了0M,它认为物理内存不够了在使用虚拟内存,而虚拟内存性能比较低是在物理内存上划了一块区域(一般用不到swap)这个仁者见仁智者见智吧,我已经怕了翻车了所以还是Swap分区了的
3:/ 根分区 我给了40G(也叫根文件系统,就是所有分区和所有目录的启示挂载点类似于windows中的用来访问不同分区的C:、D:、E:等盘符)核心分区
4:/home:剩的都给它 用于储存各种运用数据和软件程序

2018-09-26 18:12:32 dllswhy 阅读数 3152
  • Linux系统编程

    Linux系统编程这门课的重点是:进程,线程,网络。 传统的学习方法是在讲这三个知识点之前,有很长篇幅的铺垫,这导致了很多初学者还没有学到“进程”就没了兴趣,半途而废了。 所以,本课程,进行了重新编排,突出“进程”“线程”“网络”,一开始就讲进程,在讲进程的过程中展开其他需要的知识点,而且是恰到好处的展开,不会冗长,不会“喧宾夺主”。

    819 人正在学习 去看看 程光淼

前言

当有一块新的硬盘添加至Linux后需要在Linux下进行一定的操作后才能正常时候,其大概流程为:
先对磁盘进行分区(或者不进行),再将分区设置为物理卷,将设置好的物理卷添加到现有某一卷组下或创建一个新卷组,再将卷组内的多余空间分配至原有的逻辑卷内或者建立新的逻辑卷。如果是分配到新的逻辑卷,需要重新分配文件系统的大小;如果建立新的物理卷,则需要格式化后,再挂载到某一目录下进行使用。最后将挂载信息写入/etc/fstab,每次启动后自动挂载硬盘。

第一步:对新磁盘进行分区

添加磁盘后,使用fdisk -l 命令查看新i磁盘名称,如新磁盘名字为sdb,使用fdisk命令(fdisk /dev/sbd)开始对sdb磁盘进行分区


123

输入n开始建立新分区,开始选择p(主分区)开始进行分区,选择主分区编号1,柱面使用默认1号柱面开始,分区大小为4G(输入+4G),完成1号主分区。


在这里插入图片描述

之后完成 2 3号分区的建立,四号分区使用e扩展分区进行分区,将剩下的空间全部分入扩展分区。在扩展分区内部再建立两个新的分区。


在这里插入图片描述

最后使用p命令检查分区情况,如果某一分区有错误,使用d命令删除有问题的分区,再重新分区。没有问题使用w命令写入分区情况,完成分区,可以通过fdisk -l 命令查看分区情况。

第二步:建立新的逻辑卷

在这里插入图片描述
如一块50G的新硬盘,分为20G的一个区(sdb1)和一个30G的区(sdb2),开始建立新的逻辑卷

首先将分区变为物理卷,使用pvcreate /dev/sdb1命令,将sdb1分区变为物理卷,然后使用vgcreate命令新建卷组,格式为vgcreate 卷组名 加入卷组的物理卷地址(vgcreate VolGroup01 /dev/sdb1),最后使用lvcreate命令建立逻辑卷。


其中:-n为逻辑卷名,-L为新卷大小,最后为所属的卷组名,此为建立一个名字叫why的20G大的逻辑卷

第三步:将新卷组挂载到某一目录下

首先将新卷格式化,输入mkfs.ext4 /dev/VolGroup01/why,将刚才建立的卷格式化成.ext4文件格式。之后使用mount /dev/VolGroup01/why /why将新卷挂载到/why目录下,可以使用df -h命令查看卷的挂载情况。此时新的卷已经可以使用了。


在这里插入图片描述

可以看到新卷why已经成功挂载到/why目录下了

第四步:将剩余的空间添加进卷内

先将sdb2按照之前的步骤建立为物理卷,使用vgextend VolGroup01 /dev/sdb2将sdb2添加到卷组中,使用lvextend命令将卷组内的空间分配到卷组why中。这里使用-l参数,后面的数字为增加的扇区个数。最后使用resize2fs命令重新划分文件系统,完成卷内空间的增加。


在这里插入图片描述

删除卷

使用lvremove、vgremove、pvremove移除逻辑卷、卷组、物理卷,fdisk工具删除分区,删除时要使用w记录。

第五步:修改/etc/fstab文件

使用vi打开/etc/fstab,将挂载信息写入文件内,第一列为挂载设备位置,第二列挂载点,第三列文件类型,第四列默认,第五第六列一般都为0。完成后使用mount -a重新挂载后,重启后就会自动挂载。
在这里插入图片描述

其他:设置swap空间

可以使用mkswap命令将某一设备作为交换空间初始化,然后使用swapon命令激活交换空间,可以通过查看/proc/swap文件来查看交换空间。swapoff停用交换空间。
也可以创建一个空文件作为交换空间,例:
dd if=/dev/zero of=/tmp/swap bs=1024k count=256
解释为用 dd 命令建立一个大小为 256MB、充满零的文件。在 dd 命令行,指定输入文件为虚拟设备/dev/zero,输出文件为她的交换文件/tmp/swap,文件块大小为 1MB,传送大小为 256 块。

2018-03-01 17:55:40 alonepeople 阅读数 984
  • Linux系统编程

    Linux系统编程这门课的重点是:进程,线程,网络。 传统的学习方法是在讲这三个知识点之前,有很长篇幅的铺垫,这导致了很多初学者还没有学到“进程”就没了兴趣,半途而废了。 所以,本课程,进行了重新编排,突出“进程”“线程”“网络”,一开始就讲进程,在讲进程的过程中展开其他需要的知识点,而且是恰到好处的展开,不会冗长,不会“喧宾夺主”。

    819 人正在学习 去看看 程光淼

分区调整

说明:

服务器根分区磁盘空间不足,但是服务器总磁盘空间充足。解决方案为:将/home分区磁盘空间缩小500G,分配给根分区,实现如下:

调整步骤

1.       将home目录中的Tomcat应用停止,将挂载的共享盘暂时卸载

2.       查看机器现有的分区状况

3.       卸载服务器的home分区,并压缩我们的home分区大小

4.       这个时候我们重新装载我们的home目录,通过运行结果可以看到我们将home分区压缩到20G(根据实际情况进行修改,设置过小时会导致文件丢失。慎重!慎重!慎重!)

这样对home的压缩并重新装载就完成了,如下图

5.       释放空间

注意:38G为压缩的容量,需根据实际情况修改

6.       查看可用空间

7.       将压缩出来的磁盘空间添加到root

重新加载根分区

8.       查看机器现有的分区状况

9.       将停止的应用启动,将共享盘重新挂载到原目录

Linux 增加分区大小

阅读数 11161

没有更多推荐了,返回首页