Linux CentOS 7 routeを変更するコマンド

今回は、CentOSでルーティングを変更したいって時に役に立つコマンドと設定方法をご紹介致します。

 ネットワーク172.16.0.0 宛を gw 172.16.0.1 へ向けるルーティング
route add -net 172.16.0.0 gw 172.16.0.1 netmask 255.255.0.0 eth0

 ホスト172.16.0.10 宛をgw 172.16.0.1 へ向けるルーティング
route add -host 172.16.0.10 gw 172.16.0.1 eth0

 gw 172.16.0.1 へ向いてるネットワーク172.16.0.0 のルーティングを削除
route delete -net 172.16.0.0 gw 172.16.0.1 netmask 255.255.0.0 eth0

 gw 172.16.0.1 へ向いてるホスト172.16.0.10 のルーティングを削除
route delete -host 172.16.0.10 gw 172.16.0.1 eth0

上記のコマンドはルーティングを変更できるが一時的でありLinuxを再起動すると設定ファイルのルーティング情報が読み込まれるので、permanent設定をするには以下のファイルに設定を行う。
 vi /etc/sysconfig/network-scripts/route-インターフェイス名

[設定例]/etc/sysconfig/network-scripts/route-インターフェイス名

 

ADDRESS0=172.16.0.0
NETMASK0=255.255.0.0
GATEWAY0=172.16.0.1
ADDRESS1=172.17.0.0
NETMASK1=255.255.0.0
GATEWAY1=172.17.0.1

 

設定が完了したらnetwork.serviceを再起動
systemctl restart network

 

その他、ip route コマンドでもルーティングを変更することができる。

 ネットワーク172.16.0.0 宛を gw 172.16.0.1 へ向けるルーティング
ip route add 172.16.0.0/16 via 172.16.0.1 dev eth0

 ホスト172.16.0.10 宛をgw 172.16.0.1 へ向けるルーティング
ip route add 172.16.0.10 via 172.16.0.1 dev eth0

 ネットワーク172.16.0.0 のルーティングを削除
ip route del 172.16.0.0/16

 ホスト172.16.0.10 のルーティングを削除
ip route del 172.16.0.10

/etc/sysconfig/network-scripts/route-インターフェイス名の設定ファイルをviで開いて編集しなくても nmcliコマンドを使えばpermanentの設定ができる。
nmcli con eth0 +ipv4.routes “172.18.0.0/16 172.18.0.1”

cat /etc/sysconfig/network-scripts/route-eth0

 

ADDRESS0=172.16.0.0
NETMASK0=255.255.0.0
GATEWAY0=172.16.0.1
ADDRESS1=172.17.0.0
NETMASK1=255.255.0.0
GATEWAY1=172.17.0.1
ADDRESS3=172.18.0.0
NETMASK3=255.255.0.0
GATEWAY3=172.18.0.1

 

ADDRESS3、NETMASK3、GATEWAY3が新たに追加される。

 

Linux centOS 7 に外部diskを追加する設定方法

今回は、Linux centOS 7 に外部diskを追加する方法をご紹介致します。

[増設内容]

増設ボリューム /vdb
パーティション番号 1
増設パーティション名 /vdb1
増設したボリュームにマウントするフォルダー /data01

 

[設定方法]

1. 事前確認

ls -l /dev

 

brw-rw—-. 1 root disk 253, 0 Jul 11 03:27 vda
brw-rw—-. 1 root disk 253, 1 Jul 11 03:27 vda1
brw-rw—-. 1 root disk 253, 16 Jul 11 05:36 vdb

 

この時点では /vdb 配下に /vdb1 が無いが fdisk をすると vdb1 ができる

 

2. マウントされていないdiskを確認

fisk でまだマウントされていないdiskを確認する。
今回は110GBのディスクを増設で既に接続をしているので、/dev/vdb となる。

fdisk -l(エル)

 

Disk /dev/vda: 32.2GB 32212254720 bytes, 62914560 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:dos
Disk identifier: 0x000b14a4

Device Boot start end Blocks ID System
/dev/vda1 * 2048 62910539 31454246 83 Linux

Disk /dev/vdb: 107.4GB 107374182400 bytes, 209715200 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

 

 

3. fdisk /dev/vdb で “m” を選択しメニューを表示

 

Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
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
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition’s system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

Command (m for help):

 

 

4. “p” のプリントを選択し表示をさせる

 

Command (m for help): p

Disk /dev/vdb1: 107.4 GB, 107373133824 bytes, 209713152 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: dos
Disk identifier: 0x000c4793

Device Boot Start End Blocks Id System

 

 

5. “n” を選択して “p” の primary から ”1″ を選択をする。

 

Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
Partition number(1-4, default 1): 1
First sector(2048-209713151,default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209713151,default 209713151):
Using default value 209713151
Partition 1 of type Linux and of size 100GiB is set

 

 

6. “w” で書き込む

 

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 22: Invalid argument.
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.

 

 

7. 確認作業

fdisk で /dev/vdb1 が作成されたことを確認する。

fdisk -l(エル)

 

