linux如何无损调整分区大小
<p>情况:</p>
<ol>
<li>
home:500G</li>
<li>
root:50G</li>
<li>
root分区不够用</li>
</ol>
<p>
思路:把home分区的空间划一部分到root分区</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_930414">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash comments"># 设置home分区大小为200G,释放300G空间</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">$ lvreduce -L 200G </code><code class="bash plain">/dev/centos/home</code>
</div>
<div class="line number3 index2 alt2">
</div>
<div class="line number4 index3 alt1">
<code class="bash comments"># 将空闲空间扩展到root分区</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash plain">$ lvextend -l +100%FREE </code><code class="bash plain">/dev/centos/root</code>
</div>
<div class="line number6 index5 alt1">
</div>
<div class="line number7 index6 alt2">
<code class="bash comments"># 使用XFS文件系统自带的命令集增加分区空间</code>
</div>
<div class="line number8 index7 alt1">
<code class="bash plain">$ xfs_growfs </code><code class="bash plain">/dev/mapper/centos-root</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
实例</p>
<p>
<strong>situation</strong></p>
<p>
挂载在根目录的分区 /dev/mapper/centos-root 爆满,占用100%</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_745019">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">$ </code><code class="bash functions">df</code> <code class="bash plain">-h</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">Filesystem Size Used Avail Use% Mounted on</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">/dev/mapper/centos-root</code> <code class="bash plain">50G 50G 19M 100% /</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">devtmpfs 32G 0 32G 0% </code><code class="bash plain">/dev</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash plain">tmpfs 32G 0 32G 0% </code><code class="bash plain">/dev/shm</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain">tmpfs 32G 2.5G 29G 8% </code><code class="bash plain">/run</code>
</div>
<div class="line number7 index6 alt2">
<code class="bash plain">tmpfs 32G 0 32G 0% </code><code class="bash plain">/sys/fs/cgroup</code>
</div>
<div class="line number8 index7 alt1">
<code class="bash plain">/dev/mapper/centos-home</code> <code class="bash plain">476G 33M 476G 1% </code><code class="bash plain">/home</code>
</div>
<div class="line number9 index8 alt2">
<code class="bash plain">/dev/sda1</code> <code class="bash plain">497M 238M 259M 48% </code><code class="bash plain">/boot</code>
</div>
<div class="line number10 index9 alt1">
<code class="bash plain">tmpfs 6.3G 0 6.3G 0% </code><code class="bash plain">/run/user/0</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>analyze</strong></p>
<p>
挂载在根目录的分区空间太小,只有50G,而服务器 home 目录为非常用目录,挂在了近500G的空间。</p>
<p>
思路:从 centos-home 分区划出300G空间到 centos-root 分区。</p>
<p>
<strong>operation</strong></p>
<p>
1.查看各分区信息</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_58205">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
<div class="line number21 index20 alt2">
21</div>
<div class="line number22 index21 alt1">
22</div>
<div class="line number23 index22 alt2">
23</div>
<div class="line number24 index23 alt1">
24</div>
<div class="line number25 index24 alt2">
25</div>
<div class="line number26 index25 alt1">
26</div>
<div class="line number27 index26 alt2">
27</div>
<div class="line number28 index27 alt1">
28</div>
<div class="line number29 index28 alt2">
29</div>
<div class="line number30 index29 alt1">
30</div>
<div class="line number31 index30 alt2">
31</div>
<div class="line number32 index31 alt1">
32</div>
<div class="line number33 index32 alt2">
33</div>
<div class="line number34 index33 alt1">
34</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">$ lvdisplay</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">--- Logical volume ---</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">LV Path </code><code class="bash plain">/dev/centos/home</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">LV Name home</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash plain">VG Name centos</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain">LV UUID 1fAt1E-bQsa-1HXR-MCE2-5VZ1-xzBz-iI1SLv</code>
</div>
<div class="line number7 index6 alt2">
<code class="bash plain">LV Write Access </code><code class="bash functions">read</code><code class="bash plain">/write</code>
</div>
<div class="line number8 index7 alt1">
<code class="bash plain">LV Creation host, </code><code class="bash functions">time</code> <code class="bash plain">localhost, 2016-10-26 17:23:47 +0800</code>
</div>
<div class="line number9 index8 alt2">
<code class="bash plain">LV Status available</code>
</div>
<div class="line number10 index9 alt1">
<code class="bash comments"># open 0</code>
</div>
<div class="line number11 index10 alt2">
<code class="bash plain">LV Size 475.70 GiB</code>
</div>
<div class="line number12 index11 alt1">
<code class="bash plain">Current LE 121778</code>
</div>
<div class="line number13 index12 alt2">
<code class="bash plain">Segments 1</code>
</div>
<div class="line number14 index13 alt1">
<code class="bash plain">Allocation inherit</code>
</div>
<div class="line number15 index14 alt2">
<code class="bash plain">Read ahead sectors auto</code>
</div>
<div class="line number16 index15 alt1">
<code class="bash plain">- currently </code><code class="bash functions">set</code> <code class="bash plain">to 256</code>
</div>
<div class="line number17 index16 alt2">
<code class="bash plain">Block device 253:2</code>
</div>
<div class="line number18 index17 alt1">
</div>
<div class="line number19 index18 alt2">
<code class="bash plain">--- Logical volume ---</code>
</div>
<div class="line number20 index19 alt1">
<code class="bash plain">LV Path </code><code class="bash plain">/dev/centos/root</code>
</div>
<div class="line number21 index20 alt2">
<code class="bash plain">LV Name root</code>
</div>
<div class="line number22 index21 alt1">
<code class="bash plain">VG Name centos</code>
</div>
<div class="line number23 index22 alt2">
<code class="bash plain">LV UUID lD64zY-yc3Z-SZaB-dAjK-03YM-2gM8-pfj4oo</code>
</div>
<div class="line number24 index23 alt1">
<code class="bash plain">LV Write Access </code><code class="bash functions">read</code><code class="bash plain">/write</code>
</div>
<div class="line number25 index24 alt2">
<code class="bash plain">LV Creation host, </code><code class="bash functions">time</code> <code class="bash plain">localhost, 2016-10-26 17:23:48 +0800</code>
</div>
<div class="line number26 index25 alt1">
<code class="bash plain">LV Status available</code>
</div>
<div class="line number27 index26 alt2">
<code class="bash comments"># open 1</code>
</div>
<div class="line number28 index27 alt1">
<code class="bash plain">LV Size 50.00 GiB</code>
</div>
<div class="line number29 index28 alt2">
<code class="bash plain">Current LE 12800</code>
</div>
<div class="line number30 index29 alt1">
<code class="bash plain">Segments 1</code>
</div>
<div class="line number31 index30 alt2">
<code class="bash plain">Allocation inherit</code>
</div>
<div class="line number32 index31 alt1">
<code class="bash plain">Read ahead sectors auto</code>
</div>
<div class="line number33 index32 alt2">
<code class="bash plain">- currently </code><code class="bash functions">set</code> <code class="bash plain">to 256</code>
</div>
<div class="line number34 index33 alt1">
<code class="bash plain">Block device 253:0</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
2.减少/home分区空间</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_296731">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash comments"># 释放 /dev/centos/home 分区 300G 的空间</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash comments"># 命令设置 /dev/centos/home 分区 200G空间</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">$ lvreduce -L 200G </code><code class="bash plain">/dev/centos/home</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">WARNING: Reducing active logical volume to 200.00 GiB.</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash spaces"> </code><code class="bash plain">THIS MAY DESTROY YOUR DATA (filesystem etc.)</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain">Do you really want to reduce centos</code><code class="bash plain">/home</code><code class="bash plain">? : y</code>
</div>
<div class="line number7 index6 alt2">
<code class="bash spaces"> </code><code class="bash plain">Size of logical volume centos</code><code class="bash plain">/home</code> <code class="bash plain">changed from 475.70 GiB (121778 extents) to 200.00 GiB (51200 extents).</code>
</div>
<div class="line number8 index7 alt1">
<code class="bash spaces"> </code><code class="bash plain">Logical volume centos</code><code class="bash plain">/home</code> <code class="bash plain">successfully resized.</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
3.增加/root分区空间</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_696916">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">$ lvextend -l +100%FREE </code><code class="bash plain">/dev/centos/root</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">Size of logical volume centos</code><code class="bash plain">/root</code> <code class="bash plain">changed from 50.06 GiB (12816 extents) to 325.76 GiB (83394 extents).</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">Logical volume centos</code><code class="bash plain">/root</code> <code class="bash plain">successfully resized.</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
4.扩展XFS文件空间大小</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_103180">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">$ xfs_growfs </code><code class="bash plain">/dev/mapper/centos-root</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">meta-data=</code><code class="bash plain">/dev/mapper/centos-root</code> <code class="bash plain">isize=256 agcount=4, agsize=3276800 blks</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash spaces"> </code><code class="bash plain">= sectsz=512 attr=2, projid32bit=1</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash spaces"> </code><code class="bash plain">= crc=0 finobt=0 spinodes=0</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash plain">data = bsize=4096 blocks=13107200, imaxpct=25</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash spaces"> </code><code class="bash plain">= sunit=0 swidth=0 blks</code>
</div>
<div class="line number7 index6 alt2">
<code class="bash plain">naming =version 2 bsize=4096 ascii-ci=0 ftype=0</code>
</div>
<div class="line number8 index7 alt1">
<code class="bash plain">log =internal bsize=4096 blocks=6400, version=2</code>
</div>
<div class="line number9 index8 alt2">
<code class="bash spaces"> </code><code class="bash plain">= sectsz=512 sunit=0 blks, lazy-count=1</code>
</div>
<div class="line number10 index9 alt1">
<code class="bash plain">realtime =none extsz=4096 blocks=0, rtextents=0</code>
</div>
<div class="line number11 index10 alt2">
<code class="bash plain">data blocks changed from 13107200 to 85395456</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
完成</p>
<p>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。</p> 看到楼主分享的这个教程,非常详细实用!给新手玩家补充几点注意事项:
1. 操作前务必备份重要数据!
虽然LVM调整空间相对安全,但任何分区操作都有风险,特别是生产环境一定要先备份。
2. XFS文件系统只能扩展,不能缩小!
楼主的例子正好是XFS文件系统,如果home分区用的是XFS,其实是不能直接缩小的。还好这里用的是LVM逻辑卷+LVM层面操作。如果是非LVM的XFS分区想缩小,理论上是不可能的,只能备份后重建。
3. 关于lvreduce的-r参数
现在新版LVM支持 lvreduce -r -L 200G /dev/centos/home
加了这个参数会自动帮你调整文件系统大小,更安全一些。
4. 确认home分区确实不需要那么大空间
操作前最好用 du -sh /home 确认实际使用量,避免缩太小导致数据丢失。
另外如果是ext4文件系统的话,操作流程会稍有不同,resize2fs要在分区调整后执行。
总体来说LVM真的很方便,感谢楼主的分享!good
頁:
[1]