====== SDカードを利用したストレージ領域の拡張 ====== [[mae3xx_ope:package_install:start]] での例の通り、本体のみでもある程度のパッケージの導入が可能です。\\ セルフ環境での開発もできますが、更新部分を本体RAMの tmpfs 領域に確保する必要がありますので、\\ パッケージの追加には、 * tmpfs の容量 * 更新分保存領域の容量 上記それぞれの制限を受けることになります。 * tmpfsに入りきらないような、大量のパッケージを導入したい * tmpfsによるメモリ消費が問題になるような、メモリ消費が大きなソフトウェアを動作させたい * 突然の電源断があっても、データが消えないような運用を行いたい (データベースなど) といった要望に応えるため、SDカード((USB Storage での拡張も検討中です))をファイルシステムの拡張領域として用いることができるようになっています。 === ※ 特徴/注意点 === * aufsでファイルシステム全体にかぶせる形でマウントするため、どの場所でもRead/Write可能です。 * SDカードを使用しない方法([[mae3xx_ope:boot_from_nand:start]])とは、設定内容は共通化されません。 \\ ===== 利用方法 ===== ==== 準備 ==== 拡張領域に使用するためのSDカードを準備します。 32GB SDHC規格までのSDカードが利用可能です。 市販されているSDカード(MLC(([[http://e-words.jp/w/MLC.html]]))のものがほとんどです)でも、試験的な運用には使用することができますが、\\ 開発や実運用に利用する場合は書替寿命の問題がありますので、SLC(([[http://e-words.jp/w/SLC.html]]))のSDカードで、ウェアレベリング機構に\\ 問題のないデバイスの利用をお勧めします。 ※ SLC の SD カードは、弊社でも販売しております。お問い合わせは [[http://www.centurysys.co.jp/company/contact.html#init_tab2|こちら]] からお願い致します。 \\ ==== 設定ファイルの作成 ==== MA-E3xx に、準備したSDカードを "拡張領域" として利用させるため、SDカードに設定ファイルを作成する必要があります。 Windows PCなどにSDカードを挿入し、"devel" というファイルを作成します。 {{:mae3xx_ope:extend_by_sd:exploper_00.png|"devel" ファイルを新規作成}} 設定はこれだけでOKです。\\ * SDカード 空き容量の80% * 2GiB のいずれかの小さい方の容量のイメージファイルを自動的に作成し、拡張領域として利用します。 * マニュアルで拡張領域の容量を設定したい * 2GiB以上の拡張領域を作成したい といった場合には、後述するマニュアル設定を行う必要があります。 ==== MA-E3xxの起動 ==== 準備したSDカードを、MA-E3xxのSDカードスロットに挿入し、NAND Flashをrootfsとするモードで起動します。\\ 自動的に拡張領域を確保して利用します。 {{:mae3xx_ope:extend_by_sd:putty_04.png|}} Begin: Running /scripts/init-bottom ... root-overlay: Setting up aufs on /root as root file system MMC Filesystem: vfat detected. 'devel' file found. create loopback image file (1531 [MiB]) ...[ 36.275969] random: nonblocking pool is initialized 1531+0 records in 1531+0 records out done. creating ext4 filesystem on image file...done. [ 123.746246] EXT4-fs (loop0): mounted filesystem with ordered data mode. Opts: (null) 下記の通り、1.5GiB程度 /rw, / に mount されていることがわかります。 root@plum:~# df Filesystem 1K-blocks Used Available Use% Mounted on rootfs 1510304 2484 1491436 1% / udev 503824 4 503820 1% /dev tmpfs 102644 236 102408 1% /run /dev/mtdblock8 55296 55296 0 100% /ro overlay-tmpfs 513212 22608 490604 5% /rw.tmpfs /dev/mmcblk0p1 1960960 1567756 393204 80% /rw.tmpfs/mnt/mmc <-- SDカード全体の80%利用中 /dev/loop0 1510304 2484 1491436 1% /rw <-- 拡張領域 /dev/loop1 1024 1024 0 100% /ro/lib/modules /dev/loop2 21504 21504 0 100% /ro/usr/lib/jvm overlay 1510304 2484 1491436 1% / <---- aufsにより / の上にかぶせてmount中 overlay.log 513212 22608 490604 5% /var/log overlay.kmod 1510304 2484 1491436 1% /lib/modules overlay.jvm 1510304 2484 1491436 1% /usr/lib/jvm ubi0:overlay 40292 116 38116 1% /rw.tmpfs/.overlay none 4 0 4 0% /sys/fs/cgroup none 5120 0 5120 0% /run/lock none 513212 0 513212 0% /run/shm none 102400 0 102400 0% /run/user root@plum:~# このモードで起動しているときは、『SDカードを利用中』を表すために、"POWER" LEDが 緑+赤 の点灯となります。 {{:mae3xx_ope:extend_by_sd:mae3xx_front_02.jpg|POWER LED 緑+赤(SDカード利用中)}} \\ ==== イメージファイルサイズのマニュアル設定 ==== "devel" ファイルに作成したいイメージファイルのサイズを KiB 単位で書いておくことで、\\ イメージファイルのサイズをマニュアルで設定することができます。 {{:mae3xx_ope:extend_by_sd:editor_00.png|1GiBのイメージファイルを作成}} サイズを指定する際は、数値だけでなく上の例の通りシェルスクリプトで計算可能な数式での指定も可能です。 この設定ファイルを保存したSDカードを使用した場合、下のとおり 1GiB の拡張領域を作成して利用します。 {{:mae3xx_ope:extend_by_sd:putty_05.png|1GiBの拡張領域を作成}} この方法では、FATファイルシステムのファイルサイズ上限 4GiB までの拡張領域を利用することができます。 ==== 4GiBを超えるサイズの拡張領域を利用する ==== SDカードにイメージファイルを作成し、ループバックマウントして利用する方式をとっている関係上、\\ 前述の通りイメージファイルのサイズはベースとなるSDカードのファイルシステムの制限を受けることになります。 4GiB以上の拡張領域を利用する場合、SDカードを **ext4** ファイルシステムでフォーマットする必要があります。 作業は MA-E3xx で可能です。手順は下記のとおりとなります。 * SDカードをMA-E3xxに挿入する。 * fdiskコマンドで、パーティションのタイプを 83(Linux) に変更する。 root@plum:~# fdisk /dev/mmcblk0 Command (m for help): p Disk /dev/mmcblk0: 7969 MB, 7969177600 bytes 221 heads, 20 sectors/track, 3521 cylinders, total 15564800 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 identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/mmcblk0p1 8192 15564799 7778304 b W95 FAT32 Command (m for help): t Selected partition 1 Hex code (type L to list codes): L 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris 1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT- 2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT- 4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx 5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data 6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / . 7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility 8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt 9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b 11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor 12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor 14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary 16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS 17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto 1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep 1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT 1e Hidden W95 FAT1 80 Old Minix Hex code (type L to list codes): 83 Changed system type of partition 1 to 83 (Linux) Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. Syncing disks. root@plum:~# * SDカードを **ext4** ファイルシステムでフォーマットする。((ext4 lazy init オプションを無効にする必要があります。bootloaderで認識されないケースがあります。)) root@plum:~# mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0 /dev/mmcblk0p1 mke2fs 1.42.8 (20-Jun-2013) Discarding device blocks: done Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 486720 inodes, 1944576 blocks 0 blocks (0.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1992294400 60 block groups 32768 blocks per group, 32768 fragments per group 8112 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done root@plum:~# * SDカードをマウントする。 root@plum:~# mount /dev/mmcblk0p1 /mnt/sd root@plum:~# df Filesystem 1K-blocks Used Available Use% Mounted on rootfs 513212 120 513092 1% / udev 503824 8 503816 1% /dev tmpfs 102644 244 102400 1% /run /dev/mtdblock8 55296 55296 0 100% /ro overlay-tmpfs 513212 22760 490452 5% /rw.tmpfs overlay-persist 513212 120 513092 1% /rw /dev/loop0 1024 1024 0 100% /ro/lib/modules /dev/loop1 21504 21504 0 100% /ro/usr/lib/jvm overlay 513212 120 513092 1% / overlay.log 513212 22760 490452 5% /var/log overlay.kmod 513212 120 513092 1% /lib/modules overlay.jvm 513212 120 513092 1% /usr/lib/jvm ubi0:overlay 40292 120 38112 1% /rw.tmpfs/.overlay none 4 0 4 0% /sys/fs/cgroup none 5120 0 5120 0% /run/lock none 513212 0 513212 0% /run/shm none 102400 0 102400 0% /run/user /dev/mmcblk0p1 7525000 17088 7491528 1% /mnt/sd <---- * "devel" ファイルを作成し、作成したい拡張領域のサイズを設定する。 4GiB の拡張領域を作成する例です。 root@plum:~# echo "4*1024*1024" > /mnt/sd/devel root@plum:~# cat /mnt/sd/devel 4*1024*1024 * 再起動を行う。 root@plum:~# reboot root@plum:~# Broadcast message from root@plum (/dev/pts/0) at 16:11 ... The system is going down for reboot NOW! 再起動後の状態は下記のようになります。 {{:mae3xx_ope:extend_by_sd:putty_06.png|4GiB 拡張領域作成中}} 4GiBの拡張領域が作成されていることがわかります。