LPIC201/202 あずき本 ch5 高度なストレージ管理 (3/3)

LPIC201勉強メモ資格勉強

出典: 

5.3 記憶装置へのアクセス

5.3.1 デバイスファイル

lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
|-sda1   8:1    0  200M  0 part /boot/efi
`-sda2   8:2    0 19.8G  0 part /
  • カーネル2.6.21以降はlibataが導入され、IDEデバイスもSCSIデバイスと同じ扱いに
modinfo libata
filename:       /lib/modules/3.10.0-1127.19.1.el7.x86_64/kernel/drivers/ata/libata.ko.xz
version:        3.00
license:        GPL
description:    Library module for ATA devices
author:         Jeff Garzik
...

IDEデバイス

  • /dev/hda

    • プライマリマスタ
  • /dev/hdb

    • プライマリスレーブ
  • /dev/hdc

    • セカンダリマスタ
  • /dev/hdd

    • セカンダリスレーブ

SCSI/SATA/USB/IEEE1394デバイス

  • /dev/sda
  • /dev/sdb
  • /dev/sdc
  • /dev/sdd

1〜4番目のSCSI/SATA/USB/IEEE1394デバイス

ほかの

  • /dev/sr0
  • /dev/sr1

    • 1,2番目のSCSI/SATA/USB CD/DVDドライブ
  • /dev/st0
  • /dev/st1

    • 1.2番目のSCSIテープドライブ

5.3.2 ハードディスクの管理

種類

  • 種類

    • IDE(ATA: Advanced Technology Attachment)
    • STA(SERIAL ATA)
    • SCSI
    • SAS(Serial Attached SCSI)
    • USB
    • IEEE1384
  • LinuxではIDE以外は全部SCSI扱い
  • IDEもカーネル2.6.21以降はSCSIと同じ扱い(libata)
  • 要するに全部SCSI扱いになり、/dev/sd*になった

IDEの転送モード

  • PIO: Programmed I/O

    • CPUがハードディスクに直接命令
    • その間、CPUは他の仕事をできないのが欠点
  • DMA: Direct Memory Access

    • CPUにかわって専用のコントローラチップがデータ転送を管理
    • 現差製の主流
  • Ultra DMA

    • 従来のDMAの拡張。はやい
    • ハードディスク、マザーボードのチップセット、BIOSの対応が必要

hdparm

IDEのハードディスクパラメータ確認・設定

hdparm
-bash: hdparm: command not found

ないので入れる

yum provides hdparm
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: d2lzkl7pfhq30w.cloudfront.net
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
google-compute-engine                                            12/12
hdparm-9.43-5.el7.x86_64 : A utility for displaying and/or setting hard
                         : disk parameters
Repo        : base
sudo yum install -y hdparm
hdparm -V
hdparm v9.43

IDEじゃないのでうごかない

sudo hdparm /dev/sda
/dev/sda:
SG_IO: bad/missing sense data, sb[]:  70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 multcount     =  0 (off)
 readonly      =  0 (off)
 readahead     = 8192 (on)
 geometry      = 20480/64/32, sectors = 41943040, start = 0

sdparm

やはりないので入れる

sudo yum install -y sdparm
sdparm -V
version: 1.08 20130606 [svn: r215]
sudo sdparm /dev/sda
    /dev/sda: Google    PersistentDisk    1   
10 byte MODE SENSE cdb not supported, try again with '-6' option

-6オプションとは

    --six | -6            use 6 byte SCSI mode cdbs (def: 10 byte)
sudo sdparm -lv6 /dev/sda
>>> about to open device name: /dev/sda
    /dev/sda: Google    PersistentDisk    1   
    Direct access device specific parameters: WP=0  DPOFUA=0
>> Read write error recovery [rw] mode page [0x1] not found
Caching (SBC) [ca] [0x8] mode page [PS=0]:
  WCE         1  [cha: n, def:  1]  Write cache enable
  RCD         0  [cha: n, def:  0]  Read cache disable
>> Control [co] mode page [0xa] not found
>> Informational exceptions control [ie] mode page [0x1c] not found

5.3.3 SSDの管理

Trim

  • SSDではファイル削除時に当該ブロックに削除マークをつける
  • そのブロックを再利用するとき、ブロックのデータを削除してから書き込む

    • SSDを構成するNANDメモリは「上書き」ができないため
  • つまり、削除マークつきのブロックが増えてくるとパフォーマンスが低下していく
  • この問題点を解決するのがTRIM

    • ファイルを削除するときブロックのデータを削除する

fstrimコマンドでtrim有効化

SSDの特徴と運用

  • SSDには書き換え回数上限がある
  • 長持ちさせるには頻繁に書き込まないこと

    • SSD上にスワップ領域を作成しない
    • noatimeマウントオプションを使用し、iノードの更新時間を逐一更新しないようにする
    • /tmp等にはSSDではなくRAMディスクを利用する

Column: NVMe

NVMe: Non-Volatile Memory express

  • 不揮発性ストレージメディアを接続するための論理デバイスインタフェース規格
  • HDD用のAHCI: Advanced Host Controller Interfaceに代わる次世代規格

関連語句

  • M.2

    • 接続端子の規格
  • PCI Express

    • 接続の規格(バスの規格)
    • 転送速度とか全二重がどうのとかを決める
  • NVMe

    • PCI Express上で動作する通信プロトコル

5.3.4 iSCSI

iSCSI: internet SCSI

  • TCP/IP上でSCSIプロトコルを利用可能にする
  • 一般的なネットワーク機器を用いて安価にSAN: Storage Area Networkを構築できる

    • cf. ファイバチャネル等は専用のデバイス必要
  • クライアント-サーバアーキテクチャ

用語

  • イニシエータ

    • クラサバのクライアント
  • ターゲット

    • クラサバのサーバ
    • IET: iSCSI Enterprise Target, LIO Target等で構築する
  • HBA: Host Bus Adapter

    • ネットワークにおけるNICに相当
  • WWN: World Wide Name

    • イーサネットにおけるMACアドレスに相当

構築

インストール

ターゲット

sudo yum install -y targetcli
sudo systemctl start target.service

イニシエータ

sudo yum install -y iscsi-initiator-utils
sudo systemctl start iscsid.service

targetcliを引数なしで実行すると対話的に作業できる

sudo targetcli
targetcli shell version 2.1.51
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

バックストアを作る

iSCSIターゲットのバックエンドのストレージ

いつもどおりループバックデバイスを作っておく

sudo losetup /dev/loop0 ~/fs/loop0

targtecliの対話モードにて

/> ls /
o- / ....................................................................................... [...]
  o- backstores ............................................................................ [...]
  | o- block ................................................................ [Storage Objects: 0]
  | o- fileio ............................................................... [Storage Objects: 0]
  | o- pscsi ................................................................ [Storage Objects: 0]
  | o- ramdisk .............................................................. [Storage Objects: 0]
  o- iscsi .......................................................................... [Targets: 0]
  o- loopback ....................................................................... [Targets: 0]
/> cd /backstores/block
/backstores/block> create name=lpic dev=/dev/loop0
Created block storage object lpic using /dev/loop0.
/backstores/block> ls
o- block .................................................................... [Storage Objects: 1]
  o- lpic ........................................... [/dev/loop0 (2.0GiB) write-thru deactivated]
    o- alua ..................................................................... [ALUA Groups: 1]
      o- default_tg_pt_gp ......................................... [ALUA state: Active/optimized]

iSCSIターゲットを作る

IQN: iSCSI Qualified Name

イニシエータやターゲットにつける識別名

/backstores/block> cd /iscsi
/iscsi> create iqn.2020-12.com.example.centos7:target0
Created target iqn.2020-12.com.example.centos7:target0.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.

3260番ポートで待ってるらしい

バックストアとiSCSIターゲットの紐付け

/iscsi> ls
o- iscsi ............................................................................ [Targets: 1]
  o- iqn.2020-12.com.example.centos7:target0 ........................................... [TPGs: 1]
    o- tpg1 ............................................................... [no-gen-acls, no-auth]
      o- acls .......................................................................... [ACLs: 0]
      o- luns .......................................................................... [LUNs: 0]
      o- portals .................................................................... [Portals: 1]
        o- 0.0.0.0:3260 ..................................................................... [OK]
/iscsi> cd iqn.2020-12.com.example.centos7:target0
/iscsi/iqn.20...ntos7:target0> cd tpg1
/iscsi/iqn.20...:target0/tpg1> cd luns

LUN: Logical Unit Number. ストレージ内の論理ドライブ番号

/iscsi/iqn.20...et0/tpg1/luns> create /backstores/block/lpic
Created LUN 0.

ACL設定

イニシエータが接続できるようにする

イニシエータ名取得

cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:b59edf54993

これをターゲットのACLで許可してあげる

/iscsi/iqn.20...et0/tpg1/luns> cd ../acls
/iscsi/iqn.20...et0/tpg1/acls> create iqn.1994-05.com.redhat:b59edf54993
Created Node ACL for iqn.1994-05.com.redhat:b59edf54993
Created mapped LUN 0.

設定保存

/iscsi/iqn.20...et0/tpg1/acls> cd /
/> saveconfig
Configuration saved to /etc/target/saveconfig.json
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup/.
Configuration saved to /etc/target/saveconfig.json

iSCSIイニシエータからターゲットへ接続

とりあえず同一ホストで動かしてる

sudo iscsiadm -m discovery -t sendtargets -p 127.0.0.1
127.0.0.1:3260,1 iqn.2020-12.com.example.centos7:target0

ログイン

sudo iscsiadm -m node --login
Logging in to [iface: default, target: iqn.2020-12.com.example.centos7:target0, portal: 127.0.0.1,3260] (multiple)
Login to [iface: default, target: iqn.2020-12.com.example.centos7:target0, portal: 127.0.0.1,3260] successful.

ブロックデバイス確認

lsblk -S: SCSIデバイスのみ

lsblk -S
NAME HCTL       TYPE VENDOR   MODEL             REV TRAN
sda  0:0:1:0    disk Google   PersistentDisk   1    
sdb  1:0:0:0    disk LIO-ORG  lpic             4.0  iscsi

ログアウト

sudo iscsiadm -m node --logout
Logging out of session [sid: 1, target: iqn.2020-12.com.example.centos7:target0, portal: 127.0.0.1,3260]
Logout of [sid: 1, target: iqn.2020-12.com.example.centos7:target0, portal: 127.0.0.1,3260] successful.
lsblk -S
NAME HCTL       TYPE VENDOR   MODEL             REV TRAN
sda  0:0:1:0    disk Google   PersistentDisk   1    

/dev/sdbがいなくなる