Disk /dev/vda: 32.2GB 32212254720 bytes, 62914560 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:dos
Disk identifier: 0x000b14a4

Device Boot start end Blocks ID System
/dev/vda1 * 2048 62910539 31454246 83 Linux

Disk /dev/vdb: 107.4GB 107374182400 bytes, 209715200 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: dos
Disk identifier: 0x5e1483cc

Device Boot start end Blocks ID System
/dev/vdb1 2048 209715199 104856576 83 Linux

 

 

8. xfsファイルシステムで初期化

mkfs -t xfs /dev/vdb1
以下が表示されることを確認する。

 

meta-data=/dev/vdb1 isize=512 agcount=4 agsize=6553536 blks
     = sectsz=512 attr=2, projid32bit=1
     = crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=26214144, imaxpct=25
     = sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=12799, version=2
    = sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

 

 

9. /dev/vdb1 が増設されたことを確認

ls -l /dev

 

brw-rw—-. 1 root disk 253, 0 Jul 11 03:27 vda
brw-rw—-. 1 root disk 253, 1 Jul 11 03:27 vda1
brw-rw—-. 1 root disk 253, 16 Jul 11 05:36 vdb
brw-rw—-. 1 root disk 253, 17 Jul 11 05:48 vdb1

 

 

10. /(root) 配下に /data01 のフォルダーを作成する。

mkdir /data01

 

11. マウント

mount /dev/vdb1 /data01

 

Filesystem  1K-blocks    Used   Available   Use%   Mounted on
/dev/vda1   31444004   966956  30477048   4%     /
devtmpfs   1921420    0    1921420   0%    /dev
tmpfs    1941020    0    1921420    0%    /dev/shm
tmpfs    1941020   16704   1924316    1%    /run
tmpfs    1941020    0    1921420    0%    /sys/fs/cgroup
tmpfs    388204     0    388204    0%    /run/user/0
/dev/vdb1  104805380  32944  104772436    1%    /data01

 

 

12. /etc/fstab に追加したディスクを設定

blkid
→ UUID を確認する。

 

/dev/vdb1:UUID=”d9c86367-5e26-4f76-9644-e8316b1ffg7a” TYPE=”xfs”

 

 

UUIDが分かったので/etc/fstab に設定を行う。

 

UUID=d9c86367-5e26-4f76-9644-e8316b1ffg7a  /data01  xfs  defaults 0 0

 

これでディスクの増設が完了です!

シェルスクリプトを使ってファイルを別のフォルダーにコピーする

コピーしたいファイルがリストアップされているファイルを読み込み、別のフォルダーに同じ階層毎でコピーするシェルスクリプトです。

コピー元のパスを読み込み、コピー先にディレクトリーが無ければディレクトリーも作成してファイルをコピーします。

Windows上でlinuxコマンドやシェルスクリプトを実行できるbusyboxというツールを使えばWindows上でも、このシェルスクリプトを実行することができてWindowsファイルのコピーが簡単に行うことができます。

busyboxのダウンロード方法やインストール方法は本サイトでもご紹介しておりますのでぜひご覧ください(^^♪

簡単で便利なシェルスクリプトです。ちょっとした作業の効率アップにお使い下さい。

シェルスクリプトを使ってファイルを別のフォルダーにコピーする

上の図にある構成にもとづいて作成したシェルスクリプトがこれ↓になります。

コピー元のパスとファイル名を記述したリストファイル「list.txt」を読み込んで、同じディレクトリー階層でコピー先のディレクトリーにコピーをするシェルスクリプトです。

while read line
do
 dirn=$(dirname ${line})
 filen=$(basename ${line})
 Chgdirn=${dirn/temp/temp2}
 # echo $Chgdirn
 if [ -d $Chgdirn ]; then
  echo “ディレクトリーが既に存在しています”
 else
  mkdir -p $Chgdirn
 fi
 echo “*** $dirn/$filenをコピー開始 ***”
 cp $dirn/$filen $Chgdirn
 echo “*** $dirn/$filenをコピー終了 ***”
done < ./list.txt

 

シェルスクリプトの説明

dirname ディレクトリ名とファイル名を含むパス名からファイル名の部分だけを除き、ディレクトリ部分だけを取得するコマンドを使って、「list.txt」から読み込んだ1行を処理します。
basename ディレクトリ名とファイル名を含むパス名から、ディレクトリ部分を除き、ファイル名だけを取得するコマンドを使って、「list.txt」から読み込んだ1行を処理します。
Chgdirn 読み込んだパスのディストリビューションtempをtemp2に変更しChgdirnに格納します。
if [ -d $Chgdirn ] -d オプションでディレクトリーの有無を確認。また、-fオプションにするとファイルの有無を確認することができます。-eオプションにするとファイルやディレクトリーの有無を確認することができます。
mkdir -p  -pオプションを指定することで親ディレクトリーが存在しなくてもサブディレクトリーまで作成してくれます。
list.txt コピー元のファイルのパスとファイル名がリストされています。

※筆者の環境で問題なく動作することは確認しておりますが、環境によっては上手く動作しないことも考えられますので自己責任で実行するようお願い致します。